Commit Graph

6278 Commits

Author SHA1 Message Date
Francisco Casas
4dedcc5885 vkd3d-shader/hlsl: Also call dce before lowering deref paths. 2024-04-10 08:54:23 -05:00
Henri Verbeet
d1e16514d0 tests/test-driver: Avoid "head" with negative line count.
It's not supported on macOS, and not needed here.
2024-04-09 12:28:51 -05:00
Giovanni Mascellani
ca2f54e729 ci: Delimit building each commit with a collapsible section. 2024-04-09 12:28:10 -05:00
Francisco Casas
5ab1ef1cad vkd3d-shader/hlsl: Properly release string buffer on write_atan_or_atan2().
vkd3d_string_buffer_cleanup() doesn't do the same as
hlsl_release_string_buffer(). The former only frees the char array
inside the string buffer and not the string buffer itself.
2024-04-09 12:28:03 -05:00
Zebediah Figura
0e3377a1be vkd3d-shader/hlsl: Avoid using HLSL_CLASS_OBJECT without checking the base type.
As the diffstat shows, HLSL_CLASS_OBJECT does not really have much in common.
Resource types (TEXTURE, SAMPLER, UAV) sometimes behave similarly to each other,
but do not generally behave similarly to effect-specific types (string, shader,
state, view). Most consumers of HLSL_CLASS_OBJECT subsequently check the base
type anyway.

Hence we want to replace HLSL_TYPE_* with individual classes for object types.
As a first step, change the last few places that only check HLSL_CLASS_OBJECT.
2024-04-09 12:27:55 -05:00
Zebediah Figura
269cdad7b9 vkd3d-shader/hlsl: Consider any valid register reservation to invoke manual packing.
Regardless of the type of the variable.
2024-04-09 12:27:53 -05:00
Zebediah Figura
bdbf5e7d74 tests: Add more tests for manual packing. 2024-04-09 12:27:53 -05:00
Zebediah Figura
ce50c3a186 vkd3d-shader/hlsl: Use hlsl_type_is_resource() for unbounded array checks.
Not all objects can be unbounded descriptors.
2024-04-09 12:27:51 -05:00
Zebediah Figura
083a58767a tests: Test HLSL unbounded array syntax.
Change the shader in test_unbounded_samplers() to also test a nested array.
Note that the changed shader compiles to the same bytecode.
2024-04-09 12:27:49 -05:00
Zebediah Figura
c5f507ac38 vkd3d-shader/hlsl: Add SM5.1 shader target strings. 2024-04-09 12:27:47 -05:00
Zebediah Figura
843968cd63 vkd3d-shader/hlsl: Use hlsl_version_ge() when checking for unbounded arrays.
6.x also allows them.
2024-04-09 12:27:45 -05:00
Zebediah Figura
5fbd2708c0 vkd3d-shader/hlsl: Move shader version helpers to hlsl.h. 2024-04-09 12:27:43 -05:00
Conor McCarthy
e72c3bab71 vkd3d-shader/spirv: Ensure the data register is UINT in spirv_compiler_emit_store_tgsm(). 2024-04-09 12:27:30 -05:00
Conor McCarthy
dc99159dd8 vkd3d-shader/spirv: Bitcast if necessary in spirv_compiler_emit_store_dst_components(). 2024-04-09 12:27:29 -05:00
Conor McCarthy
85c8c6be4d vkd3d-shader/dxil: Support constexpr GEP. 2024-04-09 12:27:26 -05:00
Conor McCarthy
7d5e3713f9 vkd3d-shader/ir: Materialise SSAs to temps before lowering switch instructions. 2024-04-09 12:27:20 -05:00
Conor McCarthy
cfcd57209b vkd3d-shader/ir: Convert SSAs to temps only if the block of origin does not dominate all uses. 2024-04-09 12:27:19 -05:00
Conor McCarthy
1c61776c18 vkd3d-shader/spirv: Handle uint2 to double bitcast in spirv_compiler_emit_mov().
Necessary for MakeDouble if the dst is SSA.
2024-04-09 12:27:18 -05:00
Conor McCarthy
c8eb7e1c81 vkd3d-shader/spirv: Emit a uint result for RESINFO_UINT if the dst register is SSA. 2024-04-09 12:27:16 -05:00
Conor McCarthy
7bfc7410f2 vkd3d-shader/ir: Materialise phis to temps in the incoming blocks.
RADV converts temps to phi instructions, so converting phis to MOVC in
VSIR just translates back to phis feeding into a MOVC. This commit
eliminates the MOVC.
2024-04-09 12:27:15 -05:00
Francisco Casas
62bb12f322 vkd3d-shader/hlsl: Use LOGIC_AND instead of MUL in all(). 2024-04-09 12:27:09 -05:00
Francisco Casas
53e4d6eedb vkd3d-shader/hlsl: Use LOGIC_OR instead of BIT_OR in any().
Note that BIT_OR is not available for SM1 bools, so we must prefer
LOGIC_OR when possible.
2024-04-09 12:27:07 -05:00
Francisco Casas
2621fc9572 vkd3d-shader/ir: Add missing src swizzle in vsir_program_lower_texkills(). 2024-04-09 12:27:06 -05:00
Francisco Casas
808ec288cf tests: Add failing test for clip.shader_test in SM1.
We are not properly translating texkill to spir-v since it is only
considering the first component.
2024-04-09 12:27:04 -05:00
Francisco Casas
8fca801591 vkd3d-shader/tpf: Use the extra_bits field for _nz on discard. 2024-04-09 12:27:03 -05:00
Francisco Casas
3503145ced tests: Report missing signature element in openGL runner. 2024-04-09 12:27:03 -05:00
Francisco Casas
3a0a4b625f vkd3d-shader/hlsl: Merge HLSL_OP3_MOVC into HLSL_OP3_TERNARY. 2024-04-09 12:27:02 -05:00
Francisco Casas
8f6f875a59 vkd3d-shader/hlsl: Move lower of non-float expressions with the other SM1 passes. 2024-04-09 12:27:01 -05:00
Francisco Casas
19fd43214b vkd3d-shader/hlsl: Ensure that TERNARY condition is always bool.
Also, properly casting it to float in lower_ternary() for SM1
avoids creating ABS and NEG on bool types.
2024-04-09 12:26:59 -05:00
Giovanni Mascellani
9c0d04c862 ci: Build the macOS image each time the Linux image is built. 2024-04-04 22:22:06 +02:00
Henri Verbeet
4f589356f1 tests: Free the shader blobs once we're done with them in test_create_pipeline_state(). (Valgrind). 2024-04-04 22:20:35 +02:00
Henri Verbeet
73996c9941 vkd3d-dxbc: Allow the section to extract to be specified by tag. 2024-04-04 22:20:30 +02:00
Henri Verbeet
6c3b87bed0 vkd3d-dxbc: Implement extracting section data. 2024-04-04 22:20:30 +02:00
Henri Verbeet
806afd7b50 vkd3d-dxbc: Free the blob if parsing it failed. 2024-04-04 22:20:30 +02:00
Henri Verbeet
8f529cd0ae vkd3d-dxbc: Introduce a helper function to apply actions. 2024-04-04 22:20:30 +02:00
Henri Verbeet
143b15fc47 vkd3d-dxbc: Introduce a helper function to handle ACTION_TYPE_EMIT. 2024-04-04 22:20:30 +02:00
Henri Verbeet
2712a79c55 vkd3d-dxbc: Close output files after writing them. 2024-04-04 22:20:30 +02:00
Stefan Dösinger
8653ce17cf tests: Add tests for creating D3D12ShaderCacheSession objects. 2024-04-04 22:19:46 +02:00
Stefan Dösinger
7c93b5070f vkd3d: Validate and store shader cache session descriptors. 2024-04-04 22:19:46 +02:00
Stefan Dösinger
fb87a72497 vkd3d: Add an ID3D12ShaderCacheSession stub. 2024-04-04 22:19:46 +02:00
Stefan Dösinger
d5c89051dd vkd3d: Add ID3D12Device9 interface stubs. 2024-04-04 22:19:46 +02:00
Giovanni Mascellani
a278f32d3f vkd3d-shader/ir: Synthesize selection constructs from conditional jumps. 2024-04-04 22:19:19 +02:00
Giovanni Mascellani
0d13b6afe9 vkd3d-shader/ir: Remove trailing `continue's. 2024-04-04 22:19:18 +02:00
Giovanni Mascellani
d8414302e8 vkd3d-shader/ir: Move `continue's to the false branch when possible. 2024-04-04 22:19:16 +02:00
Nikolay Sivov
4b0a328a2b vkd3d-shader/hlsl: Allow 'export' modifier on functions.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-04-03 22:24:15 +02:00
Giovanni Mascellani
636d8d3850 ci: Run tests on llvmpipe from Mesa 24.0.3. 2024-04-03 22:24:13 +02:00
Giovanni Mascellani
b3ce73984d ci: Make llvmpipe from Mesa 24.0.3 available in the CI image. 2024-04-03 22:24:13 +02:00
Giovanni Mascellani
e6c20361ea vkd3d-shader/ir: Drop a useless helper. 2024-04-03 22:23:08 +02:00
Giovanni Mascellani
9aff65c6d2 vkd3d-shader/ir: Open a loop when visiting the loop header.
Not when making the loop header available, which is too early and
might lead to open too many loops at once.
2024-04-03 22:23:06 +02:00
Nikolay Sivov
e1e6367210 vkd3d-shader/fx: Add an option to include empty buffers in the effect binary.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-04-02 23:10:42 +02:00