You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am having an issue with a domain shader which reorganizes input/output signature in an unexpected way when pack-optimized compiler flag is used. This in turn gives the following error in dx12 debug layer:
D3D12 ERROR: ID3D12Device::CreateGraphicsPipelineState: Domain Shader - Pixel Shader linkage error: Signatures between stages are incompatible. Semantic 'CLIP' of the input stage has a hardware register component mask that is not a subset of the output of the previous stage. [ STATE_CREATION ERROR #662: CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK]
The signature passed through from VS-HS-DS-PS stages is this (it's in a shared header, so it should be the same in all stages):
structPixelInput
{
float4 pos : SV_POSITION;
float clip : SV_ClipDistance0;
float4 pre : PREVIOUSPOSITION;
float3 nor : NORMAL;
};
In the disassembly I can see this when using pack-optimized for domain shader:
; Output signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; PREVIOUSPOSITION 0 xyzw 0 NONE float xyzw
; SV_Position 0 xyzw 1 POS float xyzw
; SV_ClipDistance 0 w 2 CLIPDST float w
; NORMAL 0 xyz 2 NONE float xyz
And when NOT using pack-optimized:
; Output signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Position 0 xyzw 0 POS float xyzw
; SV_ClipDistance 0 x 1 CLIPDST float x
; PREVIOUSPOSITION 0 xyzw 2 NONE float xyzw
; NORMAL 0 xyz 3 NONE float xyz
And the pixel shader input signature when using pack-optimized:
; Input signature:
;
; Name Index Mask Register SysValue Format Used
; -------------------- ----- ------ -------- -------- ------- ------
; SV_Position 0 xyzw 0 POS float xy
; SV_ClipDistance 0 x 1 CLIPDST float
; PREVIOUSPOSITION 0 xyzw 2 NONE float xy w
The pack-optimized version of domain output and pixel input doesn't match as you see, which is a problem.
I am attaching the dissassemblies and command line args. disasm.zip
Best regards,
Janos
The text was updated successfully, but these errors were encountered:
Hi,
I am having an issue with a domain shader which reorganizes input/output signature in an unexpected way when
pack-optimized
compiler flag is used. This in turn gives the following error in dx12 debug layer:The signature passed through from VS-HS-DS-PS stages is this (it's in a shared header, so it should be the same in all stages):
In the disassembly I can see this when using
pack-optimized
for domain shader:And when NOT using
pack-optimized
:And the pixel shader input signature when using
pack-optimized
:The
pack-optimized
version of domain output and pixel input doesn't match as you see, which is a problem.I am attaching the dissassemblies and command line args.
disasm.zip
Best regards,
Janos
The text was updated successfully, but these errors were encountered: