public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH] lib/rendercopy_gen9: Setup Push constant pointer before sending BTP commands
@ 2015-08-12 11:26 Arun Siluvery
  2015-08-12 12:10 ` Joonas Lahtinen
  2015-08-13 10:06 ` Mika Kuoppala
  0 siblings, 2 replies; 9+ messages in thread
From: Arun Siluvery @ 2015-08-12 11:26 UTC (permalink / raw)
  To: intel-gfx; +Cc: Mika Kuoppala, Ben Widawsky

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@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>
---

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@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-08-19  1:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-12 11:26 [PATCH] lib/rendercopy_gen9: Setup Push constant pointer before sending BTP commands Arun Siluvery
2015-08-12 12:10 ` Joonas Lahtinen
2015-08-13  1:35   ` Ben Widawsky
2015-08-13  7:33     ` Joonas Lahtinen
2015-08-13 22:49       ` Ben Widawsky
2015-08-14  8:58         ` Daniel Vetter
2015-08-18 14:25           ` Joonas Lahtinen
2015-08-19  1:44             ` Ben Widawsky
2015-08-13 10:06 ` Mika Kuoppala

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox