[Mesa-dev] [PATCH] intel/blorp: Emit all the binding tables

Pohjolainen, Topi topi.pohjolainen at gmail.com
Tue Nov 1 15:18:22 UTC 2016


On Sat, Oct 22, 2016 at 10:31:39PM -0700, Jason Ekstrand wrote:
> 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.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>

> 
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  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 d17c661..b05914e 100644
> --- a/src/intel/blorp/blorp_genX_exec.h
> +++ b/src/intel/blorp/blorp_genX_exec.h
> @@ -1136,6 +1136,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;
>     }
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list