vkd3d: Allow different but compatible global root signature objects.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
Hans-Kristian Arntzen 2022-05-03 14:49:18 +02:00
parent 53309d05a1
commit c940d548f4
1 changed files with 11 additions and 3 deletions

View File

@ -448,13 +448,21 @@ static HRESULT d3d12_state_object_parse_subobjects(struct d3d12_state_object *ob
case D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE:
{
const D3D12_GLOBAL_ROOT_SIGNATURE *rs = obj->pDesc;
if (data->global_root_signature)
struct d3d12_root_signature *new_rs;
struct d3d12_root_signature *old_rs;
new_rs = impl_from_ID3D12RootSignature(rs->pGlobalRootSignature);
old_rs = impl_from_ID3D12RootSignature(data->global_root_signature);
if (new_rs && old_rs && new_rs->compatibility_hash != old_rs->compatibility_hash)
{
/* Simplicity for now. */
FIXME("More than one global root signature is used.\n");
FIXME("More than one unique global root signature is used.\n");
return E_INVALIDARG;
}
data->global_root_signature = rs->pGlobalRootSignature;
if (!data->global_root_signature)
data->global_root_signature = rs->pGlobalRootSignature;
break;
}