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

Author: Wladimir J. van der Laan <laa...@gmail.com>
Date:   Sat Nov 18 10:44:28 2017 +0100

etnaviv: GC7000: Support BLT as recipient for etna_stall

When the BLT is involved as source or target, add an extra BLT
enable/disable sequence around the sync sequence.

Signed-off-by: Wladimir J. van der Laan <laa...@gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmei...@gmail.com>

---

 src/gallium/drivers/etnaviv/etnaviv_emit.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_emit.c 
b/src/gallium/drivers/etnaviv/etnaviv_emit.c
index c24831c88b..279aa625fc 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_emit.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_emit.c
@@ -41,6 +41,7 @@
 #include "etnaviv_zsa.h"
 #include "hw/common.xml.h"
 #include "hw/state.xml.h"
+#include "hw/state_blt.xml.h"
 #include "util/u_math.h"
 
 struct etna_coalesce {
@@ -60,8 +61,15 @@ CMD_STALL(struct etna_cmd_stream *stream, uint32_t from, 
uint32_t to)
 void
 etna_stall(struct etna_cmd_stream *stream, uint32_t from, uint32_t to)
 {
-   etna_cmd_stream_reserve(stream, 4);
+   bool blt = (from == SYNC_RECIPIENT_BLT) || (to == SYNC_RECIPIENT_BLT);
+   etna_cmd_stream_reserve(stream, blt ? 8 : 4);
 
+   if (blt) {
+      etna_emit_load_state(stream, VIVS_BLT_ENABLE >> 2, 1, 0);
+      etna_cmd_stream_emit(stream, 1);
+   }
+
+   /* TODO: set bit 28/29 of token after BLT COPY_BUFFER */
    etna_emit_load_state(stream, VIVS_GL_SEMAPHORE_TOKEN >> 2, 1, 0);
    etna_cmd_stream_emit(stream, VIVS_GL_SEMAPHORE_TOKEN_FROM(from) | 
VIVS_GL_SEMAPHORE_TOKEN_TO(to));
 
@@ -73,6 +81,11 @@ etna_stall(struct etna_cmd_stream *stream, uint32_t from, 
uint32_t to)
       etna_emit_load_state(stream, VIVS_GL_STALL_TOKEN >> 2, 1, 0);
       etna_cmd_stream_emit(stream, VIVS_GL_STALL_TOKEN_FROM(from) | 
VIVS_GL_STALL_TOKEN_TO(to));
    }
+
+   if (blt) {
+      etna_emit_load_state(stream, VIVS_BLT_ENABLE >> 2, 1, 0);
+      etna_cmd_stream_emit(stream, 0);
+   }
 }
 
 static void

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to