Mesa (wip/tgl-streamout): vulkan: Implement new way for setting streamout buffers.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Oct 3 22:48:49 UTC 2019


Module: Mesa
Branch: wip/tgl-streamout
Commit: 802a919d0eae64cc23562f5f82a88a22378d0530
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=802a919d0eae64cc23562f5f82a88a22378d0530

Author: Plamena Manolova <plamena.manolova at intel.com>
Date:   Thu Oct  3 23:40:22 2019 +0100

vulkan: Implement new way for setting streamout buffers.

For GEN12+ we set the streamout buffers using 4 separate commands
instead of 3DSTATE_SO_BUFFER.

Signed-off-by: Plamena Manolova <plamena.manolova at intel.com>

---

 src/intel/vulkan/genX_cmd_buffer.c | 7 +++++++
 src/intel/vulkan/genX_gpu_memcpy.c | 6 ++++++
 2 files changed, 13 insertions(+)

diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index 0f1c85db089..99ba80b76b3 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -2805,8 +2805,14 @@ genX(cmd_buffer_flush_state)(struct anv_cmd_buffer *cmd_buffer)
        */
       for (unsigned idx = 0; idx < MAX_XFB_BUFFERS; idx++) {
          struct anv_xfb_binding *xfb = &cmd_buffer->state.xfb_bindings[idx];
+#if GEN_GEN < 12
          anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_SO_BUFFER), sob) {
             sob.SOBufferIndex = idx;
+#else
+         anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_SO_BUFFER_INDEX_0), sobi) {
+            sobi._3DCommandSubOpcode = 96 + idx;
+#define sob sobi.SOBufferIndexStateBody
+#endif
 
             if (cmd_buffer->state.xfb_enabled && xfb->buffer && xfb->size != 0) {
                sob.SOBufferEnable = true;
@@ -2817,6 +2823,7 @@ genX(cmd_buffer_flush_state)(struct anv_cmd_buffer *cmd_buffer)
                /* Size is in DWords - 1 */
                sob.SurfaceSize = xfb->size / 4 - 1;
             }
+#undef sob
          }
       }
 
diff --git a/src/intel/vulkan/genX_gpu_memcpy.c b/src/intel/vulkan/genX_gpu_memcpy.c
index 49230c3da0c..fe5d7253391 100644
--- a/src/intel/vulkan/genX_gpu_memcpy.c
+++ b/src/intel/vulkan/genX_gpu_memcpy.c
@@ -148,8 +148,13 @@ genX(cmd_buffer_so_memcpy)(struct anv_cmd_buffer *cmd_buffer,
                         cmd_buffer->state.current_l3_config,
                         VK_SHADER_STAGE_VERTEX_BIT, entry_size);
 
+#if GEN_GEN < 12
    anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_SO_BUFFER), sob) {
       sob.SOBufferIndex = 0;
+#else
+   anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_SO_BUFFER_INDEX_0), sobi) {
+#define sob sobi.SOBufferIndexStateBody
+#endif
       sob.MOCS = anv_mocs_for_bo(cmd_buffer->device, dst.bo),
       sob.SurfaceBaseAddress = dst;
 
@@ -170,6 +175,7 @@ genX(cmd_buffer_so_memcpy)(struct anv_cmd_buffer *cmd_buffer,
       sob.StreamOffsetWriteEnable = true;
       sob.StreamOffset = 0;
 #endif
+#undef sob
    }
 
 #if GEN_GEN <= 7




More information about the mesa-commit mailing list