Commit Graph

6672 Commits

Author SHA1 Message Date
Francisco Casas
3c4889add3 vkd3d-shader/hlsl: Store SM4 SIN and COS in the vsir program. 2024-11-06 22:38:04 +01:00
Francisco Casas
befba8e813 vkd3d-shader/hlsl: Store SM4 casts in the vsir program. 2024-11-06 22:27:49 +01:00
Giovanni Mascellani
026624a266 tests: Work around a Metal bug in switch.shader_test.
The Metal bug was reported to Apple as FB15617433. Since we don't
care specifically about that bug, I'm just tweaking the test so that
it doesn't hit that bad path any more.
2024-11-06 22:15:09 +01:00
Giovanni Mascellani
7450c4a368 tests: Mark some tests in wave-reconvergence.shader_test as buggy on MoltenVK. 2024-11-06 22:15:09 +01:00
Giovanni Mascellani
ba5c3b576e tests: Use the appropriate RTV format in f32tof16.shader_test. 2024-11-06 22:15:09 +01:00
Giovanni Mascellani
5639b54c1b tests: Mark fog.shader_test as todo with MSL. 2024-11-06 22:15:09 +01:00
Nikolay Sivov
9af17d4a9d vkd3d-shader/fx: Implement parsing the remaining fx_5_0 object types.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-06 22:14:03 +01:00
Nikolay Sivov
e5ba79b4f1 vkd3d-shader/hlsl: Implement the ByteAddressBuffer.Load*() methods.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-06 22:09:23 +01:00
Nikolay Sivov
1a28e7d9c6 vkd3d-shader/hlsl: Add parser support for the ByteAddressBuffer type.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-06 21:56:27 +01:00
Nikolay Sivov
8438aacc3b vkd3d-shader/spriv: Only lookup resource symbols for UAVs in the ld_raw/ld_structured handler.
We don't need them for SRVs. Worse, if we're using a combined
resource/sampler pair for the SRV, a separate resource symbol may not
even exist.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-06 21:47:08 +01:00
Conor McCarthy
76fd1388d8 vkd3d: Check the IASetVertexBuffers() view count against the device limits.
For example, current MoltenVK only supports 31 vertex buffers.
2024-11-06 21:43:32 +01:00
Elizabeth Figura
fb8660c196 vkd3d-shader/ir: Add an is_pre_rasterization_shader() helper. 2024-11-05 20:00:27 +01:00
Elizabeth Figura
4290d85397 vkd3d-shader/hlsl: Write all writemask components for PSIZE and FOG outputs.
Matching fxc/d3dcompiler.
2024-11-05 19:58:49 +01:00
Elizabeth Figura
a10ee075ff vkd3d-shader/ir: Force fog and point size to 1 component when normalizing I/O. 2024-11-05 19:57:41 +01:00
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
Francisco Casas
90a07ada8e vkd3d-shader/tpf: Use SCALAR swizzle dimension for RASTERIZER registers.
While we currently output instructions like this:

    sampleinfo_uint r0.x, rasterizer.xxxx

    > SAMPLE_INFO (111)
    0  0000100[len:4]  0000000000001[1]  00001101111[opcode:111]
    └─ 0  000[d3i:0]  000[d2i:0]  000[d1i:0]  01[idxs:1]  00000000[type:0]  0000[0]  0001[wmask:1]  00[swtype:0]  10[dim:2]
       └─ 00000000000000000000000000000000[0|0.0]
    └─ 0  000[d3i:0]  000[d2i:0]  000[d1i:0]  00[idxs:0]  00001110[type:14]  00000000[sw:0]  01[swtype:1]  10[dim:2]

FXC/d3dcompiler outputs instructions like this:

    sampleinfo o0.x, rasterizer.x

    > SAMPLE_INFO (111)
    0  0000100[len:4]  0000000000000[0]  00001101111[opcode:111]
    └─ 0  000[d3i:0]  000[d2i:0]  000[d1i:0]  01[idxs:1]  00000010[type:2]  0000[0]  0001[wmask:1]  00[swtype:0]  10[dim:2]
       └─ 00000000000000000000000000000000[0|0.0]
    └─ 0  000[d3i:0]  000[d2i:0]  000[d1i:0]  00[idxs:0]  00001110[type:14]  000000[0]  00[swcomp:0]  10[swtype:2]  10[dim:2]

