Written by Michael Larabel inRadeon on 9 August 2016 at 01:42 PM EDT.Add A Comment
The RadeonSI Gallium3D driver has picked up support for two more OpenGL ARB extensions outside of what's mandated by OpenGL 4.5.
The ARB_indirect_parameters and ARB_shader_draw_parameters extensions are now supported by the RadeonSI Gallium3D driver. These extensions aren't part of a released OpenGL version right now but are now wired in for RadeonSI. The Nouveau NVC0 driver already supported both of these extensions while the Intel driver also supported ARB_shader_draw_parameters.
ARB_indirect_parameters introduces the concept of a parameter buffer to store parameters for certain indirect drawing commands. ARB_shader_draw_parameters adds new built-in variables to GLSL: gl_BaseVertexARB, gl_BaseInstanceARB, and gl_DrawID. They "contain the values passed in the baseVertex and baseInstance parameters, respectively. Shaders provided by the application may use these variables to offset gl_VertexID or gl_InstanceID if desired, or use them for any other purpose."
In addition to enabling these extensions, the ARB_multi_draw_indirect extension is now properly accelerated for RadeonSI.
The commit enabling these new feature capabilities is straight-forward. However, the work does depend upon "sufficiently uptodate" firmware blobs. The functionality also only works in conjunction with the AMDGPU kernel driver for newer GCN GPUs as the Radeon DRM driver doesn't offer a way to expose the firmware version numbers for checking compatibility with the necessary firmware images.