Commit Graph

1742 Commits

Author SHA1 Message Date
Victor Chiletto
abbcf0461f vkd3d-shader/hlsl: Reserve register slots for unused buffers. 2024-07-03 17:09:16 -03:00
Victor Chiletto
da36a447b8 vkd3d-shader/hlsl: Validate cbuffer register allocations. 2024-07-03 17:09:16 -03:00
Victor Chiletto
27414ef928 vkd3d-shader/hlsl: Do not immediately fail parsing for malformed 'b' register reservations.
This is a fxc quirk. In most cases, this throws an error, but for global
variables it's completely ignored.
2024-07-03 17:09:16 -03:00
Victor Chiletto
e13eb64d4c vkd3d-shader/hlsl: Support expressions as register offsets. 2024-07-03 14:05:58 -03:00
Victor Chiletto
d11c777092 tests: Add more register reservations tests. 2024-07-03 14:05:58 -03:00
Yuxuan Shui
ccb6150aab vkd3d-shader/hlsl: Implement storing to a swizzled matrix. 2024-06-20 12:39:46 +02:00
Elizabeth Figura
8d946f3c20 tests: Add another combined sampler test.
Shader provided by Francisco Casas.
2024-06-18 13:01:31 -05:00
Elizabeth Figura
669e85171e tests: Run combined-samplers.shader_test on sm1 as well.
Now that we have if() this is easier.
2024-06-18 13:00:59 -05:00
Elizabeth Figura
d3ba810c98 tests: Stop probing all pixels when drawing a uniform colour.
This is simply unnecessary and wastes time.

As part of this, simply remove the "all" directive. Only for a couple of tests
is it even potentially interesting to validate all pixels (e.g.
nointerpolation.shader_test), and for those "all" is replaced with an explicit
(0, 0, 640, 480) rect.

In all other cases we just probe (0, 0).
2024-06-13 23:55:31 +02:00
Giovanni Mascellani
3ad4d984ad tests: Mark some root signature unbounded range failures as todo on MoltenVK. 2024-06-13 23:24:22 +02:00
Conor McCarthy
da1d96f708 tests/shader-runner: Create a new runner object for the shader model 6 tests.
If cleaning up the old runner is not completed, descriptors for
destroyed resources may remain on the heap.
2024-06-11 15:56:43 +02:00
Conor McCarthy
7534b88a15 tests/shader-runner: Set the correct flag and format for raw UAVs. 2024-06-11 15:55:48 +02:00
Conor McCarthy
47d077e5ce vkd3d: Interpret a null vertex buffer 'views' pointer as a null buffer. 2024-06-11 15:52:28 +02:00
Conor McCarthy
c3ea43b619 tests/d3d12: Test a null vertex buffer 'views' pointer on multiple slots. 2024-06-11 15:52:28 +02:00
Conor McCarthy
589ed1e358 vkd3d: Allow block compressed textures to have unaligned width and height. 2024-06-11 15:51:34 +02:00
Conor McCarthy
9244f2b536 tests/d3d12: Check for unaligned block texture support in test_create_committed_resource(). 2024-06-11 15:51:33 +02:00
Nikolay Sivov
ba18035260 vkd3d-shader/d3dbc: Write load instruction for tex2Dbias().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:50:34 +02:00
Nikolay Sivov
ccbe36fb8d vkd3d-shader/hlsl: Implement tex2Dbias().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56701
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:50:34 +02:00
Elizabeth Figura
f0cd35b40d tests: Add reflection tests for register space. 2024-06-11 15:49:30 +02:00
Elizabeth Figura
33e5553158 vkd3d-shader/hlsl: Write SM5.1 binding reflection data. 2024-06-11 15:49:30 +02:00
Elizabeth Figura
4355e6ca69 vkd3d-shader/hlsl: Allocate register spaces for objects. 2024-06-11 15:49:30 +02:00
Conor McCarthy
9b070edf01 vkd3d-shader/spirv: Implement the QUAD_READ_LANE_AT instruction. 2024-06-11 15:48:21 +02:00
Conor McCarthy
c298493e4f vkd3d-shader/spirv: Implement the QUAD_READ_ACROSS_* instructions. 2024-06-11 15:48:21 +02:00
Francisco Casas
f5bfa728eb vkd3d-shader/hlsl: Reorder default values for matrices for SM4.
Default value initializers behave differently than regular initializers
for matrices on SM4 profiles.

While regular initializers assign the rhs elements in reading-order
(completing one row at the time), default initializers assing the rhs
elements in Chinese reading-order (completing one column at the time).

So after lowering a default value to a constant, the index of the
component to which this default value is stored is computed to meet
this expectation. This can be done because the default values.

For reference, compiling this shader:

    row_major int2x3 m = {1, 2, 3, 4, 5, 6};

    float4 main() : sv_target
    {
        return float4(m[0][0], 99, 99, 99);
    }

gives the following buffer definition:

    // cbuffer $Globals
    // {
    //
    //   row_major int2x3 m;                // Offset:    0 Size:    28
    //      = 0x00000001 0x00000003 0x00000005 0x00000000
    //        0x00000002 0x00000004 0x00000006
    //
    // }

Given that the matrix is column-major, m's default value is actually
{{1, 3, 5}, {2, 4, 6}}, unlike the {{1, 2, 3}, {4, 5, 6}} one would
expect in a regular initializer.

SM1 profiles assign the elements in regular reading order.
2024-06-11 15:46:40 +02:00
Francisco Casas
ade3daa311 tests: Test matrix default value initializers. 2024-06-11 15:46:40 +02:00
Francisco Casas
253c994155 vkd3d-shader/tpf: Write default values for SM4. 2024-06-11 15:46:40 +02:00
Francisco Casas
b44a25ce19 tests: Test default values using reflection. 2024-06-11 15:46:40 +02:00
Francisco Casas
099a64aeb2 vkd3d-shader/hlsl: Initialize default values with braceless initializers.
It is hard to initialize default values on add_assignment() and calling
add_assignment() for initializers is not really necessary: the only
thing we need from it the implicit cast.
2024-06-11 15:46:40 +02:00
Francisco Casas
e8dbc36bd2 vkd3d-shader/hlsl: Record default values for uniforms and constant buffers. 2024-06-11 15:46:40 +02:00
Nikolay Sivov
727aacca18 tests: Add a few tests for the NULL value.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:44 +02:00
Nikolay Sivov
163aaf9729 tests: Add some basic tests for ConstantBuffer type.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:39 +02:00
Nikolay Sivov
ea177a7750 vkd3d-shader/hlsl: Handle "unsigned int" type.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:29 +02:00
Henri Verbeet
36c123c005 Release 1.12. 2024-05-29 22:05:28 +02:00
Henri Verbeet
9693271dcf tests: Rename VKD3D_TESTS_SKIP_DXC to VKD3D_TEST_SKIP_DXC.
For consistency with the other VKD3D_TEST_* environment variables.
2024-05-27 21:08:14 +02:00
Giovanni Mascellani
9a3fa67c1f tests: Skip a test that freezes the GPU on NVIDIA. 2024-05-27 21:07:43 +02:00
Victor Chiletto
105ef28273 vkd3d-shader/preproc: Treat CR as whitespace. 2024-05-23 23:11:58 +02:00
Giovanni Mascellani
a64426edf9 tests: Check device support for all the 16 bit image formats.
Otherwise the test crash on llvmpipe.
2024-05-22 22:15:32 +02:00
Victor Chiletto
fa5708d3b5 vkd3d-shader/hlsl: Fix XOR assign operator lexing. 2024-05-22 22:15:20 +02:00
Victor Chiletto
d8d2414132 tests/hlsl: Add a test for the XOR assign operator. 2024-05-22 22:15:19 +02:00
Conor McCarthy
7d3c286e9b tests/d3d12: Add a separate null 'views' pointer test in test_null_vbv(). 2024-05-22 22:15:14 +02:00
Conor McCarthy
fd416b492c tests/d3d12: Use get_cpu_sampler_handle() for the sampler heap in test_unbounded_samplers(). 2024-05-22 22:15:12 +02:00
Conor McCarthy
cc1877dadb tests/d3d12: Ensure stream output BufferFilledSizeLocation is always valid. 2024-05-22 22:15:11 +02:00
Conor McCarthy
42d369d595 tests/d3d12: Check UnalignedBlockTexturesSupported when testing GetCopyableFootprints(). 2024-05-22 22:15:09 +02:00
Conor McCarthy
0daba96025 tests/d3d12: Test format D32_FLOAT_S8X24_UINT in test_get_copyable_footprints(). 2024-05-22 22:15:07 +02:00
Conor McCarthy
f6db3330c8 tests/d3d12: Check the correct depth/stencil plane format and alignment in test_get_copyable_footprints(). 2024-05-22 22:15:05 +02:00
Conor McCarthy
23881bad7a tests/d3d12: Set the descriptor heaps for the draw call in test_graphics_uav_counters(). 2024-05-22 22:15:04 +02:00
Conor McCarthy
dcc715b4d1 tests/d3d12: Do not clear UAVs via a structured view. 2024-05-22 22:15:02 +02:00
Conor McCarthy
42eee382ec tests/d3d12: Do not test 3D depth textures in test_get_copyable_footprints(). 2024-05-22 22:15:00 +02:00
Conor McCarthy
bb2a79a8fb tests/d3d12: Do not test a typed UAV in test_atomic_instructions().
A shader typed UAV declaration must not map to a root descriptor UAV. We
now have shader runner tests for typed UAV atomics, so there is no need
to modify this test to use a descriptor heap.
2024-05-22 22:14:58 +02:00
Francisco Casas
061dc39036 vkd3d-shader/hlsl: Also lower matrix swizzles and index loads in const passes. 2024-05-15 21:17:51 +02:00
Francisco Casas
dff2f746bc tests: Test complex array size expression. 2024-05-15 21:17:51 +02:00
Francisco Casas
58a6db5589 tests: Test default values for constant buffer variables. 2024-05-15 21:17:49 +02:00
Francisco Casas
499b44a193 tests: Test default values for uniform variables. 2024-05-15 21:17:47 +02:00
Conor McCarthy
9e57039fce vkd3d-shader/dxil: Handle SV_ClipDistance and SV_CullDistance. 2024-05-14 20:44:22 +02:00
Conor McCarthy
01af0f94bb tests/hlsl: Add a test for SV_ClipDistance. 2024-05-14 20:44:20 +02:00
Conor McCarthy
4f50af4c83 vkd3d-shader/dxil: Handle SV_Coverage out. 2024-05-14 20:44:18 +02:00
Conor McCarthy
e4724b4635 tests/hlsl: Add a test for SV_Coverage out. 2024-05-14 20:44:16 +02:00
Conor McCarthy
e1c774bfeb vkd3d-shader/spirv: Implement the WAVE_READ_LANE_FIRST instruction. 2024-05-14 20:44:10 +02:00
Conor McCarthy
cb9b10bf4d tests/hlsl: Clear the RTV before the WaveReadLaneFirst() test. 2024-05-14 20:44:08 +02:00
Conor McCarthy
936d8e4f61 vkd3d-shader/spirv: Implement the WAVE_READ_LANE_AT instruction. 2024-05-14 20:44:04 +02:00
Conor McCarthy
5790056c44 tests/hlsl: Add a test for WaveReadLaneAt() with a non-uniform index. 2024-05-14 20:44:00 +02:00
Conor McCarthy
ea5624e5e8 vkd3d-shader/dxil: Emit bool inputs and outputs as uint.
DXIL reads/writes uint for these.
2024-05-13 22:27:13 +02:00
Francisco Casas
28d267b7c0 vkd3d-shader/hlsl: Allocate SM1 numeric uniforms in decreasing bind count. 2024-05-13 22:26:21 +02:00
Francisco Casas
f548644222 vkd3d-shader/hlsl: Only allocate numeric bind count for SM1 numeric uniforms.
Unless they have register reservations, in which case the whole
variable is still reserved.
2024-05-13 22:26:08 +02:00
Francisco Casas
e0a801e796 vkd3d-shader/hlsl: Improve tracking of used components running DCE before.
track_object_components_usage() had to be improved to also
register derefs on resource stores.
It was not doing it because it assumed that for every resource store
there was a resource load already, which was true, before calling DCE.
2024-05-13 22:26:05 +02:00
Francisco Casas
657e460d11 vkd3d-shader/hlsl: Allocate unused variables with register reservations on SM1. 2024-05-13 22:26:03 +02:00
Francisco Casas
7b3644d9f2 tests: Test SM1 const register allocation with relative addressing. 2024-05-13 22:26:03 +02:00
Francisco Casas
b56ae0f1c8 tests: Test SM1 constant register allocation with reservations. 2024-05-13 22:26:03 +02:00
Nikolay Sivov
9dcb74341f tests: Test SM1 constant register allocation with a row_major matrix.
Co-authored-by: Francisco Casas <fcasas@codeweavers.com>
2024-05-13 22:26:01 +02:00
Francisco Casas
7debe25a8b tests: Test SM1 constant register allocation. 2024-05-13 22:26:01 +02:00
Conor McCarthy
fb20639eb4 vkd3d: Return E_INVALIDARG if the requested shader model is unknown. 2024-05-13 11:50:33 +02:00
Conor McCarthy
d17956ced8 vkd3d: Return a shader model no higher than the requested one for D3D12_FEATURE_SHADER_MODEL. 2024-05-13 11:50:32 +02:00
Conor McCarthy
677c23f1fe tests: Add tests for D3D12_FEATURE_SHADER_MODEL. 2024-05-13 11:50:32 +02:00
Conor McCarthy
77259da1ad vkd3d-shader/spirv: Implement the WAVE_PREFIX_BIT_COUNT instruction. 2024-05-13 11:50:23 +02:00
Conor McCarthy
065ef0c5e4 vkd3d-shader/spirv: Implement the WAVE_IS_FIRST_LANE instruction. 2024-05-13 11:50:21 +02:00
Conor McCarthy
feef2577ef vkd3d-shader/spirv: Implement the WAVE_ALL_BIT_COUNT instruction. 2024-05-13 11:50:19 +02:00
Conor McCarthy
962096f179 vkd3d-shader/dxil: Implement DX intrinsics EmitStream, CutStream and EmitThenCutStream. 2024-05-08 21:08:16 +02:00
Conor McCarthy
00b0b8d65c tests/hlsl: Add a geometry shader test. 2024-05-08 21:08:13 +02:00
Conor McCarthy
e6c802e713 tests/shader-runner: Free the hull and domain shader source code. 2024-05-08 21:08:11 +02:00
Zebediah Figura
cefd6f9de6 vkd3d-utils: Implement ID3D12ShaderReflection::GetResourceBindingDesc(). 2024-05-06 22:12:50 +02:00
Zebediah Figura
694d39ffe6 tests: Test bounds checking in ID3D12ShaderReflection. 2024-05-06 22:12:50 +02:00
Zebediah Figura
7b3c47ba2e vkd3d-shader/tpf: Write the field offset in bytes. 2024-05-06 22:12:48 +02:00
Conor McCarthy
cfcc789b42 vkd3d-shader/spirv: Implement the WAVE_OP_* instructions. 2024-05-06 22:12:27 +02:00
Conor McCarthy
fef5760af0 vkd3d-shader/spirv: Implement the WAVE_ACTIVE_BIT_* instructions. 2024-05-06 22:12:24 +02:00
Conor McCarthy
1c49b3a779 vkd3d-shader/spirv: Implement the WAVE_ACTIVE_BALLOT instruction. 2024-05-06 22:12:21 +02:00
Henri Verbeet
62a512c4f8 tests/shader_runner: Get rid of some redundant "| glsl" conditions.
We don't run shader model 6 GLSL tests.
2024-05-02 22:19:30 +02:00
Conor McCarthy
95489899be vkd3d-shader/spirv: Handle the WAVE_ANY_TRUE instruction. 2024-05-02 22:19:02 +02:00
Conor McCarthy
78f2d2936d vkd3d-shader/spirv: Handle the WAVE_ACTIVE_ALL_EQUAL instruction. 2024-05-02 22:18:57 +02:00
Conor McCarthy
c770efc530 vkd3d-shader/spirv: Handle the WAVELANEINDEX register. 2024-05-02 22:18:54 +02:00
Conor McCarthy
29786d7efb tests/shader-runner: Add a 'require' directive for wave ops. 2024-05-02 22:18:53 +02:00
Conor McCarthy
9315bcb6a1 tests/shader-runner: Skip shader model 6.0 tests if the device does not support them. 2024-05-02 22:18:52 +02:00
Conor McCarthy
fd590c2593 vkd3d: Initialise wave ops feature options.
Based in part on a vkd3d-proton patch by Philip Rebohle.
2024-05-02 22:18:50 +02:00
Giovanni Mascellani
5e6bcc4f9d tests: Test wave reconvergence after selections and loops.
Tangled instructions, like wave operations, are sensitive to how the
invocations in a wave reconverge after having diverged. Here we test
for some of those scenarios.
2024-04-30 22:59:44 +02:00
Conor McCarthy
127bcf90e4 vkd3d-shader/dxil: Implement DX intrinsic Coverage. 2024-04-30 16:32:10 +02:00
Conor McCarthy
c2a787181f tests/hlsl: Add SV_Coverage tests. 2024-04-30 16:32:10 +02:00
Conor McCarthy
36c76e1557 vkd3d-shader/dxil: Handle SV_PrimitiveId. 2024-04-30 16:32:10 +02:00
Conor McCarthy
eef0f7c29e vkd3d-shader/dxil: Handle SV_InstanceId. 2024-04-30 16:32:10 +02:00
Conor McCarthy
0bd6083785 tests/hlsl: Add an SV_InstanceId test. 2024-04-30 16:32:10 +02:00
Conor McCarthy
fb730b11cf vkd3d-shader/dxil: Handle constexpr pointer cast. 2024-04-30 16:31:44 +02:00
Conor McCarthy
2fc32c3d1d tests/hlsl: Add a test for constexpr pointer cast. 2024-04-30 16:31:43 +02:00