Note the difference in swtype of the rasterizer src register.
2024-11-05 19:50:55 +01:00
Francisco Casas
950c381728 vkd3d-shader/hlsl: Store RASTERIZER_SAMPLE_COUNT in the vsir program.
Also, the profile check for GetRenderTargetSampleCount() is moved to
parse time.
2024-11-05 19:48:31 +01:00
Francisco Casas
ab60f4e082 vkd3d-shader/hlsl: Store simple SM4 expressions in the vsir program. 2024-11-05 19:35:52 +01:00
Francisco Casas
b4608e99e3 vkd3d-shader/tpf: Remove HLSL IR ABS handling. 2024-11-05 19:20:21 +01:00
Francisco Casas
6eda775047 vkd3d-shader/hlsl: Run sm4_generate_vsir_block() recursively.
This allows us to remove the HLSL IR version of an instruction when
the vsir version is properly implemented.
2024-11-05 19:20:21 +01:00
Shaun Ren
64c4a3a442 vkd3d-shader/hlsl: Store SM4 semantic declarations in the vsir program. 2024-11-05 19:19:22 +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
Giovanni Mascellani
794f4c30f4 ci: Error out on Objective-C warnings.
Except for the known uninteresting ones.
2024-11-04 17:02:32 +01:00
Francisco Casas
68311ef010 vkd3d-shader/hlsl: Store SM4 ABS instructions in the vsir program. 2024-11-04 17:00:54 +01:00
Francisco Casas
404644bad3 vkd3d-shader/hlsl: Introduce vsir_src_from_hlsl_node().
This allows constants to be inlined for sm4.
2024-11-04 16:36:28 +01:00
Francisco Casas
6f52bb6b1a vkd3d-shader/hlsl: Store SM4 swizzles in the vsir program. 2024-11-04 16:08:38 +01:00
Francisco Casas
2083d505c7 vkd3d-shader/tpf: Use instr.extra_bits for IF. 2024-11-04 15:37:46 +01:00
Henri Verbeet
e6c84862a8 vkd3d-shader/ir: Search for SV_TARGET0 vsir_program_insert_alpha_test().
As opposed to any SV_TARGET with register index 0. We care about the
semantic index here, not the register index.
2024-11-04 15:32:05 +01:00
Henri Verbeet
1b0248f31b vkd3d-shader/ir: Specifically search for SV_POSITION0 in vsir_program_insert_clip_planes(). 2024-11-04 15:30:44 +01:00
Conor McCarthy
51c37735a9 tests: Use state RESOLVE_SOURCE for readback from multisampled textures. 2024-11-04 15:30:11 +01:00
Elizabeth Figura
3681b83fb4 vkd3d-shader/fx: Fix checking for a GS with stream output. 2024-11-04 15:29:39 +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
61bda1c054 vkd3d-shader: Always ensure a RET at the end of a program. 2024-11-04 15:06:02 +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
da75582a14 tests/shader_runner: Check whether copy/dispatch/draw succeeded in parse_test_directive(). 2024-10-31 16:46:59 +01:00
Henri Verbeet
b5f1979475 tests/shader_runner: Print "(none)" for an empty caps list in trace_shader_caps().
Like we do in trace_format_cap().
2024-10-31 16:46:59 +01:00
Nikolay Sivov
ad2208b726 vkd3d-shader/fx: Implement parsing shader resources types.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-29 14:52:39 +01:00
Nikolay Sivov
1a8e9ff94e vkd3d-shader/fx: Implement parsing shader objects.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-29 14:41:55 +01:00
Elizabeth Figura
96c13aeb97 tests: Silence a bogus -Wmaybe-uninitialized. 2024-10-28 18:01:06 +01:00
Elizabeth Figura
3511b54040 vkd3d-shader/hlsl: Use early return in allocate_register().
Partly to avoid a spurious maybe-uninitialized warning, and partly because it's a more idiomatic structure.
2024-10-28 18:01:06 +01:00
Elizabeth Figura
08253504dc vkd3d-shader: Make an assert into an explicit check.
For some reason gcc without LTO thinks that component_count can overflow the
array here.
2024-10-28 18:01:06 +01:00
Elizabeth Figura
5883e01032 vkd3d-shader/fx: Remove an unnecessary hlsl_is_numeric_type().
Constants can only be numeric.
2024-10-28 18:01:06 +01:00
Elizabeth Figura
a595b96f62 vkd3d: Initialize vk_extensions in vk_init_device_caps().
Without LTO, gcc doesn't know that hresult_from_vk_result() will always return a
failure HRESULT for a failure VkResult, and so thinks that we might exit from
vkd3d_check_device_extensions() with a success HRESULT but without initializing
vk_extensions.
2024-10-28 18:01:06 +01:00
Henri Verbeet
5188883142 tests/shader_runner: Set "properties2.sType" in get_physical_device_info() in the Vulkan runner.
Found by the Vulkan validation layers.
2024-10-28 17:59:18 +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