mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-03 07:48:07 +02:00
glsl: Check that gl_ClipDistance[] is not sized too large.
Fixes piglit tests
clip-distance-explicit-too-large-with-access.{frag,vert} and
clip-distance-explicit-too-large.{frag,vert}.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
93b9758d01
commit
37bb1c4de2
1 changed files with 15 additions and 0 deletions
|
|
@ -912,6 +912,21 @@ check_builtin_array_max_size(const char *name, unsigned size,
|
|||
"be larger than gl_MaxTextureCoords (%u)\n",
|
||||
state->Const.MaxTextureCoords);
|
||||
return true;
|
||||
} else if (strcmp("gl_ClipDistance", name) == 0
|
||||
&& size > state->Const.MaxClipPlanes) {
|
||||
/* From section 7.1 (Vertex Shader Special Variables) of the
|
||||
* GLSL 1.30 spec:
|
||||
*
|
||||
* "The gl_ClipDistance array is predeclared as unsized and
|
||||
* must be sized by the shader either redeclaring it with a
|
||||
* size or indexing it only with integral constant
|
||||
* expressions. ... The size can be at most
|
||||
* gl_MaxClipDistances."
|
||||
*/
|
||||
_mesa_glsl_error(&loc, state, "`gl_ClipDistance' array size cannot "
|
||||
"be larger than gl_MaxClipDistances (%u)\n",
|
||||
state->Const.MaxClipPlanes);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue