On 13/10/2018 14:09, Jason Ekstrand wrote:
---
  src/intel/vulkan/anv_cmd_buffer.c  |  29 +++++++
  src/intel/vulkan/anv_device.c      |  24 ++++++
  src/intel/vulkan/anv_extensions.py |   2 +-
  src/intel/vulkan/anv_pipeline.c    |  10 ++-
  src/intel/vulkan/anv_private.h     |  13 +++
  src/intel/vulkan/genX_cmd_buffer.c | 125 +++++++++++++++++++++++++++++
  src/intel/vulkan/genX_pipeline.c   | 122 ++++++++++++++++++++++++++++
  7 files changed, 323 insertions(+), 2 deletions(-)


...


+
+      int max_decls = 0;
+      for (unsigned s = 0; s < MAX_XFB_STREAMS; s++)
+         max_decls = MAX2(max_decls, decls[s]);
+
+      uint8_t sbs[MAX_XFB_STREAMS] = { };
+      for (unsigned b = 0; b < MAX_XFB_BUFFERS; b++) {
+         if (xfb_info->buffers_written & (1 << b))
+            sbs[xfb_info->buffer_to_stream[b]] |= 1 << b;
+      }
+
+      uint32_t *dw = anv_batch_emitn(&pipeline->batch, 3 + 2 * max_decls,
+                                     GENX(3DSTATE_SO_DECL_LIST),
+                                     .StreamtoBufferSelects0 = sbs[0],
+                                     .StreamtoBufferSelects1 = sbs[1],
+                                     .StreamtoBufferSelects2 = sbs[2],
+                                     .StreamtoBufferSelects3 = sbs[3],
+                                     .NumEntries0 = decls[0],
+                                     .NumEntries1 = decls[1],
+                                     .NumEntries2 = decls[2],
+                                     .NumEntries3 = decls[3]);
+
+      for (int i = 0; i < max_decls; i++) {
+         GENX(SO_DECL_ENTRY_pack)(NULL, dw + 3 + i * 2,
+            &(struct GENX(SO_DECL_ENTRY)) {
+               .Stream0Decl = so_decl[0][i],
+               .Stream1Decl = so_decl[1][i],
+               .Stream2Decl = so_decl[2][i],
+               .Stream3Decl = so_decl[3][i],
+            });
+      }


Documentation of 3DSTATE_SO_DECL_LIST Gen10+ says :

"

This command must be followed by a PIPE_CONTROL with CS Stall bit set.,
"


     }
+#endif /* GEN_GEN >= 8 */
  }
static uint32_t


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

Reply via email to