summaryrefslogtreecommitdiffstats
path: root/src/mesa/main
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2013-06-12 17:15:46 +0200
committerMarek Olšák <[email protected]>2013-07-02 17:02:14 +0200
commit030ca230e25192307336cb39f1ee414d0392b620 (patch)
treed77e85b3517380fded6c54ce6a1c3ef1da025f1f /src/mesa/main
parent84f367e69a876e473b4293483c5842b47d27d493 (diff)
mesa: renumber shader indices according to their placement in pipeline
See my explanation in mtypes.h. v2: don't do this in gallium v3: also updated the comment at the gl_shader_type definition Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/mesa/main')
-rw-r--r--src/mesa/main/mtypes.h9
-rw-r--r--src/mesa/main/shaderobj.h4
2 files changed, 8 insertions, 5 deletions
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 1f62e2c9c9e..9ca45617330 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2173,13 +2173,16 @@ struct gl_shader
/**
* Shader stages. Note that these will become 5 with tessellation.
- * These MUST have the same values as gallium's PIPE_SHADER_*
+ *
+ * The order must match how shaders are ordered in the pipeline.
+ * The GLSL linker assumes that if i<j, then the j-th shader is
+ * executed later than the i-th shader.
*/
typedef enum
{
MESA_SHADER_VERTEX = 0,
- MESA_SHADER_FRAGMENT = 1,
- MESA_SHADER_GEOMETRY = 2,
+ MESA_SHADER_GEOMETRY = 1,
+ MESA_SHADER_FRAGMENT = 2,
MESA_SHADER_TYPES = 3
} gl_shader_type;
diff --git a/src/mesa/main/shaderobj.h b/src/mesa/main/shaderobj.h
index 5ce85cfdeba..de1c9fcaf1e 100644
--- a/src/mesa/main/shaderobj.h
+++ b/src/mesa/main/shaderobj.h
@@ -123,8 +123,8 @@ _mesa_shader_index_to_type(GLuint i)
{
static const GLenum enums[MESA_SHADER_TYPES] = {
GL_VERTEX_SHADER,
- GL_FRAGMENT_SHADER,
- GL_GEOMETRY_SHADER ,
+ GL_GEOMETRY_SHADER,
+ GL_FRAGMENT_SHADER
};
if (i >= MESA_SHADER_TYPES)
return 0;