Commit Graph

1077 Commits

Author SHA1 Message Date
Giovanni Mascellani
e99b29d203 tests/hlsl: Test the default denormalized mode. 2025-12-02 14:14:12 +01:00
Conor McCarthy
cb8da3125b vkd3d: Implement sampler min/max reduction filtering. 2025-11-26 16:06:24 +01:00
Henri Verbeet
dc7cdec9a5 tests/hlsl: Add a sampler min/max reduction filtering test.
The Metal runner could in principle support this feature using
MTLSamplerDescriptor.reductionMode, but that requires macOS 26.0/Tahoe,
which is newer than my current setup.
2025-11-26 16:06:24 +01:00
Giovanni Mascellani
2215117d72 tests/shader_runner_vulkan: Support explicit descriptor mapping. 2025-11-25 20:19:54 +01:00
Francisco Casas
41c593ef46 tests/hlsl: Test clip/cull distance semantics as arrays.
Arrays are allowed for clip/cull distance semantics. Their maximum size
is 2 since that's the maximum amount of registers allowed for clip/cull
distances.

Indirect addressing of these arrays is allowed on shader model 6.

These tests are introduced after the transformation of clip/cull
input/outputs into arrays in vsir since otherwise they segfault.
2025-11-25 19:58:24 +01:00
Francisco Casas
0dabfdee63 vkd3d-shader/ir: Transform clip/cull inputs/outputs into arrays.
Takes care of transforming clip/cull system values from the Direct3D
convention of 2 4-component registers, into the SPIR-V/GLSL convention
of 8-element scalar float arrays.

This fixes SPIR-V validation errors in clip-cull-distance.shader_test,
as well as segfaults on Mesa 25.1.1-arch1.2 if those shaders are
executed regardless.

We create indexable temporaries of the appropriate size, and replace
accesses to clip/cull I/O signature elements with accesses to those
temporaries. The existing clip/cull signature elements are then replaced
with new scalar signature element arrays, and we copy the contents of
those I/O signature elements to/from the corresponding temporaries at
the start/end of the vsir program.

It is worth pointing out that the current implementation assumes that
every instance of the control point phase of a hull shader only writes
to the output registers of its control point, given by
vOutputControlPointID, and not to other control points. Shader
compilation will fail if that constraint is violated.
2025-11-25 19:49:11 +01:00
Francisco Casas
e23b3c84f6 tests/hlsl: Test clip distance semantic indexes above the 0-1 range. 2025-11-25 15:54:40 +01:00
Francisco Casas
583016e550 tests/hlsl: Test clip/cull distance inputs. 2025-11-25 15:50:51 +01:00
Henri Verbeet
3431c006ae tests/hlsl: Avoid sampling on texel edges in ps1-projection.shader_test.
In the projected case, (1.2, 0.5) divided by 2.0 results in (0.6, 0.25) as
effective coordinates. The 0.25 y-coordinate is well within the second row of
texels; that's fine. On the other hand, the 0.6 x-coordinate falls right
between the third and fourth column of texels. The test expects the fourth
column to be selected, but that's very fragile: neither 1.2 nor 0.6 can be
exactly represented as a 32-bit floating-point value, and it only takes a
single ulp to push things to the other side of the edge.
2025-11-24 18:54:54 +01:00
Giovanni Mascellani
f47f712164 tests/hlsl: Test SM6.6 dynamic resources. 2025-11-24 17:38:14 +01:00
Anna (navi) Figueiredo Gomes
13ee6d74ad vkd3d-shader/hlsl: Store statically initialized constant scalars/vectors in ctx->static_initializers.
Constant numeric local variables can be used in places were literals are
expected if they're initialized with a static expression.

Storing such constant in ctx->static_initializers allows copy-prop to
handle such cases properly.
2025-11-24 17:09:15 +01:00
Anna (navi) Figueiredo Gomes
4a8eabf517 tests/hlsl: Add const scalar array dimension tests. 2025-11-24 17:05:45 +01:00
Elizabeth Figura
c50210f230 vkd3d-shader: Implement shader model 1.0-1.3 texture projection. 2025-11-20 18:15:15 +01:00
Giovanni Mascellani
ffbf0320ba tests/hlsl: Mark a denormalization mode test as todo on Intel.
It behaves the same as llvmpipe.
2025-11-17 15:20:47 +01:00
Anna (navi) Figueiredo Gomes
990be02cca vkd3d-shader/hlsl: Add a default value fail test with all allowed instructions.
Co-Authored-By: Francisco Casas <fcasas@codeweavers.com>
2025-11-17 15:15:47 +01:00
Giovanni Mascellani
7f377879fc vkd3d-shader/spirv: Clamp push constant CBV sizes to those of the push constant ranges backing them.
Otherwise invalid SPIR-V may be generated, because the CBV field in
"push_cb_struct" may end up overlapping with a subsequent one.
2025-11-12 15:24:30 +01:00
Giovanni Mascellani
2903831f79 tests/hlsl: Test using an SRV in combination with a CBV larger than the declared uniforms.
This appears to be valid on native (no validation message is
raised) but is not properly handled by vkd3d.
2025-11-12 15:19:33 +01:00
Henri Verbeet
4039168bca vkd3d-shader/hlsl: Consider scalars to be equivalent to 1-component vectors in hlsl_add_conditional(). 2025-11-12 15:12:30 +01:00
Giovanni Mascellani
7022bb57fc tests/shader_runner_metal: Implement explicit descriptor mapping. 2025-11-12 15:02:58 +01:00
Francisco Casas
5dc96ab8d6 tests/hlsl: Test which shader models allow FOG and PSIZE. 2025-11-10 15:54:18 +01:00
Shaun Ren
58d02da892 vkd3d-shader/hlsl: Use a bool type for "new_cond" in lower_conditional_block_discard_nz().
This fixes the assertion error

    "sm4_generate_vsir_instr_expr Failed assertion: dst_type->e.numeric.type == HLSL_TYPE_BOOL"

which occurs when compiling the following HLSL shader using the ps_4_0 target profile:

    uniform float4 x;
    uniform bool b;

    float4 main() : SV_Target
    {
        if (!b)
            clip(x.x);
        else
            clip(x.y);

        return x;
    }
2025-11-10 15:51:26 +01:00
Henri Verbeet
74ebd4621f vkd3d-shader/msl: Implement VSIR_OP_FIRSTBIT_HI. 2025-11-04 14:59:38 +01:00
Henri Verbeet
c576a09d57 vkd3d-shader/msl: Implement VSIR_OP_FIRSTBIT_LO. 2025-11-04 14:59:38 +01:00
Henri Verbeet
08026880d6 vkd3d-shader/msl: Implement VSIR_OP_COUNTBITS. 2025-11-04 14:59:38 +01:00
Henri Verbeet
f431cddc9f vkd3d-shader/msl: Implement support for VKD3DSPR_IMMCONSTBUFFER registers. 2025-11-04 14:59:38 +01:00