mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 04:10:09 +01:00
glsl: don't set uniform block as used when its not
The spec requires unused uniform block to be set as active in the program resource list. To support this we tell opt dead code not to remove them. However we can mark them as unused internally and avoid unnecessarily state changes. This change is also required for the folowing clean-up patch. Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
parent
50dc4b77f6
commit
f0cb0fe1c0
2 changed files with 10 additions and 2 deletions
|
|
@ -1059,7 +1059,8 @@ private:
|
|||
this->uniforms[id].opaque[shader_type].index = ~0;
|
||||
this->uniforms[id].opaque[shader_type].active = false;
|
||||
|
||||
this->uniforms[id].active_shader_mask |= 1 << shader_type;
|
||||
if (current_var->data.used || base_type->is_subroutine())
|
||||
this->uniforms[id].active_shader_mask |= 1 << shader_type;
|
||||
|
||||
/* This assigns uniform indices to sampler and image uniforms. */
|
||||
handle_samplers(base_type, &this->uniforms[id], name);
|
||||
|
|
|
|||
|
|
@ -144,8 +144,15 @@ do_dead_code(exec_list *instructions, bool uniform_locations_assigned)
|
|||
*/
|
||||
if (entry->var->is_in_buffer_block()) {
|
||||
if (entry->var->get_interface_type_packing() !=
|
||||
GLSL_INTERFACE_PACKING_PACKED)
|
||||
GLSL_INTERFACE_PACKING_PACKED) {
|
||||
/* Set used to false so it doesn't get set as referenced by
|
||||
* the shader in the program resource list. This will also
|
||||
* help avoid the state being unnecessarily flushed for the
|
||||
* shader stage.
|
||||
*/
|
||||
entry->var->data.used = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (entry->var->type->is_subroutine())
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue