Commit Graph

2030 Commits

Author SHA1 Message Date
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
d12a9738a0 tests/shader_runner: Compile HLSL for all stages before compiling SPIRV. 2024-10-28 17:29:25 +01:00
Elizabeth Figura
d287e0d8a6 tests/shader_runner: Split HLSL and SPIRV compilation in the Vulkan shader runner. 2024-10-28 17:29:23 +01:00
Elizabeth Figura
b3eee0a323 tests/shader_runner: Centralize the compile_hlsl() helper in shader_runner.c. 2024-10-28 17:23:10 +01:00
Elizabeth Figura
591ae5e18e tests/shader_runner: Store the dxc_compiler in the shader_runner. 2024-10-28 17:23:10 +01:00
Elizabeth Figura
b492ebc374 tests/shader_runner: Store shader sources as an array. 2024-10-28 17:23:06 +01:00
Elizabeth Figura
ccdac48923 tests/shader_runner: Get rid of the "dxbc_ptr" parameter to create_shader_stage(). 2024-10-28 17:13:35 +01:00
Elizabeth Figura
d39e840c14 tests/shader_runner: Store shader caps using an array. 2024-10-28 16:20:27 +01:00
Giovanni Mascellani
ae1d62f6a0 tests: Consider LOD miscalculation a todo rather than a driver bug. 2024-10-28 15:32:03 +01:00
Nikolay Sivov
5eff8bf918 vkd3d-shader/hlsl: Handle SV_GroupIndex.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-24 20:54:04 +02:00
Henri Verbeet
d48f7409fe tests/shader_runner: Print the test context in fatal_error().
In particular, this gets us line numbers.
2024-10-24 20:53:45 +02: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
Giovanni Mascellani
bc830fa06b tests: Compute the correct value for condition conjunctions.
Currently the value of the last conjunct is returned.
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
2a8c1b2823 vkd3d-shader/hlsl: Sort signature elements by register id. 2024-10-22 20:25:40 +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
ae772d40cf vkd3d: Disable push descriptors when that's helpful to stay within 8 descriptor sets. 2024-10-21 18:22:15 +02:00
Giovanni Mascellani
9f3b21cc78 tests: Mark latching the predicated value as todo on llvmpipe.
Vulkan doesn't mandate whether the predicated value should be latched
when beginning the predicated section or re-read at each operation.
2024-10-21 18:20:38 +02:00
Giovanni Mascellani
1301014b28 tests: Mark creating an 8x MSAA render target as buggy on llvmpipe. 2024-10-21 18:20:38 +02:00
Giovanni Mascellani
3c86094371 tests: Mark a sampling test as buggy on llvmpipe.
Vulkan doesn't mandate whether sampling exactly in the middle between
two levels should resolve to one or the other, while D3D specifies
that it should result into sampling the higher level. llvmpipe
happens to choose the lower one instead, at least in some cases.
2024-10-21 18:20:38 +02:00
Shaun Ren
773e1bbeae tests: Test signature reflection for domain shaders. 2024-10-21 18:19:33 +02:00
Shaun Ren
7408ab145a vkd3d-utils: Implement version reflection. 2024-10-21 18:09:06 +02:00
Giovanni Mascellani
e411fcb60e tests: Test discontiguous signature masks with SM<4 shaders. 2024-10-17 17:28:52 +02:00
Conor McCarthy
b092fcfc46 tests/d3d12: Test buffer and texture SRVs in test_unbounded_resource_arrays().
On virtual heaps, SRV/UAV unbounded ranges are implemented using two
descriptor sets, one for buffers and another for textures, and this case
should be tested.
2024-10-17 17:23:04 +02:00
Shaun Ren
1ed5f1a4d0 vkd3d-shader/tpf: Write the patch constant function in hull shaders.
We use a single hs_fork_phase here for the patch constant function.
2024-10-16 21:40:40 +02:00
Shaun Ren
f771f081d9 tests: Test signature reflection for hull shaders. 2024-10-16 21:22:02 +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
Francisco Casas
0ab5e1cb03 tests: Test interstage signature with arrays. 2024-10-16 16:49:55 +02:00
Francisco Casas
d3c464212d tests: Test interstage signature optimizations. 2024-10-16 16:47:41 +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
Henri Verbeet
9dd42d15dd build: Actually run interface-packing.shader_test and tessellation-patch-vars.shader_test. 2024-10-14 19:40:13 +02:00
Elizabeth Figura
cd249a47b8 tests: Test FFP point size clamping. 2024-10-10 22:44:33 +02:00
Elizabeth Figura
ec53e325b6 tests: Test FFP point size. 2024-10-10 22:30:35 +02:00
Henri Verbeet
3ddf46649b tests/shader_runner: Trace the "clip-planes" cap. 2024-10-10 22:28:26 +02:00
Elizabeth Figura
6ee17cf77e vkd3d-shader/spirv: Implement shader point size. 2024-10-10 22:14:45 +02:00
Elizabeth Figura
a29a4288d2 tests: Add a test for shader point size output. 2024-10-10 21:50:30 +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
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
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
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
Giovanni Mascellani
fbd8b1a8c4 tests/shader-runner: Print the WARP driver version.
Since recent versions seem to have more features and possibly
fewer bugs it is useful to know what you're dealing with.

Currently the latest WARP drivers are distributed here:

  https://www.nuget.org/packages/Microsoft.Direct3D.WARP
2024-10-07 17:33:50 +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
Henri Verbeet
944929d0da vkd3d-shader/glsl: Implement VKD3DSIH_IADD. 2024-10-07 17:31:20 +02:00
Henri Verbeet
4eed6b8887 vkd3d-shader/glsl: Add interpolation modifiers to interstage inputs and outputs. 2024-10-07 17:31:20 +02:00
Henri Verbeet
7b47528e4b vkd3d-shader/glsl: Handle SV_VERTEX_ID inputs. 2024-10-07 17:31:20 +02:00
Henri Verbeet
79455041f0 vkd3d-shader/glsl: Implement VKD3DSIH_EQO. 2024-10-07 17:31:19 +02:00
Nikolay Sivov
565698711b tests: Add a test for uniform array indexing. 2024-10-07 17:30:41 +02:00
Francisco Casas
0b989c9f37 vkd3d-shader/hlsl: Fix the conditions to discard default values.
Otherwise default_values for strings are lost.

Thanks to Nikolay Sivov for pointing this out.
2024-10-07 17:28:07 +02:00
Henri Verbeet
25232f2b2b vkd3d-shader/glsl: Implement VKD3DSIH_IMUL. 2024-10-03 19:20:14 +02:00
Henri Verbeet
4dec4e9959 vkd3d-shader/glsl: Implement VKD3DSIH_ILT. 2024-10-03 19:18:15 +02:00
Henri Verbeet
68492e704f vkd3d-shader/glsl: Implement VKD3DSIH_IGE. 2024-10-03 19:15:48 +02:00
Henri Verbeet
cf6a3ad676 vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE. 2024-10-03 19:15:48 +02:00
Henri Verbeet
eb10f0897e vkd3d-shader/glsl: Implement VKD3DSIH_LD. 2024-10-03 19:14:43 +02:00
Henri Verbeet
fc4c9b7a95 vkd3d-shader/glsl: Implement VKD3DSIH_USHR. 2024-10-02 22:30:58 +02:00
Henri Verbeet
babbf11d52 vkd3d-shader/glsl: Implement VKD3DSIH_ISHR. 2024-10-02 22:30:58 +02:00