Commit Graph

6526 Commits

Author SHA1 Message Date
Giovanni Mascellani
5b5a27dccb vkd3d-shader/ir: Disallow INPUT registers in destination parameters. 2024-10-10 20:04:13 +02:00
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
Giovanni Mascellani
3285d1ad8c tests: Only destroy the device if the context has one in vulkan_test_context_destroy().
If vulkan_test_context_init_device() was never called, or failed to
create a device, the context won't have a device.
2024-10-10 19:53:18 +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
Conor McCarthy
fcb09be6e3 tests/shader-runner: Move the Vulkan helper functions to vulkan_utils.h. 2024-10-08 20:34:03 +02:00
Conor McCarthy
ce83628882 tests/shader-runner: Move struct vulkan_test_context to vulkan_utils.h. 2024-10-08 20:34:03 +02:00
Conor McCarthy
fc65170521 tests/shader_runner: Introduce struct vulkan_test_context for the Vulkan runner. 2024-10-08 20:34:03 +02:00
Conor McCarthy
d76435cd21 tests: Move the dxc compilation helpers to utils.h. 2024-10-08 20:34:03 +02:00
Evan Tang
102cfdab36 tests: Add a test for writing patch constants during tessellation. 2024-10-07 17:44:29 +02:00
Evan Tang
3342d307a8 tests: Add a test for shader interstage register packing. 2024-10-07 17:39:45 +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