diff --git a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp index 1aa7dc609..a495b5f7e 100644 --- a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp @@ -46,6 +46,10 @@ enum class StructMemberAnnotation CompType = 7, Precise = 8, CBUsed = 9, + // ResourceProperties = 10, + // BitFields = 11, + FieldWidth = 12, + VectorSize = 13, }; template @@ -124,7 +128,10 @@ struct TypeInfo uint8_t rows = 0, cols = 0; uint32_t offset; rdcstr name; + rdcstr semantic; ComponentType type; + uint32_t fieldWidth; + uint32_t vectorSize; }; struct StructData @@ -202,7 +209,9 @@ struct TypeInfo case StructMemberAnnotation::CBufferOffset: memberOut.offset = getival(memberIn->children[tag + 1]); break; - case StructMemberAnnotation::SemanticString: break; + case StructMemberAnnotation::SemanticString: + memberOut.semantic = memberIn->children[tag + 1]->str; + break; case StructMemberAnnotation::InterpolationMode: break; case StructMemberAnnotation::FieldName: memberOut.name = memberIn->children[tag + 1]->str; @@ -222,6 +231,12 @@ struct TypeInfo memberOut.flags = MemberData::Flags(memberOut.flags | MemberData::CBUsed); break; } + case StructMemberAnnotation::FieldWidth: + memberOut.fieldWidth = getival(memberIn->children[tag + 1]); + break; + case StructMemberAnnotation::VectorSize: + memberOut.vectorSize = getival(memberIn->children[tag + 1]); + break; default: RDCWARN("Unexpected field tag %u", fieldTag); break; } }