1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-31 23:52:20 +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 committed by Philip Rebohle
parent c8ab88e8f5
commit 8269b93f51

View File

@ -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,