[Mesa-dev] [PATCH 2/2] i965: use L3 data cache for SSBOs

Lionel Landwerlin lionel.g.landwerlin at intel.com
Wed Oct 5 16:25:33 UTC 2016


On 05/10/16 17:15, Ilia Mirkin wrote:
> On Mon, Sep 26, 2016 at 10:31 AM, Lionel Landwerlin
> <llandwerlin at gmail.com> wrote:
>> Anv programs the hardware to use L3 data cache if we use either SSBOs or
>> images in the shaders, we can program i965 the same way.
>>
>> gl_shader_program has a bit of a confusing named field with
>> 'NumAtomicBuffers'. It doesn't tell how many buffers are accessed by the
>> shader in an atomic way but instead the number of atomic counters
>> manipulated by the shader.
> It's likely that at least some shaders use SSBO's without atomic
> operations. If you only need the data cache for atomics, it should be
> fairly easy to determine if any atomic ops are performed or not. (Same
> for images.)
>
> If you do need it for all SSBO's whether atomic or not, I'm not sure I
> understand the significance of the quoted paragraph.
Yes, I was confused by the way this was computed (going through the 
variables and then finding the buffers).
I think we want data cache regardless of atomic operations.

>
> [And in either case, it's the number of atomic buffers, not counters -
> you can have multiple counters in a single buffer.]
>
>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
>> Cc: Jason Ekstrand <jason at jlekstrand.net>
>> ---
>>   src/mesa/drivers/dri/i965/gen7_l3_state.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/gen7_l3_state.c b/src/mesa/drivers/dri/i965/gen7_l3_state.c
>> index 92e8788..fdaea81 100644
>> --- a/src/mesa/drivers/dri/i965/gen7_l3_state.c
>> +++ b/src/mesa/drivers/dri/i965/gen7_l3_state.c
>> @@ -55,7 +55,8 @@ get_pipeline_state_l3_weights(const struct brw_context *brw)
>>            prog ? prog->_LinkedShaders[stage_states[i]->stage] : NULL;
>>         const struct brw_stage_prog_data *prog_data = stage_states[i]->prog_data;
>>
>> -      needs_dc |= (prog && prog->NumAtomicBuffers) ||
>> +      needs_dc |= (prog && (prog->NumAtomicBuffers ||
>> +                            prog->NumShaderStorageBlocks)) ||
>>            (shader && shader->NumImages) ||
>>            (prog_data && prog_data->total_scratch);
>>         needs_slm |= prog_data && prog_data->total_shared;
>> --
>> 2.9.3
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev




More information about the mesa-dev mailing list