[Intel-gfx] [PATCH] lib/rendercopy_gen9: Setup Push constant pointer before sending BTP commands

Mika Kuoppala mika.kuoppala at linux.intel.com
Thu Aug 13 03:06:28 PDT 2015


Arun Siluvery <arun.siluvery at linux.intel.com> writes:

> From Gen9, by default push constant command is not committed to the shader unit
> untill the corresponding shader's BTP_* command is parsed. This is the
> behaviour when set shader is enabled. This patch updates the batch to follow
> this requirement otherwise it results in gpu hang.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89959
>
> Set shader need to be disabled if legacy behaviour is required.
>
> Cc: Ben Widawsky <benjamin.widawsky at intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: Mika Kuoppala <mika.kuoppala at intel.com>
> Signed-off-by: Arun Siluvery <arun.siluvery at linux.intel.com>
> ---
>

with skl-y,

Tested-by: Mika Kuoppala <mika.kuoppala at intel.com>

> If this patch is applied then we don't need to disable set shader bit
> in kernel and the following can be discarded.
>
> http://lists.freedesktop.org/archives/intel-gfx/2015-August/073425.html
>
>  lib/rendercopy_gen9.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
> index 4a4a604..9537480 100644
> --- a/lib/rendercopy_gen9.c
> +++ b/lib/rendercopy_gen9.c
> @@ -590,13 +590,9 @@ gen8_emit_multisample(struct intel_batchbuffer *batch) {
>  
>  static void
>  gen8_emit_vs(struct intel_batchbuffer *batch) {
> -	OUT_BATCH(GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS);
> +	OUT_BATCH(GEN6_3DSTATE_CONSTANT_VS | (11-2));
>  	OUT_BATCH(0);
> -
> -	OUT_BATCH(GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS);
>  	OUT_BATCH(0);
> -
> -	OUT_BATCH(GEN6_3DSTATE_CONSTANT_VS | (11-2));
>  	OUT_BATCH(0);
>  	OUT_BATCH(0);
>  	OUT_BATCH(0);
> @@ -605,7 +601,11 @@ gen8_emit_vs(struct intel_batchbuffer *batch) {
>  	OUT_BATCH(0);
>  	OUT_BATCH(0);
>  	OUT_BATCH(0);
> +
> +	OUT_BATCH(GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS);
>  	OUT_BATCH(0);
> +
> +	OUT_BATCH(GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS);
>  	OUT_BATCH(0);
>  
>  	OUT_BATCH(GEN6_3DSTATE_VS | (9-2));
> @@ -998,14 +998,14 @@ void gen9_render_copyfunc(struct intel_batchbuffer *batch,
>  
>  	gen8_emit_sf(batch);
>  
> +	gen8_emit_ps(batch, ps_kernel_off);
> +
>  	OUT_BATCH(GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS);
>  	OUT_BATCH(ps_binding_table);
>  
>  	OUT_BATCH(GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS);
>  	OUT_BATCH(ps_sampler_state);
>  
> -	gen8_emit_ps(batch, ps_kernel_off);
> -
>  	OUT_BATCH(GEN6_3DSTATE_SCISSOR_STATE_POINTERS);
>  	OUT_BATCH(scissor_state);
>  
> -- 
> 1.9.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list