[Mesa-dev] [PATCH v5 00/70] ARB_shader_storage_buffer_object (mesa, i965)

Samuel Iglesias Gonsálvez siglesias at igalia.com
Fri Sep 25 01:16:26 PDT 2015



On 25/09/15 09:19, Ilia Mirkin wrote:
> On Fri, Sep 25, 2015 at 3:17 AM, Samuel Iglesias Gonsálvez
> <siglesias at igalia.com> wrote:
>> On 21/09/15 12:39, Iago Toral wrote:
>>> Hi Kristian,
>>>
>>> On Fri, 2015-09-18 at 16:56 -0700, Kristian Høgsberg wrote:
>>>> On Thu, Sep 10, 2015 at 03:35:16PM +0200, Iago Toral Quiroga wrote:
>>>>> Hi,
>>>>>
>>>>> this is the latest version of the ARB_shader_storage_buffer_object
>>>>> implementation. A good part of the frontend bits for this are already in
>>>>> master, but this adds some more missing pieces, specifically std430 and
>>>>> memory qualifiers. Additionally, this provides the i965 implementation.
>>>>
>>>> I've gone through all patches in the series and I replied to patches
>>>> where I had comments.  Overall, the series look good and with the
>>>> comments addressed, I'm ready to give my Reviewed-by for the series.
>>>> I want to take a closer look at the atomics lowering in patches 49+,
>>>> but I'm done for today.  Base on the quick look-through I did, I don't
>>>> expect to find any showstoppers there.
>>>
>>> great, thanks for reviewing this! We will send new versions of the
>>> patches for which you had comments or reply to your comments otherwise.
>>>
>>
>> I have pushed the series to master branch \o/
> 
> Great news! Can you give a very quick overview of what needs to be
> done to enable this on other drivers (specifically,
> mesa/state_tracker)? Just some GLSL IR stuff + buffer atoms, or is
> there more? Any interactions with counters (at that core level)?
> 

This is the list of changes we did in i965 driver and would be needed
for other drivers:

* Implement DriverFlags.NewShaderStorageBuffer and the related code to
create the SSBO buffer inside the driver.
* Set ARB_shader_storage_buffer_object related constant values to the
driver ones (if needed), such as:
   * ctx->Const.Program[MESA_SHADER_*].MaxShaderStorageBlocks
   * ctx->Const.MaxCombinedShaderStorageBlocks
   * ctx->Const.ShaderStorageBufferOffsetAlignment
   * ctx->Const.MaxShaderStorageBlockSize
   * ctx->Const.MaxShaderStorageBufferBindings
* If using GLSL IR, implement the following intrisics/ops:
   * ir_unop_get_buffer_size
   * __intrinsic_store_ssbo
   * __intrinsic_load_ssbo
   * __intrinsic_ssbo_atomic_*
* If using NIR, implement the following intrinsics:
   * nir_intrinsic_get_buffer_size
   * nir_intrinsic_store_ssbo{_indirect}
   * nir_intrinsic_load_ssbo{_indirect}
   * nir_intrinsic_ssbo_atomic_*
* Enable ARB_shader_storage_buffer_object extension in the driver.

AFAIK, there is nothing specific that we had to do with counters.

Sam


More information about the mesa-dev mailing list