mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-16 09:20:34 +01:00
glsl: implement recent spec update to SSO validation
Enables 200+ dEQP SSO tests to proceed past validation, and fixes a ES31-CTS.sepshaderobjs.PipelineApi subtest. V2: split out change that reverts a previous patch into its own commit, move variable declaration to top of function, and fix some formatting all suggested by Ian. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Cc: "11.1" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
3c4aa7aff2
commit
2571a768d6
1 changed files with 24 additions and 0 deletions
|
|
@ -761,6 +761,7 @@ _mesa_validate_program_pipeline(struct gl_context* ctx,
|
|||
GLboolean IsBound)
|
||||
{
|
||||
unsigned i;
|
||||
bool program_empty = true;
|
||||
|
||||
pipe->Validated = GL_FALSE;
|
||||
|
||||
|
|
@ -857,6 +858,29 @@ _mesa_validate_program_pipeline(struct gl_context* ctx,
|
|||
}
|
||||
}
|
||||
|
||||
/* Section 11.1.3.11 (Validation) of the OpenGL 4.5 spec says:
|
||||
*
|
||||
* "An INVALID_OPERATION error is generated by any command that trans-
|
||||
* fers vertices to the GL or launches compute work if the current set
|
||||
* of active program objects cannot be executed, for reasons including:
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* - There is no current program object specified by UseProgram,
|
||||
* there is a current program pipeline object, and that object is
|
||||
* empty (no executable code is installed for any stage).
|
||||
*/
|
||||
for (i = 0; i < MESA_SHADER_STAGES; i++) {
|
||||
if (pipe->CurrentProgram[i]) {
|
||||
program_empty = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (program_empty) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Section 2.11.11 (Shader Execution), subheading "Validation," of the
|
||||
* OpenGL 4.1 spec says:
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue