llvm-project/llvm/test/ObjectYAML/DXContainer/RootSignature-DescriptorTable1.0.yaml
Finn Plummer 6f0253b435
[DirectX][ObectYAML] Make RootParameterOffset and StaticSamplersOffset behaviour consistent (#155521)
This pr fixes some inconsistencies in behaviour of how we handle
`StaticSamplersOffset` with respect to DXC and `RootParameterOffset`.
Namely:

1. Make codegen of `RTS0` always compute the `StaticSamplersOffset`
regardless if there are any `StaticSampler`s. This is to be consistent
and produce an identical `DXContainer` as DXC.
2. Make the `StaticSamplersOffset` and `RootParametersOffset` optional
parameters in the yaml description. This means it will be used when it
is specified (which was not necassarily the case before).
3. Enforce that the provided `StaticSamplersOffset` and
`RootParametersOffset` in a yaml description match the computed value.

For more context see:
https://github.com/llvm/llvm-project/issues/155299.

Description of existing test updates updates:
- `CodeGen/DirectX/ContainerData`: Updated to codegen computed values
(previously unspecified)
- `llvm-objcopy/DXContainer`: Updated to `yaml2obj` computed values
(previously unspecified)
- `ObjectYAML/DXContainer`: Updated to `yaml2obj` computed values
(previously incorrect)
- `ObjectYAML/DXContainerYAMLTest`: Updated to `yaml2obj` computed
values (previously incorrect)

See newly added tests for testing of optional parameter functionality
and `StaticSamplersOffset` computation.

Resolves: https://github.com/llvm/llvm-project/issues/155299
2025-08-27 11:53:37 -07:00

58 lines
1.8 KiB
YAML

# RUN: yaml2obj %s | obj2yaml | FileCheck %s
--- !dxcontainer
Header:
Hash: [ 0x32, 0x9A, 0x53, 0xD8, 0xEC, 0xBE, 0x35, 0x6F, 0x5,
0x39, 0xE1, 0xFE, 0x31, 0x20, 0xF0, 0xC1 ]
Version:
Major: 1
Minor: 0
FileSize: 133
PartCount: 1
PartOffsets: [ 36 ]
Parts:
- Name: RTS0
Size: 89
RootSignature:
Version: 1
NumRootParameters: 1
RootParametersOffset: 24
NumStaticSamplers: 0
StaticSamplersOffset: 64
Parameters:
- ParameterType: 0 # SRV
ShaderVisibility: 3 # Domain
Table:
NumRanges: 1
Ranges:
- RangeType: 0
NumDescriptors: -1
BaseShaderRegister: 42
RegisterSpace: 43
OffsetInDescriptorsFromTableStart: 41
AllowInputAssemblerInputLayout: true
DenyGeometryShaderRootAccess: true
# CHECK: - Name: RTS0
# CHECK-NEXT: Size: 89
# CHECK-NEXT: RootSignature:
# CHECK-NEXT: Version: 1
# CHECK-NEXT: NumRootParameters: 1
# CHECK-NEXT: RootParametersOffset: 24
# CHECK-NEXT: NumStaticSamplers: 0
# CHECK-NEXT: StaticSamplersOffset: 64
# CHECK-NEXT: Parameters:
# CHECK-NEXT: - ParameterType: 0
# CHECK-NEXT: ShaderVisibility: 3
# CHECK-NEXT: Table:
# CHECK-NEXT: NumRanges: 1
# CHECK-NEXT: RangesOffset: 44
# CHECK-NEXT: Ranges:
# CHECK-NEXT: - RangeType: 0
# CHECK-NEXT: NumDescriptors: -1
# CHECK-NEXT: BaseShaderRegister: 42
# CHECK-NEXT: RegisterSpace: 43
# CHECK-NEXT: OffsetInDescriptorsFromTableStart: 41
# CHECK-NEXT: AllowInputAssemblerInputLayout: true
# CHECK-NEXT: DenyGeometryShaderRootAccess: true