https://bugs.winehq.org/show_bug.cgi?id=56368
Bug ID: 56368 Summary: hlsl_types_are_equal assert when vertex shaders uses SV_VertexID as lookup index Product: vkd3d Version: 1.10 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: hlsl Assignee: wine-bugs@winehq.org Reporter: martins.mozeiko@gmail.com Distribution: ---
Created attachment 76109 --> https://bugs.winehq.org/attachment.cgi?id=76109 test.c
Assertion failed: hlsl_types_are_equal(arg1->data_type, arg2->data_type), file ../wine/libs/vkd3d/libs/vkd3d-shader/hlsl.c, line 1320
This assert happens when D3DCompileFromFile or D3DCompile is called on hlsl vertex shader (vs_5_0 profile) source like this:
struct Input { float4 c0 : COL0; float4 c1 : COL1; float4 c2 : COL2; float4 c3 : COL3; uint id : SV_VertexID; };
float4 vs_main(Input input) : SV_Position { float4 col[] = { input.c0, input.c1, input.c2, input.c3 }; return col[input.id]; }
See attached test.c file that reproduces this assert. On Windows it prints out "ok = 1" and shader is successfully compiler. It can be compiled also with fxc.exe on commandline.