Commit Graph

600 Commits

Author SHA1 Message Date
Elizabeth Figura
5a513ffcec vkd3d-shader/hlsl: Enforce FOG component count for sm1 VS output. 2024-11-05 19:53:24 +01:00
Elizabeth Figura
f50b20ddd6 vkd3d-shader/hlsl: Enforce PSIZE component count for sm1 VS output. 2024-11-05 19:53:24 +01:00
Elizabeth Figura
aa1ce9e295 tests: Add some tests for FOG and PSIZE writemask restrictions. 2024-11-05 19:53:24 +01:00
Nikolay Sivov
5ea946aa90 vkd3d-shader/hlsl: Accept multiple colon-separated attributes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-05 18:23:31 +01:00
Elizabeth Figura
7e4ab9c7c0 vkd3d-shader: Write zeroes for uninitialized outputs in vsir_program_remap_output_signature(). 2024-11-04 15:26:55 +01:00
Elizabeth Figura
e781abc3fb vkd3d-shader: Write uninitialized components of COLOR0 as 1. 2024-11-04 15:21:09 +01:00
Elizabeth Figura
cc9fcee676 vkd3d-shader: Reduce masks to only read components in vsir_program_remap_output_signature(). 2024-11-04 15:11:54 +01:00
Elizabeth Figura
568776bbf6 tests: Add a test for uninitialized varyings. 2024-11-04 15:06:02 +01:00
Feifan He
b0646cb427 tests/shader_runner: Introduce a Metal shader runner. 2024-10-31 16:47:26 +01:00
Henri Verbeet
aeae8322da tests: Add a test for actual multisample loads.
The existing test loads from a single sample texture.
2024-10-28 17:58:05 +01:00
Nikolay Sivov
89e5912fd2 vkd3d-shader/hlsl: Implement RWByteAddressBuffer.Store*() methods.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:51:04 +01:00
Nikolay Sivov
6637948ae1 tests: Add some more tests for RWByteAddressBuffer store methods.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:46:17 +01:00
Giovanni Mascellani
f7bc30bad2 tests: Mark tessellation-patch-vars.shader_test as todo on MoltenVK. 2024-10-28 17:39:23 +01:00
Giovanni Mascellani
624eccbab1 ci: Update the DXC version used on the CI to 1.8.2407.
Unfortuantely different versions of DXC accept or fail differently
in some cases. We don't care too much about validating the DXC
behavior itself, but it's useful that all the CI jobs use the
same version so that we don't have to complicate the shader runner
language.

The macOS version is currently bound to be pretty recent because
otherwise libdxil.dylib is not provided. So I'm updating the
Linux and Windows version as well.

