i965: Move VUE map computation to once at VS compile time.
[mesa.git] / src / mesa / drivers / dri / i965 / brw_vs.h
index b8d11dfa95478e6ef7f17d1d43406f0745406c02..490fcc0622be1f3c8f36fa35e940e55b93210bef 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "brw_context.h"
 #include "brw_eu.h"
+#include "brw_program.h"
 #include "program/program.h"
 
 
@@ -53,10 +54,10 @@ struct brw_vs_prog_key {
    GLuint userclip_active:1;
 
    /**
-    * Number of user clip planes active.  Zero if the shader uses
-    * gl_ClipDistance.
+    * How many user clipping planes are being uploaded to the vertex shader as
+    * push constants.
     */
-   GLuint nr_userclip_planes:4;
+   GLuint nr_userclip_plane_consts:4;
 
    /**
     * True if the shader uses gl_ClipDistance, regardless of whether any clip
@@ -65,14 +66,19 @@ struct brw_vs_prog_key {
    GLuint uses_clip_distance:1;
 
    /**
-    * Which user clip planes are active.  Zero if the shader uses
-    * gl_ClipDistance.
+    * For pre-Gen6 hardware, a bitfield indicating which clipping planes are
+    * enabled.  This is used to compact clip planes.
+    *
+    * For Gen6 and later hardware, clip planes are not compacted, so this
+    * value is zero to avoid provoking unnecessary shader recompiles.
     */
-   GLuint userclip_planes_enabled:MAX_CLIP_PLANES;
+   GLuint userclip_planes_enabled_gen_4_5:MAX_CLIP_PLANES;
 
    GLuint copy_edgeflag:1;
    GLuint point_coord_replace:8;
    GLuint clamp_vertex_color:1;
+
+   struct brw_sampler_prog_key_data tex;
 };
 
 
@@ -86,7 +92,6 @@ struct brw_vs_compile {
 
    GLuint nr_inputs;
 
-   struct brw_vue_map vue_map;
    GLuint first_output;
    GLuint last_scratch;
 
@@ -100,7 +105,7 @@ struct brw_vs_compile {
    struct brw_reg stack;
 
    struct {    
-       GLboolean used_in_src;
+       bool used_in_src;
        struct brw_reg reg;
    } output_regs[128];
 
@@ -112,7 +117,7 @@ struct brw_vs_compile {
       struct brw_reg reg;
    } current_const[3];
 
-   GLboolean needs_stack;
+   bool needs_stack;
 };
 
 bool brw_vs_emit(struct gl_shader_program *prog, struct brw_vs_compile *c);