diff options
author | Arun Siluvery <arun.siluvery@linux.intel.com> | 2015-08-12 12:26:01 +0100 |
---|---|---|
committer | Mika Kuoppala <mika.kuoppala@intel.com> | 2015-08-13 15:20:19 +0300 |
commit | dd82494724c1c11ceeeaac66a2ed0113ec13f8e4 (patch) | |
tree | 27a118aeff92871188fba1a0d70110d325540a6c /lib/rendercopy_gen9.c | |
parent | 8a68ec14536c802b2d869f2356d978346bf234f4 (diff) |
lib/rendercopy_gen9: Setup Push constant pointer before sending BTP commands
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.
Set shader need to be disabled if legacy behaviour is required.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89959
Cc: Ben Widawsky <benjamin.widawsky@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Tested-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Diffstat (limited to 'lib/rendercopy_gen9.c')
-rw-r--r-- | lib/rendercopy_gen9.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c index 4a4a604a..95374807 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); |