diff --git a/src/d3d9/d3d9_common_buffer.cpp b/src/d3d9/d3d9_common_buffer.cpp index 913425eb..b0b69278 100644 --- a/src/d3d9/d3d9_common_buffer.cpp +++ b/src/d3d9/d3d9_common_buffer.cpp @@ -92,10 +92,12 @@ namespace dxvk { if (!(m_desc.Usage & D3DUSAGE_WRITEONLY)) info.access |= VK_ACCESS_HOST_READ_BIT; - + memoryFlags |= VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT - | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT - | VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; + | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT; + + if (m_desc.Size <= DeviceLocalThreshold) + memoryFlags |= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; } else { info.stages |= VK_PIPELINE_STAGE_TRANSFER_BIT; diff --git a/src/d3d9/d3d9_common_buffer.h b/src/d3d9/d3d9_common_buffer.h index ba4149d5..0ea7a0cb 100644 --- a/src/d3d9/d3d9_common_buffer.h +++ b/src/d3d9/d3d9_common_buffer.h @@ -68,6 +68,7 @@ namespace dxvk { class D3D9CommonBuffer { static constexpr VkDeviceSize BufferSliceAlignment = 64; + static constexpr VkDeviceSize DeviceLocalThreshold = 4096; public: D3D9CommonBuffer(