From fb20639eb449295131ca8e3c93fd5b4abc79da9f Mon Sep 17 00:00:00 2001 From: Conor McCarthy Date: Wed, 1 May 2024 00:01:02 +1000 Subject: [PATCH] vkd3d: Return E_INVALIDARG if the requested shader model is unknown. --- libs/vkd3d/device.c | 8 ++++++++ tests/d3d12.c | 3 --- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 3eb7ec85..6b39663a 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -3487,6 +3487,14 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CheckFeatureSupport(ID3D12Device9 return E_INVALIDARG; } + if (data->HighestShaderModel != D3D_SHADER_MODEL_5_1 + && (data->HighestShaderModel < D3D_SHADER_MODEL_6_0 + || data->HighestShaderModel > D3D_HIGHEST_SHADER_MODEL)) + { + WARN("Unknown shader model %#x.\n", data->HighestShaderModel); + return E_INVALIDARG; + } + TRACE("Request shader model %#x.\n", data->HighestShaderModel); #ifdef VKD3D_SHADER_UNSUPPORTED_DXIL diff --git a/tests/d3d12.c b/tests/d3d12.c index 8db0af99..f55eefc0 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -1010,15 +1010,12 @@ static void test_check_feature_support(void) "Got shader model %#x, expected <= %#x.\n", shader_model.HighestShaderModel, sm); shader_model.HighestShaderModel = 0x89; hr = ID3D12Device_CheckFeatureSupport(device, D3D12_FEATURE_SHADER_MODEL, &shader_model, sizeof(shader_model)); - todo ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); shader_model.HighestShaderModel = 0x52; hr = ID3D12Device_CheckFeatureSupport(device, D3D12_FEATURE_SHADER_MODEL, &shader_model, sizeof(shader_model)); - todo ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); shader_model.HighestShaderModel = 0; hr = ID3D12Device_CheckFeatureSupport(device, D3D12_FEATURE_SHADER_MODEL, &shader_model, sizeof(shader_model)); - todo ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); /* Root signature */