mesa: clamp UINT values greater than INT_MAX for glGetInteger
so that values greater than INT_MAX report INT_MAX with glGetInteger and the full value with glGetInteger64. This allows exposing compute grid sizes and max buffer sizes greater than INT_MAX. Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16881>
This commit is contained in:
parent
7acc91fe87
commit
c1381daab8
|
@ -2042,24 +2042,33 @@ _mesa_GetIntegerv(GLenum pname, GLint *params)
|
|||
break;
|
||||
|
||||
case TYPE_INT_4:
|
||||
case TYPE_UINT_4:
|
||||
params[3] = ((GLint *) p)[3];
|
||||
FALLTHROUGH;
|
||||
case TYPE_INT_3:
|
||||
case TYPE_UINT_3:
|
||||
params[2] = ((GLint *) p)[2];
|
||||
FALLTHROUGH;
|
||||
case TYPE_INT_2:
|
||||
case TYPE_UINT_2:
|
||||
case TYPE_ENUM_2:
|
||||
params[1] = ((GLint *) p)[1];
|
||||
FALLTHROUGH;
|
||||
case TYPE_INT:
|
||||
case TYPE_UINT:
|
||||
case TYPE_ENUM:
|
||||
params[0] = ((GLint *) p)[0];
|
||||
break;
|
||||
|
||||
case TYPE_UINT_4:
|
||||
params[3] = MIN2(((GLuint *) p)[3], INT_MAX);
|
||||
FALLTHROUGH;
|
||||
case TYPE_UINT_3:
|
||||
params[2] = MIN2(((GLuint *) p)[2], INT_MAX);
|
||||
FALLTHROUGH;
|
||||
case TYPE_UINT_2:
|
||||
params[1] = MIN2(((GLuint *) p)[1], INT_MAX);
|
||||
FALLTHROUGH;
|
||||
case TYPE_UINT:
|
||||
params[0] = MIN2(((GLuint *) p)[0], INT_MAX);
|
||||
break;
|
||||
|
||||
case TYPE_ENUM16:
|
||||
params[0] = ((GLenum16 *) p)[0];
|
||||
break;
|
||||
|
@ -3032,16 +3041,23 @@ _mesa_GetIntegeri_v( GLenum pname, GLuint index, GLint *params )
|
|||
break;
|
||||
|
||||
case TYPE_INT:
|
||||
case TYPE_UINT:
|
||||
params[0] = v.value_int;
|
||||
break;
|
||||
case TYPE_UINT:
|
||||
params[0] = MIN2(v.value_uint, INT_MAX);
|
||||
break;
|
||||
case TYPE_INT_4:
|
||||
case TYPE_UINT_4:
|
||||
params[0] = v.value_int_4[0];
|
||||
params[1] = v.value_int_4[1];
|
||||
params[2] = v.value_int_4[2];
|
||||
params[3] = v.value_int_4[3];
|
||||
break;
|
||||
case TYPE_UINT_4:
|
||||
params[0] = MIN2((GLuint)v.value_int_4[0], INT_MAX);
|
||||
params[1] = MIN2((GLuint)v.value_int_4[1], INT_MAX);
|
||||
params[2] = MIN2((GLuint)v.value_int_4[2], INT_MAX);
|
||||
params[3] = MIN2((GLuint)v.value_int_4[3], INT_MAX);
|
||||
break;
|
||||
case TYPE_INT64:
|
||||
params[0] = INT64_TO_INT(v.value_int64);
|
||||
break;
|
||||
|
@ -3068,7 +3084,7 @@ _mesa_GetInteger64i_v( GLenum pname, GLuint index, GLint64 *params )
|
|||
params[3] = v.value_int_4[3];
|
||||
break;
|
||||
case TYPE_UINT:
|
||||
params[0] = (GLuint) v.value_int;
|
||||
params[0] = v.value_uint;
|
||||
break;
|
||||
case TYPE_UINT_4:
|
||||
params[0] = (GLuint) v.value_int_4[0];
|
||||
|
@ -3385,24 +3401,33 @@ _mesa_GetFixedv(GLenum pname, GLfixed *params)
|
|||
break;
|
||||
|
||||
case TYPE_INT_4:
|
||||
case TYPE_UINT_4:
|
||||
params[3] = INT_TO_FIXED(((GLint *) p)[3]);
|
||||
FALLTHROUGH;
|
||||
case TYPE_INT_3:
|
||||
case TYPE_UINT_3:
|
||||
params[2] = INT_TO_FIXED(((GLint *) p)[2]);
|
||||
FALLTHROUGH;
|
||||
case TYPE_INT_2:
|
||||
case TYPE_UINT_2:
|
||||
case TYPE_ENUM_2:
|
||||
params[1] = INT_TO_FIXED(((GLint *) p)[1]);
|
||||
FALLTHROUGH;
|
||||
case TYPE_INT:
|
||||
case TYPE_UINT:
|
||||
case TYPE_ENUM:
|
||||
params[0] = INT_TO_FIXED(((GLint *) p)[0]);
|
||||
break;
|
||||
|
||||
case TYPE_UINT_4:
|
||||
params[3] = INT_TO_FIXED(((GLuint *) p)[3]);
|
||||
FALLTHROUGH;
|
||||
case TYPE_UINT_3:
|
||||
params[2] = INT_TO_FIXED(((GLuint *) p)[2]);
|
||||
FALLTHROUGH;
|
||||
case TYPE_UINT_2:
|
||||
params[1] = INT_TO_FIXED(((GLuint *) p)[1]);
|
||||
FALLTHROUGH;
|
||||
case TYPE_UINT:
|
||||
params[0] = INT_TO_FIXED(((GLuint *) p)[0]);
|
||||
break;
|
||||
|
||||
case TYPE_ENUM16:
|
||||
params[0] = INT_TO_FIXED((GLint)(((GLenum16 *) p)[0]));
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue