i965: clip: Add VUE map computation to clip stage for Gen4-5.
authorPaul Berry <stereotype441@gmail.com>
Thu, 25 Aug 2011 02:51:54 +0000 (19:51 -0700)
committerPaul Berry <stereotype441@gmail.com>
Tue, 6 Sep 2011 18:05:05 +0000 (11:05 -0700)
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_clip.c
src/mesa/drivers/dri/i965/brw_clip.h

index b49c9f412ade41b2bbeb134ea71d59701d13fb5a..b9ec55a841e8aa5dba84a2645740824fe2fdf879 100644 (file)
@@ -71,6 +71,8 @@ static void compile_clip_prog( struct brw_context *brw,
    c.func.single_program_flow = 1;
 
    c.key = *key;
+   brw_compute_vue_map(&c.vue_map, intel, c.key.nr_userclip,
+                       c.key.do_twoside_color, c.key.attrs);
 
    /* Need to locate the two positions present in vertex + header.
     * These are currently hardcoded:
@@ -174,6 +176,7 @@ static void upload_clip_prog(struct brw_context *brw)
    /* _NEW_LIGHT */
    key.do_flat_shading = (ctx->Light.ShadeModel == GL_FLAT);
    key.pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION);
+   key.do_twoside_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide);
    /* _NEW_TRANSFORM */
    key.nr_userclip = brw_count_bits(ctx->Transform.ClipPlanesEnabled);
 
index 3a8cd7bf39010b794cbb9e25899ffcc202597819..ca2362c0627f20ff62e3c22c1d18904806d9b5f3 100644 (file)
@@ -55,7 +55,8 @@ struct brw_clip_prog_key {
    GLuint copy_bfc_cw:1;
    GLuint copy_bfc_ccw:1;
    GLuint clip_mode:3;
-   GLuint pad0:11;
+   GLuint do_twoside_color:1;
+   GLuint pad0:10;
 
    GLfloat offset_factor;
    GLfloat offset_units;
@@ -119,6 +120,8 @@ struct brw_clip_compile {
    GLuint offset[VERT_RESULT_MAX];
    /** Mapping from attribute index to VERT_RESULT_* */
    GLuint idx_to_attr[VERT_RESULT_MAX];
+
+   struct brw_vue_map vue_map;
 };
 
 #define ATTR_SIZE  (4*4)