st/mesa/glsl/i965: move ImageUnits and ImageAccess fields to gl_program

Having it here rather than in gl_linked_shader allows us to simplify
the code.

Also it is error prone to depend on the gl_linked_shader for programs
in current use because a failed linking attempt will free infomation
about the current program. In i965 we could be trying to recompile
a shader variant but may have lost some required fields.

We drop the memset on ImageUnits because gl_program is already
created using rzalloc().

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
Timothy Arceri
2016-11-04 20:02:21 +11:00
parent 3d2485f011
commit a1da57c19c
12 changed files with 50 additions and 67 deletions

View File

@@ -613,7 +613,7 @@ private:
this->next_image += MAX2(1, uniform->array_elements);
for (unsigned i = first; i < MIN2(next_image, MAX_IMAGE_UNIFORMS); i++)
prog->_LinkedShaders[shader_type]->ImageAccess[i] = access;
prog->_LinkedShaders[shader_type]->Program->sh.ImageAccess[i] = access;
}
}
@@ -1308,7 +1308,6 @@ link_assign_uniform_locations(struct gl_shader_program *prog,
* types cannot have initializers."
*/
memset(sh->SamplerUnits, 0, sizeof(sh->SamplerUnits));
memset(sh->ImageUnits, 0, sizeof(sh->ImageUnits));
link_update_uniform_buffer_variables(sh, i);