summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTapani Pälli <[email protected]>2015-09-01 13:53:44 +0300
committerTapani Pälli <[email protected]>2015-09-17 08:26:33 +0300
commitba02f7a3b6a0e4314753a8e5080db61241563f9c (patch)
treea0fc3def4853c68650a591f23e398a4b281bd3cd
parentd9689be5c67e71518ef8687fd7fc4bc6df25b93f (diff)
mesa: return initial value for VALIDATE_STATUS if pipe not bound
From OpenGL 4.5 Core spec (7.13): "If pipeline is a name that has been generated (without subsequent deletion) by GenProgramPipelines, but refers to a program pipeline object that has not been previously bound, the GL first creates a new state vector in the same manner as when BindProgramPipeline creates a new program pipeline object." I interpret this as "If GetProgramPipelineiv gets called without a bound (but valid) pipeline object, the state should reflect initial state of a new pipeline object." This is also expected behaviour by ES31-CTS.sepshaderobjs.PipelineApi conformance test. Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Marta Lofstedt <[email protected]>
-rw-r--r--src/mesa/main/pipelineobj.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c
index 07acbf10c1d..c2e1d29ad80 100644
--- a/src/mesa/main/pipelineobj.c
+++ b/src/mesa/main/pipelineobj.c
@@ -614,7 +614,8 @@ _mesa_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params)
*params = pipe->InfoLog ? strlen(pipe->InfoLog) + 1 : 0;
return;
case GL_VALIDATE_STATUS:
- *params = pipe->Validated;
+ /* If pipeline is not bound, return initial value 0. */
+ *params = (ctx->_Shader->Name != pipe->Name) ? 0 : pipe->Validated;
return;
case GL_VERTEX_SHADER:
*params = pipe->CurrentProgram[MESA_SHADER_VERTEX]