[PATCH vkd3d] vkd3d: Do not report a root signature version higher than requested.

Sveinar Søpler cybermax at dexter.no
Fri Oct 25 09:26:07 CDT 2019


This patch, aswell as the patch from 
https://www.winehq.org/pipermail/wine-devel/2019-October/152984.html 
gives this error with World of Warcraft:

trace:d3d12_device_CheckFeatureSupport: Root signature requested 0x2.
trace:d3d12_device_CheckFeatureSupport: Root signature version 0x2.
trace:d3d12_device_CheckFeatureSupport: iface 0x7dc9eea0, feature 0x7, 
feature_data 0x22f608, feature_data_size 4.
trace:d3d12_device_CheckFeatureSupport: Request shader model 0x64.
trace:d3d12_device_CheckFeatureSupport: Shader model 0x51.
trace:d3d12_device_CheckFeatureSupport: iface 0x7dc9eea0, feature 0x15, 
feature_data 0x22f4a0, feature_data_size 20.
fixme:d3d12_device_CheckFeatureSupport: No support for any 
D3D12_OPTIONS3 optional features.

I guess WoW perhaps requests root signature 1.1, but it is not really 
supported?

Reverting c002aee119b638d30eeb7cdc91099449ccafeafc works, and i guess 
forces 1.0 no matter what is requested. Perhaps something else is 
missing with proper root sig 1.1 support?

Sveinar

On 25.10.2019 14:55, Rémi Bernon wrote:
> This fixes Shadow of the Tomb Raider crashing because of NULL root
> signatures being passed since c002aee119b638d30eeb7cdc91099449ccafeafc.
>
> Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
> ---
>   libs/vkd3d/device.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c
> index d30c447c..30cee112 100644
> --- a/libs/vkd3d/device.c
> +++ b/libs/vkd3d/device.c
> @@ -2512,7 +2512,8 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CheckFeatureSupport(ID3D12Device *
>                   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);
>               return S_OK;
> --
> 2.24.0.rc0
>
>



More information about the wine-devel mailing list