[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