1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-19 14:52:10 +01:00

[d3d11] Report unified memory if all heaps are device-local

Together with mapping default resources, this may or may not
help performance in some applications on integrated graphics.
This commit is contained in:
Philip Rebohle 2019-09-17 23:52:02 +02:00
parent 518d06b9c2
commit abf89356cd
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 15 additions and 1 deletions

View File

@ -1649,7 +1649,7 @@ namespace dxvk {
info->MapOnDefaultTextures = TRUE;
info->TiledResourcesTier = D3D11_TILED_RESOURCES_NOT_SUPPORTED;
info->StandardSwizzle = FALSE;
info->UnifiedMemoryArchitecture = FALSE; // Maybe on some APUs?
info->UnifiedMemoryArchitecture = IsUnifiedMemoryArch();
} return S_OK;
case D3D11_FEATURE_D3D11_OPTIONS3: {
@ -2307,6 +2307,18 @@ namespace dxvk {
}
BOOL D3D11Device::IsUnifiedMemoryArch() {
auto memory = m_dxvkAdapter->memoryProperties();
bool result = true;
// Report unified memory if all heaps are device-local
for (uint32_t i = 0; i < memory.memoryHeapCount && result; i++)
result &= memory.memoryHeaps[i].flags & VK_MEMORY_HEAP_DEVICE_LOCAL_BIT;
return result;
}
D3D_FEATURE_LEVEL D3D11Device::GetMaxFeatureLevel(const Rc<DxvkAdapter>& Adapter) {
static const std::array<std::pair<std::string, D3D_FEATURE_LEVEL>, 9> s_featureLevels = {{
{ "12_1", D3D_FEATURE_LEVEL_12_1 },

View File

@ -496,6 +496,8 @@ namespace dxvk {
UINT Subresource,
const D3D11_BOX* pBox);
BOOL IsUnifiedMemoryArch();
static D3D_FEATURE_LEVEL GetMaxFeatureLevel(
const Rc<DxvkAdapter>& Adapter);