[Docs] Document DXIL Container and RDAT formats#8631
Conversation
I've had these docs locally for a while and have reviewed and used them to help reason about and understand aspects of the binary formats that DXC generates. These docs are generated almost entirely by LLMs during iterative chat discussions where I asked repeated clarifying quesitons. I have found them sufficiently useful to keep them around, but thought they're probably worth sharing. Assisted-by: Claude Opus 4.6-4.8
| ``` | ||
| +---------------------------------------------------------------+ | ||
| | DxilContainerHeader | | ||
| | uint32_t HeaderFourCC = 'DXBC' | | ||
| | DxilContainerHash Hash (16 bytes) | | ||
| | DxilContainerVersion Version { uint16 Major, Minor } | | ||
| | uint32_t ContainerSizeInBytes | | ||
| | uint32_t PartCount | | ||
| +---------------------------------------------------------------+ | ||
| | uint32_t PartOffset[PartCount] (absolute, from container start) | | ||
| +---------------------------------------------------------------+ | ||
| | Part 0: DxilPartHeader { uint32 PartFourCC, uint32 PartSize }| | ||
| | uint8_t PartData[PartSize] | | ||
| +---------------------------------------------------------------+ | ||
| | Part 1: DxilPartHeader ... | | ||
| | ... | | ||
| +---------------------------------------------------------------+ | ||
| ``` |
There was a problem hiding this comment.
It'd be nice if these lined up.
| ``` | |
| +---------------------------------------------------------------+ | |
| | DxilContainerHeader | | |
| | uint32_t HeaderFourCC = 'DXBC' | | |
| | DxilContainerHash Hash (16 bytes) | | |
| | DxilContainerVersion Version { uint16 Major, Minor } | | |
| | uint32_t ContainerSizeInBytes | | |
| | uint32_t PartCount | | |
| +---------------------------------------------------------------+ | |
| | uint32_t PartOffset[PartCount] (absolute, from container start) | | |
| +---------------------------------------------------------------+ | |
| | Part 0: DxilPartHeader { uint32 PartFourCC, uint32 PartSize }| | |
| | uint8_t PartData[PartSize] | | |
| +---------------------------------------------------------------+ | |
| | Part 1: DxilPartHeader ... | | |
| | ... | | |
| +---------------------------------------------------------------+ | |
| ``` |
+-------------------------------------------------------------------+
| DxilContainerHeader |
| uint32_t HeaderFourCC = 'DXBC' |
| DxilContainerHash Hash (16 bytes) |
| DxilContainerVersion Version { uint16 Major, Minor } |
| uint32_t ContainerSizeInBytes |
| uint32_t PartCount |
+-------------------------------------------------------------------+
| uint32_t PartOffset[PartCount] (absolute, from container start) |
+-------------------------------------------------------------------+
| Part 0: DxilPartHeader { uint32 PartFourCC, uint32 PartSize } |
| uint8_t PartData[PartSize] |
+-------------------------------------------------------------------+
| Part 1: DxilPartHeader ... |
| ... |
+-------------------------------------------------------------------+
I've had these docs locally for a while and have reviewed and used them to help reason about and understand aspects of the binary formats that DXC generates.
These docs are generated almost entirely by LLMs during iterative chat discussions where I asked repeated clarifying quesitons.
I have found them sufficiently useful to keep them around, but thought they're probably worth sharing.
Assisted-by: Claude Opus 4.6-4.8