glsl: Document and enforce restriction on type values

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Ian Romanick 2016-06-29 15:17:16 -07:00
parent 3119871bd9
commit 795d8dff89
2 changed files with 10 additions and 0 deletions

View file

@ -55,6 +55,13 @@ glsl_type::glsl_type(GLenum gl_type,
vector_elements(vector_elements), matrix_columns(matrix_columns),
length(0)
{
/* Values of these types must fit in the two bits of
* glsl_type::sampled_type.
*/
STATIC_ASSERT((unsigned(GLSL_TYPE_UINT) & 3) == unsigned(GLSL_TYPE_UINT));
STATIC_ASSERT((unsigned(GLSL_TYPE_INT) & 3) == unsigned(GLSL_TYPE_INT));
STATIC_ASSERT((unsigned(GLSL_TYPE_FLOAT) & 3) == unsigned(GLSL_TYPE_FLOAT));
mtx_lock(&glsl_type::mutex);
init_ralloc_type_ctx();

View file

@ -47,6 +47,9 @@ _mesa_glsl_release_types(void);
#endif
enum glsl_base_type {
/* Note: GLSL_TYPE_UINT, GLSL_TYPE_INT, and GLSL_TYPE_FLOAT must be 0, 1,
* and 2 so that they will fit in the 2 bits of glsl_type::sampled_type.
*/
GLSL_TYPE_UINT = 0,
GLSL_TYPE_INT,
GLSL_TYPE_FLOAT,