i965/skl: Force a BINDING_TABLE_POINTER_* after push constant command
authorNeil Roberts <neil@linux.intel.com>
Thu, 29 Jan 2015 14:59:49 +0000 (14:59 +0000)
committerNeil Roberts <neil@linux.intel.com>
Fri, 30 Jan 2015 12:25:13 +0000 (12:25 +0000)
According to the SKL bspec the 3DSTATE_CONSTANT_* commands only take
effect on the next corresponding 3DSTATE_BINDING_TABLE_POINTER_*
command. This patch just makes it set the BRW_NEW_SURFACES state when
uploading the push constants to ensure the binding tables will be
updated.

This fixes the fbo-blending-formats Piglit test and possibly others.

Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/gen7_vs_state.c

index 404dd20efece52c212344458772966ed00e0813e..0e9b4fe83caea93b9eb5f1a05477428eacdcc681 100644 (file)
@@ -60,6 +60,13 @@ gen7_upload_constant_state(struct brw_context *brw,
    }
 
    ADVANCE_BATCH();
+
+  /* On SKL+ the new constants don't take effect until the next corresponding
+   * 3DSTATE_BINDING_TABLE_POINTER_* command is parsed so we need to ensure
+   * that is sent
+   */
+   if (brw->gen >= 9)
+      brw->state.dirty.brw |= BRW_NEW_SURFACES;
 }