mesa: Fold _mesa_uniform_merge_location_offset into its only caller
Also delete the comment before that function. Everything in that comment was either stale, wrong, or captured elsewhere. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
1c759e32d8
commit
89d92fc00e
|
@ -993,9 +993,7 @@ _mesa_uniform_matrix(struct gl_context *ctx, struct gl_shader_program *shProg,
|
|||
*
|
||||
* Returns the uniform index into UniformStorage (also the
|
||||
* glGetActiveUniformsiv uniform index), and stores the referenced
|
||||
* array offset in *offset, or GL_INVALID_INDEX (-1). Those two
|
||||
* return values can be encoded into a uniform location for
|
||||
* glUniform* using _mesa_uniform_merge_location_offset(index, offset).
|
||||
* array offset in *offset, or GL_INVALID_INDEX (-1).
|
||||
*/
|
||||
extern "C" unsigned
|
||||
_mesa_get_uniform_location(struct gl_context *ctx,
|
||||
|
|
|
@ -932,7 +932,8 @@ _mesa_GetUniformLocation(GLuint programObj, const GLcharARB *name)
|
|||
shProg->UniformStorage[index].atomic_buffer_index != -1)
|
||||
return -1;
|
||||
|
||||
return _mesa_uniform_merge_location_offset(shProg, index, offset);
|
||||
/* location in remap table + array element offset */
|
||||
return shProg->UniformStorage[index].remap_location + offset;
|
||||
}
|
||||
|
||||
GLuint GLAPIENTRY
|
||||
|
|
|
@ -323,50 +323,6 @@ struct gl_builtin_uniform_desc {
|
|||
unsigned int num_elements;
|
||||
};
|
||||
|
||||
/**
|
||||
* \name GLSL uniform arrays and structs require special handling.
|
||||
*
|
||||
* The GL_ARB_shader_objects spec says that if you use
|
||||
* glGetUniformLocation to get the location of an array, you CANNOT
|
||||
* access other elements of the array by adding an offset to the
|
||||
* returned location. For example, you must call
|
||||
* glGetUniformLocation("foo[16]") if you want to set the 16th element
|
||||
* of the array with glUniform().
|
||||
*
|
||||
* HOWEVER, some other OpenGL drivers allow accessing array elements
|
||||
* by adding an offset to the returned array location. And some apps
|
||||
* seem to depend on that behaviour.
|
||||
*
|
||||
* Mesa's gl_uniform_list doesn't directly support this since each
|
||||
* entry in the list describes one uniform variable, not one uniform
|
||||
* element. We could insert dummy entries in the list for each array
|
||||
* element after [0] but that causes complications elsewhere.
|
||||
*
|
||||
* We solve this problem by creating multiple entries for uniform arrays
|
||||
* in the UniformRemapTable so that their elements get sequential locations.
|
||||
*
|
||||
* Utility functions below offer functionality to split UniformRemapTable
|
||||
* location in to location of the uniform in UniformStorage + offset to the
|
||||
* array element (0 if not an array) and also merge it back again as the
|
||||
* UniformRemapTable location.
|
||||
*
|
||||
*/
|
||||
/*@{*/
|
||||
/**
|
||||
* Combine the uniform's storage index and the array index
|
||||
*/
|
||||
static inline GLint
|
||||
_mesa_uniform_merge_location_offset(const struct gl_shader_program *prog,
|
||||
unsigned storage_index,
|
||||
unsigned uniform_array_index)
|
||||
{
|
||||
/* location in remap table + array element offset */
|
||||
return prog->UniformStorage[storage_index].remap_location +
|
||||
uniform_array_index;
|
||||
}
|
||||
/*@}*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue