From 6f216f9df460a906c2495e5832b851858bfff158 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sun, 21 Aug 2022 20:51:54 +0200 Subject: [PATCH] [dxvk] Do not discard sparse buffers This would only blow up. --- src/dxvk/dxvk_context.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index cda3de723..c2ab3b5b8 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -1170,7 +1170,8 @@ namespace dxvk { void DxvkContext::discardBuffer( const Rc& buffer) { - if (buffer->memFlags() & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) + if ((buffer->memFlags() & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) + || (buffer->info().flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT)) return; if (m_execBarriers.isBufferDirty(buffer->getSliceHandle(), DxvkAccess::Write)) @@ -5745,6 +5746,10 @@ namespace dxvk { if (buffer->memFlags() & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) return false; + // Don't discard sparse buffers + if (buffer->info().flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) + return false; + // Suspend the current render pass if transform feedback is active prior to // invalidating the buffer, since otherwise we may invalidate a bound buffer. if ((buffer->info().usage & VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT)