summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2014-11-11 11:28:28 +0000
committerKenneth Graunke <[email protected]>2015-01-14 17:09:50 -0800
commita4aeb534ea8a21770b28cdf1f66cff4afe123009 (patch)
treee053360c82660e86c92d46ae6dba35d7c3799d3f
parentd6c6b186cf308fb0de8ee4f35a5ec5570cfa989b (diff)
mesa: Only check for a current vertex shader in core profile
This doesn't affect performance, but it feels more correct. On Bay Trail-D using Fedora 20 compile flags (-m64 -O2 -mtune=generic for 64-bit and -m32 -march=i686 -mtune=atom for 32-bit), affects Gl32Batch7: 32-bit: No difference proven at 95.0% confidence (n=120) 64-bit: No difference proven at 95.0% confidence (n=120) Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/mesa/main/api_validate.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 7d989338582..a93a67de1ea 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -89,7 +89,19 @@ check_valid_to_render(struct gl_context *ctx, const char *function)
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(no VAO bound)", function);
return false;
}
- /* fallthrough */
+
+ /* Section 7.3 (Program Objects) of the OpenGL 4.5 Core Profile spec
+ * says:
+ *
+ * "If there is no active program for the vertex or fragment shader
+ * stages, the results of vertex and/or fragment processing will be
+ * undefined. However, this is not an error."
+ *
+ * The fragment shader is not tested here because other state (e.g.,
+ * GL_RASTERIZER_DISCARD) affects whether or not we actually care.
+ */
+ return ctx->VertexProgram._Current != NULL;
+
case API_OPENGL_COMPAT: {
const struct gl_shader_program *const vsProg =
ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX];