Mesa (master): i965/skl: Force a BINDING_TABLE_POINTER_* after push constant command

Neil Roberts nroberts at kemper.freedesktop.org
Fri Jan 30 12:28:34 UTC 2015


Module: Mesa
Branch: master
Commit: a7eec6d620a333b722157cf1a2865b050d210aad
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7eec6d620a333b722157cf1a2865b050d210aad

Author: Neil Roberts <neil at linux.intel.com>
Date:   Thu Jan 29 14:59:49 2015 +0000

i965/skl: Force a BINDING_TABLE_POINTER_* after push constant command

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 at bitplanet.net>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/gen7_vs_state.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/gen7_vs_state.c b/src/mesa/drivers/dri/i965/gen7_vs_state.c
index 404dd20..0e9b4fe 100644
--- a/src/mesa/drivers/dri/i965/gen7_vs_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_vs_state.c
@@ -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;
 }
 
 




More information about the mesa-commit mailing list