Henri Verbeet
bf71b13797
vkd3d-shader/glsl: Implement support for compute shaders.
2024-10-10 20:00:45 +02:00
Henri Verbeet
fb17ba18ae
vkd3d-shader/glsl: Implement VKD3DSIH_STORE_UAV_TYPED.
2024-10-10 20:00:45 +02:00
Henri Verbeet
8e47ecbd92
vkd3d-shader/glsl: Use the semantic index for shader_out_* declarations.
...
Because that's what we use in shader_glsl_print_sysval_name(). Fragment
shaders like the ones from uav-rwtexture.shader_test that output to
sv_target1 would declare "shader_out_0", but then store to
"shader_out_1" in the epilogue.
2024-10-10 20:00:45 +02:00
Henri Verbeet
afb1a2610e
vkd3d-shader/glsl: Use VKD3D_SHADER_ERROR_GLSL_UNSUPPORTED for unsupported CBV descriptor arrays.
2024-10-10 20:00:45 +02:00
Henri Verbeet
845d6f9134
vkd3d-shader/ir: Remove VKD3DSIH_DCL_UAV_TYPED instructions.
2024-10-10 20:00:45 +02:00
Giovanni Mascellani
080f25c583
vkd3d-shader/ir: Do not search for signature elements using a scalar write mask.
...
The fallback code was added when shader_signature_find_element_for_reg()
would crash when unable to find the requested signature element.
Now it doesn't any more, and the second search is redundant.
2024-10-10 20:00:19 +02:00
Giovanni Mascellani
690c47dbf8
vkd3d-shader/ir: Validate that constant interpolation is used with integer types.
2024-10-10 19:58:00 +02:00
Giovanni Mascellani
e366fc3ad6
vkd3d-shader/ir: Validate interpolation mode in shader signatures.
2024-10-10 19:58:00 +02:00
Giovanni Mascellani
831a797837
vkd3d-shader/ir: Validate minimum precision in shader signatures.
2024-10-10 19:58:00 +02:00
Giovanni Mascellani
7b1bc5ca74
vkd3d-shader/ir: Validate component types in shader signatures.
2024-10-10 19:58:00 +02:00
Giovanni Mascellani
5034e1eeb5
vkd3d-shader/ir: Validate system value semantics in shader signatures.
2024-10-10 19:58:00 +02:00
Giovanni Mascellani
6e14d7ab90
vkd3d-shader/ir: Validate usage masks in shader signatures.
2024-10-10 19:58:00 +02:00
Giovanni Mascellani
71dccc0132
vkd3d-shader/ir: Do not emit an instruction number before starting validating instructions.
2024-10-10 19:58:00 +02:00
Feifan He
ccc48291b3
vkd3d-shader/msl: Implement support for VKD3DSPR_OUTPUT registers.
2024-10-10 19:45:34 +02:00
Feifan He
48a2207511
vkd3d-shader/msl: Implement support for VKD3DSPR_INPUT registers.
2024-10-10 19:43:12 +02:00
Feifan He
75e0cde045
vkd3d-shader/msl: Implement support for VKD3DSPR_CONSTBUFFER registers.
2024-10-10 19:41:31 +02:00
Feifan He
2d7832e738
vkd3d-shader/msl: Generate shader descriptor structure declarations.
2024-10-10 19:40:34 +02:00
Giovanni Mascellani
9cb4207c92
vkd3d-shader/spirv: Write spirv_compiler_emit_variable() in terms of spirv_compiler_emit_array_variable().
...
Essentially for code clarity, so that it's more obvious that a
non-array variable is indeed an array variable with no indices.
2024-10-09 13:15:25 +02:00
Henri Verbeet
aba45d0386
vkd3d-shader/glsl: Implement VKD3DSIH_CONTINUE.
2024-10-09 13:14:31 +02:00
Henri Verbeet
bc4aacd21e
vkd3d-shader/glsl: Implement VKD3DSIH_ULT.
2024-10-09 13:14:31 +02:00
Henri Verbeet
27eb3c07ad
vkd3d-shader/glsl: Implement switches.
2024-10-09 13:14:31 +02:00
Henri Verbeet
93f1af721f
vkd3d-shader/glsl: Implement loops.
2024-10-09 13:14:31 +02:00
Henri Verbeet
790f35533b
vkd3d-shader/glsl: vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_INT inputs.
2024-10-09 13:14:31 +02:00
Giovanni Mascellani
bb0e4506a6
vkd3d-shader/ir: Validate masks in shader signatures.
2024-10-09 13:13:00 +02:00
Giovanni Mascellani
c3b31b96e1
vkd3d-shader/ir: Validate register counts in patch constant signatures.
2024-10-09 13:13:00 +02:00
Giovanni Mascellani
a29270fa64
vkd3d-shader/ir: Validate register counts in output signatures.
2024-10-09 13:13:00 +02:00
Giovanni Mascellani
118f494de3
vkd3d-shader/ir: Validate register counts in input signatures.
2024-10-09 13:13:00 +02:00
Giovanni Mascellani
7202e6e2f3
vkd3d-shader/ir: Allow a patch constant signature only for Hull and Domain Shaders.
2024-10-09 13:13:00 +02:00
Giovanni Mascellani
16efb7c0c6
vkd3d-shader: Ignore the patch constant signature when it doesn't make sense.
2024-10-09 13:13:00 +02:00
Giovanni Mascellani
cd74461d6d
vkd3d-shader/ir: Set the signature sort indices in shader_signature_merge().
...
Since the sort index is just a convenience field it is more
appropriate to only set it where it is required, instead of
requiring all frontends and passes to retain sensible values for
it.
2024-10-08 22:05:38 +02:00
Giovanni Mascellani
c332adaa68
vkd3d-shader/d3d-asm: Dump signatures when tracing a VSIR program.
2024-10-08 22:04:59 +02:00
Giovanni Mascellani
c7d09bba97
vkd3d-shader/d3d-asm: Rename dump_signatures() to dump_dxbc_signatures().
2024-10-08 22:04:59 +02:00
Giovanni Mascellani
b21ae8d9c2
vkd3d-shader/d3d-asm: Rename dump_signature() to dump_dxbc_signature().
...
To stress the fact that only the fields that appear in the DXBC
signature sections are considered.
2024-10-08 22:04:59 +02:00
Giovanni Mascellani
1256b4f862
vkd3d-shader/d3d-asm: Rename vkd3d_shader_trace() to vsir_program_trace().
2024-10-08 22:04:59 +02:00
Giovanni Mascellani
3428ed7a64
vkd3d-shader/dxil: Emit double arithmetic operations when appropriate.
2024-10-08 22:04:32 +02:00
Henri Verbeet
cf92d9f398
vkd3d-shader/ir: Store the thread group size in struct vsir_program.
2024-10-08 22:03:05 +02:00
Henri Verbeet
fc8384462f
vkd3d-shader/glsl: Implement VKD3DSIH_IMAX.
2024-10-08 22:01:56 +02:00
Henri Verbeet
c2a42214ff
vkd3d-shader/glsl: Implement VKD3DSIH_INEG.
2024-10-08 22:01:56 +02:00
Henri Verbeet
e55bc76fd2
vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_UINT inputs.
2024-10-08 22:01:56 +02:00
Henri Verbeet
0acebd6e09
vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_UINT outputs.
2024-10-08 22:01:56 +02:00
Henri Verbeet
95a46fb0f0
vkd3d-shader/glsl: Handle SV_POSITION inputs in fragment shaders.
2024-10-08 22:01:56 +02:00
Evan Tang
c571a45e65
vkd3d-shader/ir: Don't shift register write masks by the component index in shader_dst_param_io_normalise().
...
This loses information about which source elements they want, making
"o.yzw = reg.xxyz" compile to "o = reg.xxy" instead of "o = reg.xyz".
2024-10-07 17:36:11 +02:00
Evan Tang
b5ccc0e705
vkd3d-shader/ir: Remove an unnecessary typecast in shader_instruction_eliminate_phase_instance_id().
2024-10-07 17:34:54 +02:00
Elizabeth Figura
34fdb304bb
vkd3d-shader/hlsl: Handle error expressions in increments.
2024-10-07 17:33:07 +02:00
Elizabeth Figura
84685fb56d
vkd3d-shader/hlsl: Handle error expressions in subscripts.
2024-10-07 17:33:07 +02:00
Elizabeth Figura
c66f25016b
vkd3d-shader/hlsl: Handle error expressions in array indexes.
2024-10-07 17:33:07 +02:00
Elizabeth Figura
41ff4343e1
vkd3d-shader/hlsl: Handle error expressions in explicit casts.
2024-10-07 17:33:07 +02:00
Elizabeth Figura
10efdd3f63
vkd3d-shader/hlsl: Introduce an add_explicit_conversion() helper.
2024-10-07 17:33:07 +02:00
Elizabeth Figura
aa79bfa681
vkd3d-shader/preproc: Store argument values per expansion, not per macro.
2024-10-07 17:32:27 +02:00
Henri Verbeet
e7c4867359
vkd3d-shader/glsl: Implement support for VKD3DSPR_IDXTEMP registers.
2024-10-07 17:31:20 +02:00