OSDN Git Service

i965/gen4: Respect the VERTEX_PROGRAM_TWO_SIDE vertex program/shader flag.
authorEric Anholt <eric@anholt.net>
Wed, 14 Nov 2012 22:37:00 +0000 (14:37 -0800)
committerEric Anholt <eric@anholt.net>
Sat, 17 Nov 2012 20:55:54 +0000 (12:55 -0800)
Fixes piglit "vertex-program-two-side enabled front back" and 4 others.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_sf.c

index 23a874a..eb361a9 100644 (file)
@@ -190,9 +190,10 @@ brw_upload_sf_prog(struct brw_context *brw)
    if ((ctx->Point.SpriteOrigin == GL_LOWER_LEFT) != render_to_fbo)
       key.sprite_origin_lower_left = true;
 
-   /* _NEW_LIGHT */
+   /* _NEW_LIGHT | _NEW_PROGRAM */
    key.do_flat_shading = (ctx->Light.ShadeModel == GL_FLAT);
-   key.do_twoside_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide);
+   key.do_twoside_color = ((ctx->Light.Enabled && ctx->Light.Model.TwoSide) ||
+                           ctx->VertexProgram._TwoSideEnabled);
 
    /* _NEW_POLYGON */
    if (key.do_twoside_color) {
@@ -214,7 +215,7 @@ brw_upload_sf_prog(struct brw_context *brw)
 const struct brw_tracked_state brw_sf_prog = {
    .dirty = {
       .mesa  = (_NEW_HINT | _NEW_LIGHT | _NEW_POLYGON | _NEW_POINT |
-                _NEW_TRANSFORM | _NEW_BUFFERS),
+                _NEW_TRANSFORM | _NEW_BUFFERS | _NEW_PROGRAM),
       .brw   = (BRW_NEW_REDUCED_PRIMITIVE),
       .cache = CACHE_NEW_VS_PROG
    },