diff --git a/framework/decode/custom_dx12_struct_decoders.cpp b/framework/decode/custom_dx12_struct_decoders.cpp index 082e7c2d0..ecb114f23 100644 --- a/framework/decode/custom_dx12_struct_decoders.cpp +++ b/framework/decode/custom_dx12_struct_decoders.cpp @@ -461,6 +461,11 @@ size_t DecodeStruct(const uint8_t* buffer, size_t buffer_size, Decoded_D3D12_VER wrapper->Desc_1_1->decoded_value = &(value->Desc_1_1); bytes_read += DecodeStruct((buffer + bytes_read), (buffer_size - bytes_read), wrapper->Desc_1_1); break; + case D3D_ROOT_SIGNATURE_VERSION_1_2: + wrapper->Desc_1_2 = DecodeAllocator::Allocate(); + wrapper->Desc_1_2->decoded_value = &(value->Desc_1_2); + bytes_read += DecodeStruct((buffer + bytes_read), (buffer_size - bytes_read), wrapper->Desc_1_2); + break; } return bytes_read; diff --git a/framework/decode/custom_dx12_struct_decoders.h b/framework/decode/custom_dx12_struct_decoders.h index 027a1fa90..33a0295f2 100644 --- a/framework/decode/custom_dx12_struct_decoders.h +++ b/framework/decode/custom_dx12_struct_decoders.h @@ -151,6 +151,7 @@ struct Decoded_D3D12_VERSIONED_ROOT_SIGNATURE_DESC D3D12_VERSIONED_ROOT_SIGNATURE_DESC* decoded_value{ nullptr }; Decoded_D3D12_ROOT_SIGNATURE_DESC* Desc_1_0{ nullptr }; Decoded_D3D12_ROOT_SIGNATURE_DESC1* Desc_1_1{ nullptr }; + Decoded_D3D12_ROOT_SIGNATURE_DESC2* Desc_1_2{ nullptr }; }; struct Decoded_D3D12_INDIRECT_ARGUMENT_DESC diff --git a/framework/decode/dx12_resource_value_mapper.cpp b/framework/decode/dx12_resource_value_mapper.cpp index 105a344b9..51ad30fbf 100644 --- a/framework/decode/dx12_resource_value_mapper.cpp +++ b/framework/decode/dx12_resource_value_mapper.cpp @@ -562,6 +562,10 @@ void Dx12ResourceValueMapper::PostProcessCreateRootSignature(PointerDecoderDesc_1_1, root_sig_extra_info->resource_value_infos); break; + case D3D_ROOT_SIGNATURE_VERSION_1_2: + GetRootSignatureResourceValueInfos(&versioned_root_sig->Desc_1_2, + root_sig_extra_info->resource_value_infos); + break; default: GFXRECON_LOG_ERROR("Ignoring unrecognized root signature version (%d) for root signature (id=%" PRIu64 ").", diff --git a/framework/encode/custom_dx12_struct_encoders.cpp b/framework/encode/custom_dx12_struct_encoders.cpp index c6797e69f..8171fdd59 100644 --- a/framework/encode/custom_dx12_struct_encoders.cpp +++ b/framework/encode/custom_dx12_struct_encoders.cpp @@ -309,6 +309,9 @@ void EncodeStruct(ParameterEncoder* encoder, const D3D12_VERSIONED_ROOT_SIGNATUR case D3D_ROOT_SIGNATURE_VERSION_1_1: EncodeStruct(encoder, value.Desc_1_1); break; + case D3D_ROOT_SIGNATURE_VERSION_1_2: + EncodeStruct(encoder, value.Desc_1_2); + break; default: break; } diff --git a/framework/generated/dx12_generators/dx12_struct_decoders_to_json_body_generator.py b/framework/generated/dx12_generators/dx12_struct_decoders_to_json_body_generator.py index b42db95f6..cea4eebaa 100644 --- a/framework/generated/dx12_generators/dx12_struct_decoders_to_json_body_generator.py +++ b/framework/generated/dx12_generators/dx12_struct_decoders_to_json_body_generator.py @@ -502,7 +502,7 @@ def makeUnionFieldToJson(self, properties, struct_name, union_index): } case D3D_ROOT_SIGNATURE_VERSION_1_2: { - /// @todo Uncomment this once the union member is added to the decoded struct: FieldToJson(jdata["Desc_1_2"], meta_struct.Desc_1_2, options); + FieldToJson(jdata["Desc_1_2"], meta_struct.Desc_1_2, options); GFXRECON_LOG_ERROR("Unknown D3D_ROOT_SIGNATURE_VERSION_1_2 in D3D12_VERSIONED_ROOT_SIGNATURE_DESC."); break; } diff --git a/framework/generated/generated_dx12_struct_decoders_to_json.cpp b/framework/generated/generated_dx12_struct_decoders_to_json.cpp index 55c231e5c..779d46499 100644 --- a/framework/generated/generated_dx12_struct_decoders_to_json.cpp +++ b/framework/generated/generated_dx12_struct_decoders_to_json.cpp @@ -2944,7 +2944,7 @@ void FieldToJson(nlohmann::ordered_json& jdata, const Decoded_D3D12_VERSIONED_RO } case D3D_ROOT_SIGNATURE_VERSION_1_2: { - /// @todo Uncomment this once the union member is added to the decoded struct: FieldToJson(jdata["Desc_1_2"], meta_struct.Desc_1_2, options); + FieldToJson(jdata["Desc_1_2"], meta_struct.Desc_1_2, options); GFXRECON_LOG_ERROR("Unknown D3D_ROOT_SIGNATURE_VERSION_1_2 in D3D12_VERSIONED_ROOT_SIGNATURE_DESC."); break; }