glsl: fix heap-buffer-overflow
[mesa.git] / src / compiler / shader_info.h
index 768f0531bc7865c8b7533bc27676fe70c642e7ac..a67084156dd03d77988180b1deed6e009cce00bc 100644 (file)
@@ -32,6 +32,9 @@ extern "C" {
 #endif
 
 typedef struct shader_info {
+   /** The shader stage, such as MESA_SHADER_VERTEX. */
+   gl_shader_stage stage;
+
    const char *name;
 
    /* Descriptive name provided by the client; may be NULL */
@@ -131,23 +134,25 @@ typedef struct shader_info {
       struct {
          unsigned local_size[3];
 
+         bool local_size_variable;
+
          /**
           * Size of shared variables accessed by the compute shader.
           */
          unsigned shared_size;
       } cs;
 
+      /* Applies to both TCS and TES. */
       struct {
          /** The number of vertices in the TCS output patch. */
-         unsigned vertices_out;
-      } tcs;
+         unsigned tcs_vertices_out;
 
-      struct {
          uint32_t primitive_mode; /* GL_TRIANGLES, GL_QUADS or GL_ISOLINES */
-         uint32_t spacing;        /* GL_EQUAL, GL_FRACTIONAL_EVEN, GL_FRACTIONAL_ODD */
-         uint32_t vertex_order;   /* GL_CW or GL_CCW */
+         enum gl_tess_spacing spacing;
+         /** Is the vertex order counterclockwise? */
+         bool ccw;
          bool point_mode;
-      } tes;
+      } tess;
    };
 } shader_info;