1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-08 19:54:15 +01:00

[dxvk] Use out-of-order transfer helper in clearBuffer

This commit is contained in:
Philip Rebohle 2024-10-28 03:17:14 +01:00
parent 76db753024
commit c02b5ed10b

View File

@ -218,18 +218,17 @@ namespace dxvk {
VkDeviceSize offset, VkDeviceSize offset,
VkDeviceSize length, VkDeviceSize length,
uint32_t value) { uint32_t value) {
bool replaceBuffer = this->tryInvalidateDeviceLocalBuffer(buffer, length); DxvkCmdBuffer cmdBuffer = DxvkCmdBuffer::InitBuffer;
auto bufferSlice = buffer->getSliceHandle(offset, align(length, sizeof(uint32_t)));
if (!replaceBuffer) { if (!prepareOutOfOrderTransfer(buffer, offset, length, DxvkAccess::Write)) {
this->spillRenderPass(true); spillRenderPass(true);
flushPendingAccesses(*buffer, offset, length, DxvkAccess::Write); flushPendingAccesses(*buffer, offset, length, DxvkAccess::Write);
cmdBuffer = DxvkCmdBuffer::ExecBuffer;
} }
DxvkCmdBuffer cmdBuffer = replaceBuffer auto bufferSlice = buffer->getSliceHandle(offset, align(length, sizeof(uint32_t)));
? DxvkCmdBuffer::InitBuffer
: DxvkCmdBuffer::ExecBuffer;
if (length > sizeof(value)) { if (length > sizeof(value)) {
m_cmd->cmdFillBuffer(cmdBuffer, m_cmd->cmdFillBuffer(cmdBuffer,