Mesa (master): glsl: Consolidate gl_VertexIDMESA -> gl_VertexID query hacks.
Kenneth Graunke
kwg at kemper.freedesktop.org
Sat Apr 2 05:05:34 UTC 2016
Module: Mesa
Branch: master
Commit: 9fe211bec4533bd5cebeb61b38343ae9c174abb7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9fe211bec4533bd5cebeb61b38343ae9c174abb7
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Tue Mar 29 13:32:32 2016 -0700
glsl: Consolidate gl_VertexIDMESA -> gl_VertexID query hacks.
A program will either have gl_VertexID or gl_VertexIDMESA (the lowered
zero-based version), not both. Just spoof it in the resource list so
the hacks are done in a single place.
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
---
src/compiler/glsl/linker.cpp | 12 ++++++++++--
src/mesa/main/shader_query.cpp | 17 -----------------
2 files changed, 10 insertions(+), 19 deletions(-)
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 064e7f5..c0d3107 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -3503,12 +3503,20 @@ create_shader_variable(struct gl_shader_program *shProg, const ir_variable *in)
if (!out)
return NULL;
- out->type = in->type;
- out->name = ralloc_strdup(shProg, in->name);
+ /* Since gl_VertexID may be lowered to gl_VertexIDMESA, but applications
+ * expect to see gl_VertexID in the program resource list. Pretend.
+ */
+ if (in->data.mode == ir_var_system_value &&
+ in->data.location == SYSTEM_VALUE_VERTEX_ID_ZERO_BASE) {
+ out->name = ralloc_strdup(shProg, "gl_VertexID");
+ } else {
+ out->name = ralloc_strdup(shProg, in->name);
+ }
if (!out->name)
return NULL;
+ out->type = in->type;
out->location = in->data.location;
out->index = in->data.index;
out->patch = in->data.patch;
diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp
index e85e81d..caff79f 100644
--- a/src/mesa/main/shader_query.cpp
+++ b/src/mesa/main/shader_query.cpp
@@ -164,15 +164,6 @@ _mesa_GetActiveAttrib(GLuint program, GLuint desired_index,
const char *var_name = var->name;
- /* Since gl_VertexID may be lowered to gl_VertexIDMESA, we need to
- * consider gl_VertexIDMESA as gl_VertexID for purposes of checking
- * active attributes.
- */
- if (var->mode == ir_var_system_value &&
- var->location == SYSTEM_VALUE_VERTEX_ID_ZERO_BASE) {
- var_name = "gl_VertexID";
- }
-
_mesa_copy_string(name, maxLength, length, var_name);
if (size)
@@ -421,7 +412,6 @@ _mesa_GetFragDataLocation(GLuint program, const GLchar *name)
const char*
_mesa_program_resource_name(struct gl_program_resource *res)
{
- const gl_shader_variable *var;
switch (res->Type) {
case GL_UNIFORM_BLOCK:
case GL_SHADER_STORAGE_BLOCK:
@@ -429,13 +419,6 @@ _mesa_program_resource_name(struct gl_program_resource *res)
case GL_TRANSFORM_FEEDBACK_VARYING:
return RESOURCE_XFV(res)->Name;
case GL_PROGRAM_INPUT:
- var = RESOURCE_VAR(res);
- /* Special case gl_VertexIDMESA -> gl_VertexID. */
- if (var->mode == ir_var_system_value &&
- var->location == SYSTEM_VALUE_VERTEX_ID_ZERO_BASE) {
- return "gl_VertexID";
- }
- /* fallthrough */
case GL_PROGRAM_OUTPUT:
return RESOURCE_VAR(res)->name;
case GL_UNIFORM:
More information about the mesa-commit
mailing list