According to the SkyLake 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 <k...@bitplanet.net>
---
 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..c55d6ca 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 SkyLake+ 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;
 }
 
 
-- 
1.9.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to