[Mesa-dev] [PATCH v2 22/82] glsl: Do not kill dead assignments to buffer variables or SSBO declarations.

Samuel Iglesias Gonsálvez siglesias at igalia.com
Wed Jun 17 22:20:39 PDT 2015



On 17/06/15 21:24, Jordan Justen wrote:
> On 2015-06-03 00:01:12, Iago Toral Quiroga wrote:
>> If we kill dead assignments we lose the buffer writes.
>>
>> Also, we never kill UBO declarations even if they are never referenced
>> by the shader, they are always considered active. Although the spec
>> does not seem say this specifically for SSBOs, it is probably implied
>> since SSBOs are pretty much the same as UBOs, only that you can write
>> to them.
>> ---
>>  src/glsl/opt_dead_code.cpp | 9 ++++++---
>>  1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/glsl/opt_dead_code.cpp b/src/glsl/opt_dead_code.cpp
>> index f45bf5d..1bb5f32 100644
>> --- a/src/glsl/opt_dead_code.cpp
>> +++ b/src/glsl/opt_dead_code.cpp
>> @@ -77,11 +77,13 @@ do_dead_code(exec_list *instructions, bool uniform_locations_assigned)
>>  
>>        if (entry->assign) {
>>          /* Remove a single dead assignment to the variable we found.
>> -         * Don't do so if it's a shader or function output, though.
>> +         * Don't do so if it's a shader or function output or a buffer
>> +         * variable though.
> 
> buffer => shader storage
> 
> Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
> 

OK, thanks.

Sam

>>           */
>>          if (entry->var->data.mode != ir_var_function_out &&
>>              entry->var->data.mode != ir_var_function_inout &&
>> -             entry->var->data.mode != ir_var_shader_out) {
>> +             entry->var->data.mode != ir_var_shader_out &&
>> +             entry->var->data.mode != ir_var_shader_storage) {
>>             entry->assign->remove();
>>             progress = true;
>>  
>> @@ -99,7 +101,8 @@ do_dead_code(exec_list *instructions, bool uniform_locations_assigned)
>>           * stage.  Also, once uniform locations have been assigned, the
>>           * declaration cannot be deleted.
>>           */
>> -         if (entry->var->data.mode == ir_var_uniform) {
>> +         if (entry->var->data.mode == ir_var_uniform ||
>> +             entry->var->data.mode == ir_var_shader_storage) {
>>              if (uniform_locations_assigned || entry->var->constant_value)
>>                 continue;
>>  
>> -- 
>> 1.9.1
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list