From c02b5ed10b0087655b8fc4a01bbd60b868107568 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Mon, 28 Oct 2024 03:17:14 +0100 Subject: [PATCH] [dxvk] Use out-of-order transfer helper in clearBuffer --- src/dxvk/dxvk_context.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 1a744d4af..f4dcc1bc3 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -218,18 +218,17 @@ namespace dxvk { VkDeviceSize offset, VkDeviceSize length, uint32_t value) { - bool replaceBuffer = this->tryInvalidateDeviceLocalBuffer(buffer, length); - auto bufferSlice = buffer->getSliceHandle(offset, align(length, sizeof(uint32_t))); + DxvkCmdBuffer cmdBuffer = DxvkCmdBuffer::InitBuffer; - if (!replaceBuffer) { - this->spillRenderPass(true); + if (!prepareOutOfOrderTransfer(buffer, offset, length, DxvkAccess::Write)) { + spillRenderPass(true); flushPendingAccesses(*buffer, offset, length, DxvkAccess::Write); + + cmdBuffer = DxvkCmdBuffer::ExecBuffer; } - DxvkCmdBuffer cmdBuffer = replaceBuffer - ? DxvkCmdBuffer::InitBuffer - : DxvkCmdBuffer::ExecBuffer; + auto bufferSlice = buffer->getSliceHandle(offset, align(length, sizeof(uint32_t))); if (length > sizeof(value)) { m_cmd->cmdFillBuffer(cmdBuffer,