diff --git a/src/d3d11/d3d11_buffer.cpp b/src/d3d11/d3d11_buffer.cpp index deac7599..f0119973 100644 --- a/src/d3d11/d3d11_buffer.cpp +++ b/src/d3d11/d3d11_buffer.cpp @@ -224,10 +224,15 @@ namespace dxvk { case D3D11_USAGE_DEFAULT: memoryFlags |= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; - if (m_desc.BindFlags & D3D11_BIND_CONSTANT_BUFFER) { + if ((m_desc.BindFlags & D3D11_BIND_CONSTANT_BUFFER) || m_desc.CPUAccessFlags) { memoryFlags |= VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT; } + + if (m_desc.CPUAccessFlags & D3D11_CPU_ACCESS_READ) { + memoryFlags |= VK_MEMORY_PROPERTY_HOST_CACHED_BIT; + memoryFlags &= ~VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; + } break; case D3D11_USAGE_DYNAMIC: diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index cf765c33..5e0d3f04 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1606,7 +1606,7 @@ namespace dxvk { info->TiledResourcesTier = D3D11_TILED_RESOURCES_NOT_SUPPORTED; info->MinMaxFiltering = FALSE; info->ClearViewAlsoSupportsDepthOnlyFormats = TRUE; - info->MapOnDefaultBuffers = FALSE; + info->MapOnDefaultBuffers = TRUE; } return S_OK; case D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT: {