radv: emit SQ_NON_EVENT packets after drawing with streamout on GFX12
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29417>
This commit is contained in:

committed by
Marge Bot

parent
9d50725ffe
commit
d6ae8c689e
@@ -13233,6 +13233,8 @@ radv_CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanc
|
||||
{
|
||||
VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
VK_FROM_HANDLE(radv_buffer, counterBuffer, _counterBuffer);
|
||||
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
const struct radv_physical_device *pdev = radv_device_physical(device);
|
||||
struct radv_draw_info info;
|
||||
|
||||
info.count = 0;
|
||||
@@ -13249,6 +13251,15 @@ radv_CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanc
|
||||
struct VkMultiDrawInfoEXT minfo = {0, 0};
|
||||
radv_emit_strmout_buffer(cmd_buffer, &info);
|
||||
radv_emit_direct_draw_packets(cmd_buffer, &info, 1, &minfo, S_0287F0_USE_OPAQUE(1), 0);
|
||||
|
||||
if (pdev->info.gfx_level == GFX12) {
|
||||
/* DrawTransformFeedback requires 3 SQ_NON_EVENTs after the packet. */
|
||||
for (unsigned i = 0; i < 3; i++) {
|
||||
radeon_emit(cmd_buffer->cs, PKT3(PKT3_EVENT_WRITE, 0, 0));
|
||||
radeon_emit(cmd_buffer->cs, EVENT_TYPE(V_028A90_SQ_NON_EVENT) | EVENT_INDEX(0));
|
||||
}
|
||||
}
|
||||
|
||||
radv_after_draw(cmd_buffer, false);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user