Nikolay Sivov
0cea4d352e
vkd3d-shader/hlsl: Handle uppercase regset names in register().
2023-04-19 20:45:48 +02:00
Zebediah Figura
d8ef0c69a8
vkd3d-shader/spirv: Do not declare resources as multisampled if the sample count is 1.
...
It is illegal to match a SPIR-V multisampled resource to a Vulkan resource which
is not multisampled. Vulkan considers a resource to be multisampled if its
sample count is greater than 1 (and SPIR-V does not care about the sample count).
This fixes validation errors in the case where the sample count does actually
match the resource. In order to provide correct behaviour when there is a
mismatch, or when the sample count is missing, we will need yet another
additional interface. In the absence of that it seems best to provide a best
guess.
This fixes a validation error with the not-yet-committed merge request 135, when
the d3d11 runner is run through Wine with the Vulkan backend.
2023-04-19 20:45:39 +02:00
Nikolay Sivov
dfe923ea1d
vkd3d-shader: Consistently pass location structure by pointer.
2023-04-19 20:45:31 +02:00
Conor McCarthy
0ce55e8b8e
vkd3d: Support 1D SRV.
2023-04-18 22:00:17 +02:00
Conor McCarthy
6db9ed14dc
vkd3d: Support 1D UAV.
2023-04-18 22:00:17 +02:00
Conor McCarthy
7d0aaea4f8
tests: Test 1D UAV clear.
2023-04-18 22:00:01 +02:00
Zebediah Figura
7ee66351c8
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_if().
2023-04-18 21:59:49 +02:00
Zebediah Figura
50f0ae1b21
vkd3d-shader/hlsl: Pass hlsl_block pointers to hlsl_new_if().
2023-04-18 21:59:45 +02:00
Zebediah Figura
5a3fe1609b
vkd3d-shader/hlsl: Initialize the block in clone_block().
2023-04-18 21:59:44 +02:00
Zebediah Figura
733141720a
vkd3d-shader/hlsl: Introduce a hlsl_block_cleanup() helper.
2023-04-18 21:59:42 +02:00
Zebediah Figura
dc7514afc9
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_float_constant().
2023-04-18 21:59:39 +02:00
Zebediah Figura
b23ef3ca3b
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_cast() and hlsl_new_copy().
2023-04-18 21:59:37 +02:00
Zebediah Figura
1bf3aa9275
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_bool_constant().
2023-04-18 21:59:34 +02:00
Zebediah Figura
0654d88edd
vkd3d-shader/hlsl: Allow VPOS and VFACE to be specified in sm3 pixel shaders.
...
We were previously (accidentally) rejecting them because they didn't have a
usage.
2023-04-18 21:59:22 +02:00
Zebediah Figura
b19105eaeb
vkd3d-shader/hlsl: Do not write DCL instructions for ps_1_* shaders.
2023-04-18 21:59:17 +02:00
Zebediah Figura
99d413206b
vkd3d-shader/hlsl: Map ps_1_* color and texcoord semantics to registers.
2023-04-18 21:59:15 +02:00
Zebediah Figura
98e2461392
vkd3d-shader/hlsl: Sort only uniforms by name in the sm1 backend.
2023-04-18 21:59:13 +02:00
Zebediah Figura
8ed7437708
vkd3d-shader/hlsl: Evaluate index before array.
...
Co-authored-by: Francisco Casas <fcasas@codeweavers.com>
2023-04-13 23:05:43 +02:00
Francisco Casas
af1aa63ace
vkd3d-shader/hlsl: Support column-major matrix indexing in the lhs.
2023-04-13 23:05:41 +02:00
Francisco Casas
dc2a34824d
vkd3d-shader/hlsl: Always load from a synthetic copy in add_load_component().
2023-04-13 23:05:39 +02:00
Francisco Casas
82ff408451
vkd3d-shader/hlsl: Remove add_load_index().
2023-04-13 23:05:34 +02:00
Francisco Casas
5c285adc6b
vkd3d-shader/hlsl: Use hlsl_ir_index for array and record access.
...
From this point on, it is no longer true that only hlsl_ir_loads can
return objects, because an object can also come from chain of
hlsl_ir_indexes that ends in an hlsl_ir_load.
The lower_index_loads pass takes care of lowering all hlsl_ir_indexes
into hlsl_ir_loads.
For this reason, hlsl_resource_load_params now expects both the resource
as the sampler to be just an hlsl_ir_node pointer instead of a pointer
to a more specific hlsl_ir_load.
2023-04-13 23:05:32 +02:00
Francisco Casas
741c9e5893
vkd3d-shader/hlsl: Introduce hlsl_ir_index.
...
This node type is intended for use during parse-time.
While we parse an indexing expression such as "a[3]", we don't know if
it will end up as part of an expression (in which case it must be folded
into a load) or it is for the lhs of a store (in which case it must be
folded into the store's deref).
2023-04-13 23:05:25 +02:00
Francisco Casas
8cd3defe0d
tests: Test indexing of non-loads.
2023-04-13 23:05:25 +02:00
Zebediah Figura
526b025c88
tests: Test side effects on indexes.
...
Co-authored-by: Francisco Casas <fcasas@codeweavers.com>
2023-04-13 23:05:21 +02:00
Francisco Casas
1b1978f684
tests: Test matrix indexing on the lhs.
2023-04-13 23:05:21 +02:00
Francisco Casas
9dd99a084d
tests: Test multiple calls to the same function in initializers.
2023-04-13 23:05:21 +02:00
Francisco Casas
0ceecd1225
vkd3d-shader/hlsl: Fix numeric offset of object fields.
2023-04-13 23:05:07 +02:00
Francisco Casas
86893bc7f4
tests: Test numeric offsets with object fields.
2023-04-13 23:05:07 +02:00
Nikolay Sivov
e4503ad80f
tests: Add a test for SV_IsFrontFace.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:05:00 +02:00
Nikolay Sivov
a496e3a8ba
tests: Disable culling in shader runners.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:05:00 +02:00
Nikolay Sivov
ca59a3c35b
vkd3d-shader/hlsl: Handle SV_IsFrontFace semantic.
2023-04-13 23:04:58 +02:00
Nikolay Sivov
a1bd4e080e
vkd3d-shader/hlsl: Support log() intrinsic.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:04:44 +02:00
Nikolay Sivov
210caa931d
vkd3d-shader/hlsl: Support log10() intrinsic.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:04:42 +02:00
Nikolay Sivov
49b63fbeba
vkd3d-shader/hlsl: Support log2() intrinsic.
2023-04-13 23:04:40 +02:00
Nikolay Sivov
c93dac3620
vkd3d-shader/hlsl: Write 'log' instruction for SM1.
2023-04-13 23:04:37 +02:00
Henri Verbeet
0c05f2409c
vkd3d-shader/sm4: Get rid of shader_sm4_is_end().
2023-04-12 21:54:57 +02:00
Henri Verbeet
1e448b0b71
vkd3d-shader/sm4: Pass a vkd3d_shader_sm4_parser structure to shader_sm4_read_instruction().
2023-04-12 21:54:56 +02:00
Henri Verbeet
1b7b694190
vkd3d-shader/sm1: Pass a vkd3d_shader_sm1_parser structure to shader_sm1_is_end().
2023-04-12 21:54:55 +02:00
Henri Verbeet
df6a34e1bd
vkd3d-shader/sm1: Pass a vkd3d_shader_sm1_parser structure to shader_sm1_read_instruction().
2023-04-12 21:54:54 +02:00
Henri Verbeet
09566e2c25
vkd3d-shader: Get rid of the "ptr" field from struct vkd3d_shader_parser.
...
This is an implementation detail.
2023-04-12 21:54:53 +02:00
Henri Verbeet
c4d307a08d
vkd3d-shader: Get rid of the "instruction_idx" field from struct vkd3d_shader_parser.
...
This is unused now.
2023-04-12 21:54:51 +02:00
Conor McCarthy
98b5e2c6e0
vkd3d-shader/ir: Insert hull shader control point input declarations if no control point phase is defined.
...
The SPIR-V backend will emit a default control point phase. Inserting
inputs into the IR allows handling of declarations via the usual path
instead of an ad hoc implementation which may not match later changes
to input handling.
2023-04-12 21:54:28 +02:00
Conor McCarthy
14295a224d
vkd3d-shader/ir: Normalise control point phase output registers to include the control point id.
...
In SPIR-V the address must include the invocation id, but in TPF it
is implicit. Move the register index up one slot and insert an
OUTPOINTID relative address.
2023-04-12 21:54:27 +02:00
Zebediah Figura
94ff9ba5e7
tests: Add a test for readback map stability.
...
Resident Evil 2 accesses a resource immediately after unmapping it.
2023-04-10 21:00:26 +02:00
Philip Rebohle
c8a33431e3
vkd3d: Persistently map host-visible heaps on creation.
2023-04-10 21:00:17 +02:00
Zebediah Figura
616c4bf51f
vkd3d-shader/hlsl: Always align section sizes.
...
This fixes disassembly using native D3DDisassemble() of shaders generated with vkd3d-shader.
Fixes: d6d9aab31c
2023-04-06 17:52:16 +02:00
Zebediah Figura
a60c47ff39
vkd3d-shader: Explicitly align the size in bytecode_get_next_offset() and rename it accordingly.
2023-04-06 17:52:16 +02:00
Zebediah Figura
6783524613
vkd3d-common: Make some global string variables const.
2023-04-06 17:52:08 +02:00
Zebediah Figura
1514755043
vkd3d-shader/hlsl: Make a string array const.
2023-04-06 17:52:07 +02:00