mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d: Do not report a root signature version higher than requested.
This fixes Shadow of the Tomb Raider crashing because of NULL root
signatures being passed since c002aee119
.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
committed by
Alexandre Julliard
parent
1b66138006
commit
4576236199
@ -2665,7 +2665,8 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CheckFeatureSupport(ID3D12Device *
|
|||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
data->HighestVersion = D3D_ROOT_SIGNATURE_VERSION_1_1;
|
TRACE("Root signature requested %#x.\n", data->HighestVersion);
|
||||||
|
data->HighestVersion = min(data->HighestVersion, D3D_ROOT_SIGNATURE_VERSION_1_1);
|
||||||
|
|
||||||
TRACE("Root signature version %#x.\n", data->HighestVersion);
|
TRACE("Root signature version %#x.\n", data->HighestVersion);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -1039,6 +1039,7 @@ static void test_check_feature_support(void)
|
|||||||
{
|
{
|
||||||
D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT gpu_virtual_address;
|
D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT gpu_virtual_address;
|
||||||
D3D12_FEATURE_DATA_FEATURE_LEVELS feature_levels;
|
D3D12_FEATURE_DATA_FEATURE_LEVELS feature_levels;
|
||||||
|
D3D12_FEATURE_DATA_ROOT_SIGNATURE root_signature;
|
||||||
D3D_FEATURE_LEVEL max_supported_feature_level;
|
D3D_FEATURE_LEVEL max_supported_feature_level;
|
||||||
D3D12_FEATURE_DATA_ARCHITECTURE architecture;
|
D3D12_FEATURE_DATA_ARCHITECTURE architecture;
|
||||||
D3D12_FEATURE_DATA_FORMAT_INFO format_info;
|
D3D12_FEATURE_DATA_FORMAT_INFO format_info;
|
||||||
@ -1229,6 +1230,21 @@ static void test_check_feature_support(void)
|
|||||||
trace("GPU virtual address bits per process: %u.\n",
|
trace("GPU virtual address bits per process: %u.\n",
|
||||||
gpu_virtual_address.MaxGPUVirtualAddressBitsPerProcess);
|
gpu_virtual_address.MaxGPUVirtualAddressBitsPerProcess);
|
||||||
|
|
||||||
|
root_signature.HighestVersion = D3D_ROOT_SIGNATURE_VERSION_1_0;
|
||||||
|
hr = ID3D12Device_CheckFeatureSupport(device, D3D12_FEATURE_ROOT_SIGNATURE,
|
||||||
|
&root_signature, sizeof(root_signature));
|
||||||
|
ok(hr == S_OK, "Failed to get root signature feature support, hr %#x.\n", hr);
|
||||||
|
ok(root_signature.HighestVersion == D3D_ROOT_SIGNATURE_VERSION_1_0,
|
||||||
|
"Got unexpected root signature feature version %#x.\n", root_signature.HighestVersion);
|
||||||
|
|
||||||
|
root_signature.HighestVersion = D3D_ROOT_SIGNATURE_VERSION_1_1;
|
||||||
|
hr = ID3D12Device_CheckFeatureSupport(device, D3D12_FEATURE_ROOT_SIGNATURE,
|
||||||
|
&root_signature, sizeof(root_signature));
|
||||||
|
ok(hr == S_OK, "Failed to get root signature feature support, hr %#x.\n", hr);
|
||||||
|
ok(root_signature.HighestVersion == D3D_ROOT_SIGNATURE_VERSION_1_0
|
||||||
|
|| root_signature.HighestVersion == D3D_ROOT_SIGNATURE_VERSION_1_1,
|
||||||
|
"Got unexpected root signature feature version %#x.\n", root_signature.HighestVersion);
|
||||||
|
|
||||||
refcount = ID3D12Device_Release(device);
|
refcount = ID3D12Device_Release(device);
|
||||||
ok(!refcount, "ID3D12Device has %u references left.\n", (unsigned int)refcount);
|
ok(!refcount, "ID3D12Device has %u references left.\n", (unsigned int)refcount);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user