summaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2016-10-22 22:27:23 -0700
committerEmil Velikov <emil.l.velikov@gmail.com>2016-11-09 14:14:33 +0000
commitdba0abdc91b0f1a2c871a60272df577410eda78e (patch)
tree8fb25adb62387c4c8b86fc384c5a7a6267ba3632 /src/intel
parenta31947fbf95ee79c7617cf74ebb24a6849e0c9c3 (diff)
downloadexternal_mesa3d-dba0abdc91b0f1a2c871a60272df577410eda78e.zip
external_mesa3d-dba0abdc91b0f1a2c871a60272df577410eda78e.tar.gz
external_mesa3d-dba0abdc91b0f1a2c871a60272df577410eda78e.tar.bz2
intel/blorp: Emit all the binding tables
At least on Sky Lake, after emitting 3DSTATE_CONSTANT_*, you are required to re-emit the 3DSTATE_BINDING_TABLE_POINTERS packet for the corresponding stage. If you don't, double-buffering may fail and you may get the wrong constants. It turns out that you need to do this even if you have no push constants to speak of or else the next 3DSTATE_CONSTANT packet you emit for that stage may not work correctly. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com> Cc: "13.0" <mesa-stable@lists.freedesktop.org> (cherry picked from commit 406cd9d1261996ba53e3301b2a5a01b5c5c56f00)
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/blorp/blorp_genX_exec.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h
index 2051859..07c335a 100644
--- a/src/intel/blorp/blorp_genX_exec.h
+++ b/src/intel/blorp/blorp_genX_exec.h
@@ -1117,6 +1117,11 @@ blorp_emit_surface_states(struct blorp_batch *batch,
}
#if GEN_GEN >= 7
+ blorp_emit(batch, GENX(3DSTATE_BINDING_TABLE_POINTERS_VS), bt);
+ blorp_emit(batch, GENX(3DSTATE_BINDING_TABLE_POINTERS_HS), bt);
+ blorp_emit(batch, GENX(3DSTATE_BINDING_TABLE_POINTERS_DS), bt);
+ blorp_emit(batch, GENX(3DSTATE_BINDING_TABLE_POINTERS_GS), bt);
+
blorp_emit(batch, GENX(3DSTATE_BINDING_TABLE_POINTERS_PS), bt) {
bt.PointertoPSBindingTable = bind_offset;
}