diff options
author | Timothy Arceri <timothy.arceri@collabora.com> | 2015-11-26 21:32:48 +1100 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2015-12-12 19:39:01 +0000 |
commit | a16f5195ef750118688d6c7b4863516e10f8b43f (patch) | |
tree | 100ffec9fd556fe860011d321f678c7e0ca626f1 | |
parent | f65b79008987e662f2bb6218cdd251643650db12 (diff) |
glsl: don't generate extra errors in ValidateProgramPipeline
From Section 11.1.3.11 (Validation) of the GLES 3.1 spec:
"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:"
It then goes on to list the rules we validate in the
_mesa_validate_program_pipeline() function.
For ValidateProgramPipeline the only mention of generating an error is:
"An INVALID_OPERATION error is generated if pipeline is not a name re-
turned from a previous call to GenProgramPipelines or if such a name has
since been deleted by DeleteProgramPipelines,"
Which we handle separately.
This fixes:
ES31-CTS.sepshaderobjs.PipelineApi
No regressions on the eEQP 3.1 tests.
Cc: Gregory Hainaut <gregory.hainaut@gmail.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
(cherry picked from commit c3ec12ec3c1ddbc72e50df1f5632fe0547a89f7e)
Nominated-by: Emil Velikov <emil.velikov@collabora.com>
-rw-r--r-- | src/mesa/main/pipelineobj.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c index 04391293919..6710d0d40a4 100644 --- a/src/mesa/main/pipelineobj.c +++ b/src/mesa/main/pipelineobj.c @@ -928,8 +928,11 @@ _mesa_ValidateProgramPipeline(GLuint pipeline) return; } - _mesa_validate_program_pipeline(ctx, pipe, - (ctx->_Shader->Name == pipe->Name)); + /* ValidateProgramPipeline should not throw errors when pipeline validation + * fails and should instead only update the validation status. We pass + * false for IsBound to avoid an error being thrown. + */ + _mesa_validate_program_pipeline(ctx, pipe, false); /* Validate inputs against outputs, this cannot be done during linking * since programs have been linked separately from each other. |