I don't expect it should be particularly hard for other maintainers
to keep up with the DXC updates, since it just amounts to
downloading a ZIP file and extracting two libraries.
2024-10-28 17:36:17 +01:00
Giovanni Mascellani
fd33d51b1b tests: Mark tessellation.shader_test as todo on MoltenVK.
Tessellation shaders are currently not supported there.
2024-10-28 17:35:18 +01:00
Giovanni Mascellani
e83387d8b7 tests: Mark geometry.shader_test as todo on MoltenVK.
Geometry shaders are currently not supported there.
2024-10-28 17:33:35 +01:00
Giovanni Mascellani
d6efdeea61 tests: Dispatch just four invocations when testing for wave reconvergence.
I don't know why I put a 4 both in the numthreads() attribute and as
a dispatch parameter, but only care about only one thread group.
2024-10-28 17:31:24 +01:00
Giovanni Mascellani
5667da7b80 tests: Use the appropriate RTV format in bitwise.shader_test. 2024-10-28 17:31:24 +01:00
Elizabeth Figura
212333bfa6 tests: Add a test for sm1 inter-stage interface matching. 2024-10-28 17:29:25 +01:00
Elizabeth Figura
e452519dcb tests/shader_runner: Build a varying map in the Vulkan runner.
This adds todos to two tests. The tests in question have mismatching masks
and previously failed Vulkan validation anyway.
2024-10-28 17:29:25 +01:00
Elizabeth Figura
d39e840c14 tests/shader_runner: Store shader caps using an array. 2024-10-28 16:20:27 +01:00
Henri Verbeet
5e9edf25d0 vkd3d-shader/glsl: Implement VKD3DSIH_GATHER4. 2024-10-24 20:52:37 +02:00
Henri Verbeet
d477a00734 vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_GRAD. 2024-10-24 20:52:37 +02:00
Henri Verbeet
d58282c6d1 vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_LOD. 2024-10-24 20:52:37 +02:00
Henri Verbeet
85697d76be vkd3d-shader/glsl: Implement VKD3DSIH_UMAX and VKD3DSIH_UMIN. 2024-10-24 20:52:37 +02:00
Henri Verbeet
6a119b6946 vkd3d-shader/glsl: Implement VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL. 2024-10-24 20:52:37 +02:00
Henri Verbeet
21e9029177 vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_C_LZ. 2024-10-22 20:39:31 +02:00
Henri Verbeet
5958e527e5 vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_C. 2024-10-22 20:39:31 +02:00
Henri Verbeet
19c493722e vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_B. 2024-10-22 20:39:31 +02:00
Henri Verbeet
e408f1d984 vkd3d-shader/glsl: Implement support for the VKD3DSPR_THREADID register. 2024-10-22 20:39:31 +02:00
Henri Verbeet
f76dd80cba vkd3d-shader/glsl: Implement VKD3DSIH_LD_UAV_TYPED. 2024-10-22 20:39:31 +02:00
Giovanni Mascellani
8d8e0fd55a tests: Test mismatching RTV and pixel shader output types. 2024-10-22 20:38:18 +02:00
Giovanni Mascellani
dff7c0e7b8 tests: Mark interface packing pipeline creation as todo on MoltenVK.
Most Vulkan drivers are happy to compile a pipeline with interstage
interface mismatches, even if the pipeline will be broken. Metal,
and therefore MoltenVK, instead doesn't and errors out immediately.
2024-10-22 20:32:51 +02:00
Giovanni Mascellani
b411086398 tests: Use the appropriate RTV format in minimum-precision.shader_test. 2024-10-22 20:29:25 +02:00
Giovanni Mascellani
987dbe31e3 tests: Use appropriate RTV formats in max-min.shader_test. 2024-10-22 20:29:25 +02:00
Nikolay Sivov
cf3e251a9f vkd3d-shader/hlsl: Implement the f32tof16() intrinsic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-22 20:28:33 +02:00
Shaun Ren
f54797bae5 vkd3d-shader/hlsl: Support discard for SM1. 2024-10-22 20:27:34 +02:00
Francisco Casas
51d05c1844 vkd3d-shader/hlsl: Optimize interstage signatures. 2024-10-22 20:15:15 +02:00
Francisco Casas
d9b631182e tests: Add signature reflection test with structs. 2024-10-22 19:15:42 +02:00
Nikolay Sivov
fb2b974466 vkd3d-shader/hlsl: Handle snorm/unorm types as resource formats.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-22 19:14:51 +02:00
Elizabeth Figura
6fd1a1ce7e tests: Test point sprite. 2024-10-22 19:14:05 +02:00
Giovanni Mascellani
e411fcb60e tests: Test discontiguous signature masks with SM<4 shaders. 2024-10-17 17:28:52 +02:00
Shaun Ren
147f8898ca vkd3d-shader/hlsl: Process the patch constant function in hlsl_emit_bytecode().
Also, support patch constant function semantics in sm4_sysval_semantic_from_semantic_name().
2024-10-16 21:10:24 +02:00
Shaun Ren
aee00ea55a tests: Test hull shader uniform input parameters. 2024-10-16 21:07:53 +02:00
Shaun Ren
069b8aac64 vkd3d-shader/hlsl: Implement struct single inheritance.
Here, we implement single inheritance by inserting a field at the
beginning of the derived struct with name "$super".

For the following struct declarations

  struct a
  {
      float4 aa;
      float4 bb;
  };

  struct b : a
  {
      float4 cc;
  };

  struct c : b
  {
      float4 bb;
  };

this commit generates the following:

  struct a
  {
      float4 aa;
      float4 bb;
  };

  struct b
  {
      struct a $super;
      float4 cc;
  };

  struct c
  {
      struct b $super;
      float4 bb;
  };
2024-10-16 21:07:53 +02:00
Shaun Ren
013e354b46 tests: Test struct single inheritance. 2024-10-16 21:07:53 +02:00
Giovanni Mascellani
bc351f4b70 tests/shader-runner: Make geometry shaders optional.
This allows the Vulkan runner to execute in environments which do
not support geometry shaders, most notably MoltenVK. In particular,
that enables SM<4 shaders to run in such environments
2024-10-15 16:55:15 +02:00
Henri Verbeet
90616be301 vkd3d-shader/dxil: Shift register write masks by the component index in sm6_parser_emit_dx_store_output().
To account for the change we made in commit
c571a45e65 on the SPIR-V side.
2024-10-15 16:45:28 +02:00
Henri Verbeet
2d848cf001 tests: Add a basic shader model 6 interface packing test as well. 2024-10-15 16:45:28 +02:00
Nikolay Sivov
5fb3a91276 vkd3d-shader/hlsl: Implement the modf() intrinsic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-15 16:43:33 +02:00