Mesa (master): intel/blorp: Emit all the binding tables

Jason Ekstrand jekstrand at kemper.freedesktop.org
Tue Nov 8 16:33:05 UTC 2016


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

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Sat Oct 22 22:27:23 2016 -0700

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 at jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
Cc: "13.0" <mesa-stable at lists.freedesktop.org>

---

 src/intel/blorp/blorp_genX_exec.h | 5 +++++
 1 file changed, 5 insertions(+)

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;
    }




More information about the mesa-commit mailing list