vkd3d: Return valid node masks in external resource heap properties.

Hitman 2 calls GetHeapProperties() for each swapchain buffer and checks if
the creation node mask is 1. If not then it fails to store the resource
pointers for later rendering.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Conor McCarthy 2019-11-25 17:35:42 +03:30 committed by Alexandre Julliard
parent 5366d405e9
commit e783784cac
2 changed files with 4 additions and 2 deletions

View File

@ -1522,6 +1522,8 @@ static HRESULT STDMETHODCALLTYPE d3d12_resource_GetHeapProperties(ID3D12Resource
{ {
memset(heap_properties, 0, sizeof(*heap_properties)); memset(heap_properties, 0, sizeof(*heap_properties));
heap_properties->Type = D3D12_HEAP_TYPE_DEFAULT; heap_properties->Type = D3D12_HEAP_TYPE_DEFAULT;
heap_properties->CreationNodeMask = 1;
heap_properties->VisibleNodeMask = 1;
} }
if (flags) if (flags)
*flags = D3D12_HEAP_FLAG_NONE; *flags = D3D12_HEAP_FLAG_NONE;

View File

@ -907,8 +907,8 @@ static void test_external_resource_map(void)
"Got unexpected CPU page property %#x.\n", heap_properties.CPUPageProperty); "Got unexpected CPU page property %#x.\n", heap_properties.CPUPageProperty);
ok(heap_properties.MemoryPoolPreference == D3D12_MEMORY_POOL_UNKNOWN, ok(heap_properties.MemoryPoolPreference == D3D12_MEMORY_POOL_UNKNOWN,
"Got unexpected memory pool preference %#x.\n", heap_properties.MemoryPoolPreference); "Got unexpected memory pool preference %#x.\n", heap_properties.MemoryPoolPreference);
todo ok(!!heap_properties.CreationNodeMask, "Got unexpected node mask %#x.\n", heap_properties.CreationNodeMask); ok(!!heap_properties.CreationNodeMask, "Got unexpected node mask %#x.\n", heap_properties.CreationNodeMask);
todo ok(!!heap_properties.VisibleNodeMask, "Got unexpected node mask %#x.\n", heap_properties.VisibleNodeMask); ok(!!heap_properties.VisibleNodeMask, "Got unexpected node mask %#x.\n", heap_properties.VisibleNodeMask);
ID3D12Resource_Release(vk_resource); ID3D12Resource_Release(vk_resource);
vk_device = vkd3d_get_vk_device(device); vk_device = vkd3d_get_vk_device(device);