glsl/mesa: stop duplicating tes layout values
[mesa.git] / src / mesa / main / api_validate.c
index 4ef86b89ea5693953c399d7e319e28aea096b313..ab34d99834c3e233551bf6bb5c966b61cec0ae4c 100644 (file)
@@ -206,9 +206,10 @@ _mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name)
       GLenum mode_before_gs = mode;
 
       if (tes) {
-         if (tes->TessEval.PointMode)
+         struct gl_shader *tes_sh = tes->_LinkedShaders[MESA_SHADER_TESS_EVAL];
+         if (tes_sh->TessEval.PointMode)
             mode_before_gs = GL_POINTS;
-         else if (tes->TessEval.PrimitiveMode == GL_ISOLINES)
+         else if (tes_sh->TessEval.PrimitiveMode == GL_ISOLINES)
             mode_before_gs = GL_LINES;
          else
             /* the GL_QUADS mode generates triangles too */
@@ -321,10 +322,10 @@ _mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name)
       else if (ctx->_Shader->CurrentProgram[MESA_SHADER_TESS_EVAL]) {
          struct gl_shader_program *tes =
             ctx->_Shader->CurrentProgram[MESA_SHADER_TESS_EVAL];
-
-         if (tes->TessEval.PointMode)
+         struct gl_shader *tes_sh = tes->_LinkedShaders[MESA_SHADER_TESS_EVAL];
+         if (tes_sh->TessEval.PointMode)
             pass = ctx->TransformFeedback.Mode == GL_POINTS;
-         else if (tes->TessEval.PrimitiveMode == GL_ISOLINES)
+         else if (tes_sh->TessEval.PrimitiveMode == GL_ISOLINES)
             pass = ctx->TransformFeedback.Mode == GL_LINES;
          else
             pass = ctx->TransformFeedback.Mode == GL_TRIANGLES;