Commit Graph

5318 Commits

Author SHA1 Message Date
675d7b8cb6 vkd3d-shader/hlsl: Remove a redundant type check.
We already perform an implicit cast per component in initialize_var_components().
2024-04-02 23:09:33 +02:00
d72d5c35d1 vkd3d-shader/dxil: Implement DX intrinsics Dot2, Dot3 and Dot4. 2024-04-02 23:09:28 +02:00
2909a5aacc vkd3d-shader/dxil: Implement DX intrinsic MakeDouble. 2024-04-02 23:09:23 +02:00
cf6e518f1e tests/hlsl: Add tests for asdouble(). 2024-04-02 23:09:20 +02:00
b1eaf8327b tests/test-driver: Print line where vkd3d_unreachable() was hit.
With this, a test that fails because vkd3d_unreacheable() was hit, will
now display the error line.

    FAIL: tests/hlsl/some-test.shader_test
       (SM4.0-SM5.1)OpenGL/SPIR-V 43[XF] 79[XF] 126[XF] 149[XF] 159[XF]
       [AF] vkd3d/libs/vkd3d-shader/hlsl.c:246: Aborting, reached unreachable code.
       [SIGABRT] Aborted (core dumped)
2024-03-27 22:37:52 +01:00
9a90b9591c tests/test-driver: Display [SIGABRT] and [SIGSEGV] tags.
Some times the test can be aborted for reasons others than failed
assertions, such as segmentation faults or reaching unreacheable code.

This commit adds purple tags to the test driver for visual clarity.
2024-03-27 22:37:48 +01:00
11ee92ed7e vkd3d-shader/dxil: Implement DX intrinsic Discard. 2024-03-27 22:37:42 +01:00
8d947ce868 vkd3d-shader/spirv: Support bool source in spirv_compiler_emit_discard(). 2024-03-27 22:37:40 +01:00
6b6e4bc212 vkd3d-shader: Add a compile option to control whether implicit truncation warnings are printed.
d3dcompiler and d3dx9 versions before 42 don't emit this error; this will be
necessary to emulate that behaviour.

Other warnings exist that are introduced in different d3dcompiler versions,
although there are not very many distinct HLSL warnings to begin with.

We could of course group all these together under a single compiler option, but
I find that using separate top-level options is unilaterally friendlier to an
API consumer, and simpler to implement as well. It also in some sense maps
conceptually to e.g. "-Wno-implicit-conversion".
2024-03-27 22:37:34 +01:00
b382d1843d vkd3d-shader/fx: Accept texture types when writing fx_2_0 effects.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:29 +01:00
b09f919673 vkd3d-shader/hlsl: Treat "texture" type name as case-insensitive.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:28 +01:00
17dc23269e vkd3d-shader/fx: Handle "uint" type for fx_2_0 parameters.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:27 +01:00
9117629e35 vkd3d-shader/fx: Handle "half" type for fx_2_0 parameters.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:25 +01:00
3fdf674a4d tests: Rename effect test files to make them easier to find.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:25 +01:00
88d9cff407 vkd3d-shader/fx: Set initial object count to 1 for fx_2_0.
This is used for the object table at runtime. Object variable index is 1-based.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:24 +01:00
501aed43f3 vkd3d-shader/fx: Zero-pad strings when aligning them for fx_2_0.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:23 +01:00
228d54efff vkd3d-shader/fx: Mark shared variables as such for fx_2_0 effects.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:21 +01:00
cfa63da3f1 vkd3d-shader: Adjust "child-effect" option documentation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-03-27 22:37:21 +01:00
11e7265815 vkd3d-shader/spirv: Throw compiler error on unrecognized register.
This codepath path is currently triggered when transpiling d3dbc shaders
that use vPos (or other of these special registers).

While vPos gets added to the input signature and gets assigned an INPUT
register, the registers in the shader instructions are still of
VKD3DSPR_MISCTYPE type and are not propperly mapped yet. This gives
invalid results.

Some SM1 tests must be set back to "todo" but they only work because, by
coincidence, we are assigning vPos the input register with index 0.
Propper mapping of these registers is still required.
2024-03-27 22:37:15 +01:00
172cb75872 vkd3d-shader/spirv: Implement VKD3DSIH_ABS. 2024-03-27 22:37:10 +01:00
9a222d2be1 vkd3d-shader/d3dbc: Implement HLSL_OP2_LOGIC_AND for SM1. 2024-03-27 22:37:09 +01:00
777bf772bf vkd3d-shader/d3dbc: Implement HLSL_OP2_LOGIC_OR for SM1. 2024-03-27 22:37:08 +01:00
a838f97e3f vkd3d-shader/hlsl: Cast to bool before applying LOGIC_NOT.
Before this commit, it is possible for one of the tests of
cf-cond-types.shader_test to pass a non-bool to LOGIC_NOT, which should
not be allowed.
2024-03-27 22:37:07 +01:00
ee5fc7e968 vkd3d-shader/hlsl: Support LOGIC_NOT for SM1. 2024-03-27 22:37:06 +01:00
90e8a541fb tests: Add tests for LOGIC_NOT on uniforms. 2024-03-27 22:37:06 +01:00