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
31 lines
1023 B
LLVM
31 lines
1023 B
LLVM
; RUN: opt %s -dxil-embed -dxil-globals -S -o - | FileCheck %s
|
|
; RUN: llc %s --filetype=obj -o - | obj2yaml | FileCheck %s --check-prefix=DXC
|
|
|
|
target triple = "dxil-unknown-shadermodel6.0-compute"
|
|
|
|
; CHECK: @dx.rts0 = private constant [24 x i8] c"{{.*}}", section "RTS0", align 4
|
|
|
|
define void @main() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
|
|
|
|
|
|
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
|
|
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
|
|
!3 = !{ !4 } ; list of root signature elements
|
|
!4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
|
|
|
|
|
|
; DXC: - Name: RTS0
|
|
; DXC-NEXT: Size: 24
|
|
; DXC-NEXT: RootSignature:
|
|
; DXC-NEXT: Version: 2
|
|
; DXC-NEXT: NumRootParameters: 0
|
|
; DXC-NEXT: RootParametersOffset: 24
|
|
; DXC-NEXT: NumStaticSamplers: 0
|
|
; DXC-NEXT: StaticSamplersOffset: 24
|
|
; DXC-NEXT: Parameters: []
|
|
; DXC-NEXT: AllowInputAssemblerInputLayout: true
|