i965/gs: Check newly-generated GS-out VUE map against correct stage
authorChris Forbes <chrisf@ijw.co.nz>
Sat, 28 Feb 2015 06:57:20 +0000 (19:57 +1300)
committerChris Forbes <chrisf@ijw.co.nz>
Sat, 28 Feb 2015 22:13:35 +0000 (11:13 +1300)
Previously, we compared our new GS-out VUE map to the existing *VS*-out
VUE map, which is bogus.

This would mostly manifest as redundant dirty flagging where the GS is
in use but the VS and GS output layouts differ; but there is a scary
case where we would fail to flag a GS-out layout change if it happened
to match the VS-out layout.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Cc: "10.5, 10.4" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88885

src/mesa/drivers/dri/i965/brw_gs.c

index 1fba76a68afb28153e7e482f603c10691fa1b609..efcff090818ce63a420ad3351ddd5bac5e63cd1c 100644 (file)
@@ -357,7 +357,7 @@ brw_upload_gs_prog(struct brw_context *brw)
    }
    brw->gs.base.prog_data = &brw->gs.prog_data->base.base;
 
-   if (memcmp(&brw->vs.prog_data->base.vue_map, &brw->vue_map_geom_out,
+   if (memcmp(&brw->gs.prog_data->base.vue_map, &brw->vue_map_geom_out,
               sizeof(brw->vue_map_geom_out)) != 0) {
       brw->vue_map_geom_out = brw->gs.prog_data->base.vue_map;
       brw->state.dirty.brw |= BRW_NEW_VUE_MAP_GEOM_OUT;