Giovanni Mascellani
154acd2c2b
Release 1.7.1.
2023-05-03 21:46:28 +02:00
Henri Verbeet
cb2acc35f2
vkd3d-utils: Export D3D12CreateDevice() once again.
...
Commit d27fee64ab
inadvertently stopped
exporting D3D12CreateDevice().
2023-05-03 21:46:27 +02:00
Conor McCarthy
7b9b0179ec
vkd3d: Leave the command queue op mutex locked after a partial flush.
...
All return paths in d3d12_command_queue_flush_ops_locked() must
leave the op mutex locked.
2023-05-03 21:46:25 +02:00
Henri Verbeet
57d92a15cf
Release 1.7.
2023-03-24 11:22:28 +01:00
Henri Verbeet
54b0165e32
vkd3d-shader: VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE was introduced in vkd3d 1.7.
2023-03-20 21:28:13 +01:00
Nikolay Sivov
4110f1e547
vkd3d-shader: Fix a few typos in the comments.
2023-03-15 20:13:27 +01:00
Henri Verbeet
8509ec1e72
vkd3d-shader/spirv: Update the current source location in spirv_compiler_generate_spirv().
2023-03-13 22:10:00 +01:00
Henri Verbeet
0a73c75db8
vkd3d-shader/glsl: Update the current source location in vkd3d_glsl_generator_generate().
...
Since the introduction of instruction arrays, the parser location no
longer matches the location of the current instruction. Ultimately we'll
likely want to add some kind of explicit location information to struct
vkd3d_shader_instruction_array, because we might do transformations that
change the order of the original instructions.
2023-03-13 22:09:58 +01:00
Henri Verbeet
685abf9c2d
vkd3d-shader/sm4: Do not specify a destination register for VKD3D_SM4_OP_DCL_RESOURCE in opcode_table[].
...
We do not set one in shader_sm4_read_dcl_resource(), and
shader_sm4_read_instruction() explicitly sets this to 0.
2023-03-13 22:09:54 +01:00
Henri Verbeet
65b7154a22
vkd3d-shader/sm4: Set "dst_count" to 0 when we clear "dst" in shader_sm4_read_instruction().
...
VKD3D_SM4_OP_DCL_RESOURCE currently has 1 for "dst_count", but NULL for
"dst". This is largely harmless because we never attempt to access the
destination register of VKD3DSIH_DCL instructions, but nevertheless not
quite proper.
2023-03-13 22:09:49 +01:00
Zebediah Figura
9ea84ae8c9
tests/shader_runner: Use the global test_options structure.
...
Inspired by a patch by Giovanni Mascellani.
2023-03-10 21:13:05 +01:00
Giovanni Mascellani
c8a05a8b10
tests: Collect D3D12 test options in a dedicated structure.
2023-03-10 21:12:46 +01:00
Giovanni Mascellani
8d7159b4be
tests: Initialize shader_runner fields after having zeroed the struct.
2023-03-10 21:12:44 +01:00
Zebediah Figura
da2435707b
vkd3d-shader/hlsl: Fix some memory leaks in the function call rule.
2023-03-09 22:11:06 +01:00
Henri Verbeet
d405295bc7
build: Fix the order of some .shader_test files.
2023-03-09 22:10:53 +01:00
Henri Verbeet
0c833056f6
build: Actually run asuint.shader_test.
2023-03-09 22:10:53 +01:00
Nikolay Sivov
193692bbcb
vkd3d-shader/hlsl: Use array element type for array's regset.
...
Currently this affects SM1 compilation only, with a minimal example like this:
float4 var[3];
float4 main() : sv_target
{
return var[1];
}
2023-03-09 22:10:39 +01:00
Nikolay Sivov
2880be647e
vkd3d-shader/sm4: Write sample count field for multisampled texture declaration.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2023-03-08 20:15:11 +01:00
Nikolay Sivov
ae2f777a4d
vkd3d-shader/hlsl: Parse multisample texture type names.
2023-03-08 20:15:09 +01:00
Nikolay Sivov
ee52ad8106
vkd3d-shader/trace: Output sample count for multisampled resources.
2023-03-08 20:15:06 +01:00
Conor McCarthy
9f6e6d3fcd
vkd3d-shader/dxbc: Validate and skip the signature section header size.
...
Silences a very common warning.
2023-03-08 20:14:59 +01:00
Conor McCarthy
3b5316be82
vkd3d-shader/dxbc: Emit a shader error for an invalid signature data size.
2023-03-08 20:14:57 +01:00
Conor McCarthy
83e39e2650
vkd3d-shader/dxbc: Pass a message context to for_each_dxbc_section().
2023-03-08 20:14:55 +01:00
Zebediah Figura
98624f2e8f
include: Document that vkd3d_shader_signature may contain pointers into the input shader blob.
2023-03-08 20:14:49 +01:00
Giovanni Mascellani
bb2fa97c33
vkd3d: Do not keep the CS queue locked while processing it.
...
d3d12_command_queue_flush_ops() can renter itself while processing signal
events. Since we don't use recursive mutexes, we currently have to check
some of the queue variables without holding the mutex, which is not safe.
This is solved by allowing the queue to release its mutex while it is
processing entries: when flushing, the queue is briefly locked, the
is_flushing flag is set, the queue content is copied away and the
queue is unlocked again. After having processed the entries, the
queue is locked again to check is something else was added in the
meantime. This is repeated until the queue is empty (or a wait operation
is blocking it).
This should also remove some latency when a thread pushes to the queue
while another one is processing it, but I didn't try to measure any
impact. While it is expected that with this patch the queue mutex
will be locked and unlocked more frequently, it should also remain
locked for less time, hopefully creating little contention.
2023-03-08 20:14:39 +01:00
Giovanni Mascellani
09d2c8d190
vkd3d: Always enqueue wait operations, even when they can be executed right away.
2023-03-08 20:14:39 +01:00
Giovanni Mascellani
9eba44396a
vkd3d: Always enqueue signal operations, even when they can be executed right away.
2023-03-08 20:14:39 +01:00
Giovanni Mascellani
0d329ba168
vkd3d: Always enqueue execute operations, even when they can be executed right away.
...
The goal is to simplify the CS queue handling: with this and the following
changes operations are always started by d3d12_command_queue_flush_ops(),
in order to make further refactoring easier.
Notice that while with this change executing an operation on an empty CS
queue is a bit less efficient, it doesn't require more locking. On the other
hand, this change paves the road for executing CS operations without holding
the queue lock.
2023-03-08 20:14:35 +01:00
Giovanni Mascellani
0c6df49560
vkd3d: Hold the queue mutex when adding the queue to a blocked list.
...
Otherwise it could be added more than once.
Note that the deleted comment is wrong: between when d3d12_command_queue_flush_ops()
returns and when the queue is added back to the blocked list, the queue
might have been pushed to and flushed an arbitrary number of times.
2023-03-08 20:14:31 +01:00
Giovanni Mascellani
ef8d272507
vkd3d: Mention the correct mutex in a comment.
2023-03-08 20:14:31 +01:00
Nikolay Sivov
a18f3d4dd5
vkd3d-shader/hlsl: Support distance() intrinsic.
2023-03-08 20:14:22 +01:00
Nikolay Sivov
d6b656641c
vkd3d-shader/hlsl: Support rsqrt() intrinsic.
2023-03-08 20:14:20 +01:00
Giovanni Mascellani
6ccde9e82c
vkd3d-shader: Make documentation for "messages" parameters self contained.
...
Otherwise it's not clear which clauses in vkd3d_shader_compile() really
apply to other functions. For example, many of the functions currently
refering to vkd3d_shader_compile() don't even take a vkd3d_shader_compile_info
parameter.
2023-02-28 22:07:12 +01:00
Zebediah Figura
a28ecaa135
vkd3d-shader/hlsl: Get rid of the check_invalid_matrix_modifiers() helper.
2023-02-28 22:07:01 +01:00
Zebediah Figura
5838364886
vkd3d-shader/hlsl: Apply latent majority modifiers to typedefs as well.
2023-02-28 22:07:00 +01:00
Zebediah Figura
322963add8
vkd3d-shader/hlsl: Do not set an initial latent matrix majority.
...
This change does nothing by itself.
2023-02-28 22:06:59 +01:00
Zebediah Figura
75ab9d31ef
vkd3d-shader/hlsl: Store the matrix majority as a type modifiers bitmask.
2023-02-28 22:06:58 +01:00
Zebediah Figura
b3c620954b
vkd3d-shader/hlsl: Apply latent type modifiers to matrix array typedefs.
2023-02-28 22:06:56 +01:00
Zebediah Figura
2a412670ee
tests: Add more tests for pack_matrix pragmas.
2023-02-28 22:06:54 +01:00
Francisco Casas
af25d5bf96
vkd3d-shader/hlsl: Don't map src swizzles for SM1 dp3 and dp4 ops.
...
Without this patch, dp3 and dp4 map src swizzles to the dst writemask,
which is not correct.
Before b84f560bdf
, these ops worked
despite this, because the dst register had, incorrectly, the full
writemask.
To solve this problem, write_sm1_binary_op_dot() is introduced,
similarly to write_sm4_binary_op_dot().
2023-02-27 22:12:38 +01:00
Giovanni Mascellani
a1c6bb85ad
vkd3d-shader: Do not pass client-given strings as printf()-style format strings.
2023-02-27 22:12:26 +01:00
Henri Verbeet
b1e13d6e33
vkd3d-shader/dxbc: Introduce API for serialising DXBC blobs.
2023-02-23 21:47:27 +01:00
Henri Verbeet
c87492ed21
vkd3d-shader/dxbc: Introduce API for parsing DXBC blobs.
2023-02-23 21:47:26 +01:00
Henri Verbeet
d0d2130f74
vkd3d-shader/dxbc: Rename parse_dxbc() to for_each_dxbc_section().
2023-02-23 21:47:23 +01:00
Henri Verbeet
a06320c1fc
vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to parse_dxbc().
2023-02-23 21:47:22 +01:00
Henri Verbeet
2f762465a6
vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to shader_extract_from_dxbc().
2023-02-23 21:47:21 +01:00
Henri Verbeet
3a3acb5b7d
vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to shader_parse_input_signature().
2023-02-23 21:47:20 +01:00
Henri Verbeet
e2825f7658
vkd3d-shader/dxbc: Pass a vkd3d_shader_dxbc_section_desc structure to the parse_dxbc() section handler.
2023-02-23 21:47:19 +01:00
Henri Verbeet
5020781f76
vkd3d-shader/dxbc: Pass a vkd3d_shader_dxbc_section_desc structure to shader_parse_root_signature().
2023-02-23 21:47:18 +01:00
Henri Verbeet
6c64f8a217
vkd3d-shader/dxbc: Pass a vkd3d_shader_dxbc_section_desc structure to shader_parse_signature().
2023-02-23 21:47:16 +01:00
Henri Verbeet
bf3c012834
vkd3d-shader/dxbc: Rename the dxbc_writer_section structure to vkd3d_shader_dxbc_section_desc.
...
In preparation of exposing it in the public API.
2023-02-23 21:47:15 +01:00
Henri Verbeet
b59de4de5c
vkd3d-shader/dxbc: Store DXBC section data as a vkd3d_shader_code structure.
2023-02-23 21:47:13 +01:00
Zebediah Figura
dea212688a
vkd3d: Remove a double space in a trace message.
2023-02-23 21:46:49 +01:00
Nikolay Sivov
dd36215a00
vkd3d-shader/hlsl: Support case-insensitive lookup for builtin 'float' type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2023-02-23 21:46:42 +01:00
Nikolay Sivov
df2d6d35e2
vkd3d-shader/hlsl: Use unsigned type for the 'dword' alias.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2023-02-23 21:46:40 +01:00
Nikolay Sivov
891217664a
vkd3d-shader/hlsl: Support case-insensitive lookup for builtin 'dword' type.
2023-02-23 21:46:38 +01:00
Giovanni Mascellani
5f904e5022
vkd3d-utils: Generate Doxygen documentation for vkd3d_utils.h.
2023-02-22 21:38:46 +01:00
Giovanni Mascellani
e5bbd05c98
vkd3d: Generate Doxygen documentation for vkd3d.h.
2023-02-22 21:38:46 +01:00
Giovanni Mascellani
6bdb0abf68
vkd3d-shader: Fix the Doxygen documentation for vkd3d_shader.h.
...
The \since field was too early, and prevented Doxygen from really
parsing the synopsis for vkd3d_shader.h.
2023-02-22 21:38:43 +01:00
Zebediah Figura
e10e12a10c
vkd3d-shader: Avoid underflowing the indentation level.
...
Any shader that would underflow is invalid, but it is helpful to allow tracing even invalid shaders.
2023-02-22 18:28:19 +01:00
Francisco Casas
f8338ef089
vkd3d-shader/hlsl: Allocate register reservations in a separate pass.
...
This refactoring is required for improving the allocation strategy so it
works with multiple-register variables.
2023-02-22 18:28:19 +01:00
Francisco Casas
75359e6dbd
vkd3d-shader/hlsl: Respect object reservations even if the object is unused.
2023-02-22 18:28:19 +01:00
Francisco Casas
7a7116eaab
tests: Test allocation of unused objects.
2023-02-22 18:28:19 +01:00
Francisco Casas
c5384b38ee
vkd3d-shader/hlsl: Allocate objects according to register set.
2023-02-22 18:28:19 +01:00
Francisco Casas
e0031d2a1f
vkd3d-shader/hlsl: Keep an hlsl_reg for each register set in hlsl_ir_var.
2023-02-22 18:28:19 +01:00
Francisco Casas
5272c5f86a
vkd3d-shader/hlsl: Obtain extern resources as a separate array in SM4.
2023-02-22 18:28:19 +01:00
Francisco Casas
d07247249a
vkd3d-shader/hlsl: Store the type's register size for each register set.
2023-02-22 18:28:19 +01:00
Francisco Casas
315966dc21
vkd3d-shader/hlsl: Leave offset empty for array and struct derefs.
2023-02-22 18:28:19 +01:00
Zebediah Figura
7c1c2e6cc4
vkd3d-shader/hlsl: Parse the tex3D() intrinsic.
2023-02-22 18:28:19 +01:00
Zebediah Figura
645ec0167a
vkd3d-shader/hlsl: Parse the tex2D() intrinsic.
2023-02-22 18:28:19 +01:00
Francisco Casas
9fdff25a3b
vkd3d-shader/hlsl: Avoid segfault on missing sampler.
2023-02-22 18:28:19 +01:00
Nikolay Sivov
d86db8bcbe
vkd3d-shader/hlsl: Support lit() intrinsic.
2023-02-21 21:09:52 +01:00
Zebediah Figura
02e3be811b
configure: Declare LFLAGS and YFLAGS as precious.
...
Normally AC_PROG_LEX and AC_PROG_YACC do this, but we demand flex and bison specifically.
2023-02-20 22:00:00 +01:00
Francisco Casas
7f009f59ce
vkd3d-shader/hlsl: Add a more specific error for missing compatible fn. definitions.
2023-02-20 21:59:54 +01:00
Francisco Casas
f08c0a7c03
vkd3d-shader/hlsl: Find compatible function overloads.
...
But still throw hlsl_fixme() when there is more than one.
Prioritizing among multiple compatible function overloads in the same way
as the native compiler would require systematic testing.
2023-02-20 21:59:53 +01:00
Francisco Casas
d279d34801
vkd3d-shader/hlsl: Parse array types in function parameters.
2023-02-20 21:59:51 +01:00
Francisco Casas
9df54851c9
tests: Test array parameters on functions.
2023-02-20 21:59:51 +01:00
Francisco Casas
1b951c87f6
tests: Add more tests for broadcasts in function call args.
2023-02-20 21:59:51 +01:00
Francisco Casas
2a9b9f7530
vkd3d-shader/hlsl: Rename compatible_data_types() to be more specific.
2023-02-20 21:59:50 +01:00
Zebediah Figura
6767b7abbf
vkd3d-shader/hlsl: Avoid warning for each variable when in/out modifiers are specified on non-parameters.
2023-02-20 21:59:45 +01:00
Zebediah Figura
72ec5563f8
vkd3d-shader/hlsl: Remove a redundant warning for mutually exclusive majority modifiers.
...
We will warn subsequently in apply_type_modifiers() or add_typedef().
2023-02-20 21:59:43 +01:00
Zebediah Figura
af65287423
vkd3d-shader/hlsl: Check for majority modifiers on non-matrices in apply_type_modifiers().
2023-02-20 21:59:42 +01:00
Zebediah Figura
1ee7a4e82a
tests: Add more tests for majority modifier syntax.
2023-02-20 21:59:42 +01:00
Zebediah Figura
1c29b45c1f
tests: Test macro expansion in pack_matrix pragmas.
2023-02-20 21:59:42 +01:00
Nikolay Sivov
e5b40092c2
vkd3d-shader/hlsl: Support all() intrinsic.
2023-02-20 21:59:37 +01:00
Francisco Casas
2142d31f13
vkd3d-shader/hlsl: Fix number of components when creating a swizzle in copy-prop.
...
Otherwise we may create nodes of different dimensions than the ones we
are replacing.
"count" is the number of components of the source deref (without
considering the swizzle), while "instr_component_count" is the actual
number of components of the instruction to be replaced.
2023-02-20 21:59:31 +01:00
Nikolay Sivov
e7bc634307
vkd3d-shader/hlsl: Support reflect() intrinsic.
...
Tests authored by Giovanni.
2023-02-20 21:59:23 +01:00
Giovanni Mascellani
7c3dadce6b
vkd3d-shader/hlsl: Write SM4 break instructions.
2023-02-15 21:53:21 +01:00
Nikolay Sivov
99acf5038e
vkd3d-shader/hlsl: Use mul only for two scalars for dot().
2023-02-15 21:53:15 +01:00
Zebediah Figura
0e60f4cc69
vkd3d-shader/hlsl: Always set ctx->cur_function in the func_prototype_no_attrs rule.
...
Fixes: 4c46075d86
2023-02-14 21:52:59 +01:00
Zebediah Figura
cd6e8b5540
vkd3d-shader/hlsl: Allow empty parameter lists to be specified as "(void)".
2023-02-14 21:52:57 +01:00
Zebediah Figura
58445da64b
vkd3d-shader/hlsl: Allow the final expression in a for loop initializer to be omitted.
2023-02-13 22:16:56 +01:00
Zebediah Figura
38964214cd
vkd3d-shader/hlsl: Handle early return after a CF block only if there was actually a return somewhere in the CF block.
2023-02-13 22:16:55 +01:00
Zebediah Figura
4b944517b7
vkd3d-shader/hlsl: Inline function calls.
2023-02-13 22:16:53 +01:00
Zebediah Figura
6177cea31f
vkd3d-shader/hlsl: Emit a hlsl_fixme() for unhandled instruction types when writing bytecode.
...
This was originally left alone in order to allow functions without early return
to succeed, since in that case we would already emit the correct bytecode
despite not handling the HLSL_IR_JUMP_RETURN instruction.
Now that we lower return statements, however, any unhandled instructions are
either definitely going to result in invalid bytecode, or rare enough that it's
not worth returning success anyway.
2023-02-13 22:16:52 +01:00
Zebediah Figura
8bdee6681b
vkd3d-shader/hlsl: Lower return statements.
2023-02-13 22:16:51 +01:00
Zebediah Figura
0cf39f3c63
vkd3d-shader/hlsl: Emit a hlsl_fixme() if multiple valid entry point definitions are given.
2023-02-13 22:16:49 +01:00
Zebediah Figura
bb41c3b5fe
vkd3d-shader/hlsl: Skip functions that don't have a body when looking for the entry point.
2023-02-13 22:16:48 +01:00
Zebediah Figura
09c5ed27fe
tests: Avoid performing a multi-component UAV load in uav-out-param.shader_test.
...
It requires caps beyond shader model 5.0.
2023-02-13 22:16:46 +01:00
Giovanni Mascellani
8e087b0f17
vkd3d: Use a dedicated mutex to protect the blocked queues.
2023-02-13 22:16:44 +01:00
Giovanni Mascellani
df36026633
vkd3d: Do not read max_pending_value without holding the fence's mutex.
2023-02-13 22:16:44 +01:00
Giovanni Mascellani
e076fd9c77
vkd3d: Do not read blocked_queue_count without holding the device mutex.
2023-02-13 22:16:42 +01:00
Nikolay Sivov
240b2f966f
vkd3d-shader/hlsl: Support abs() for SM1.
2023-02-09 18:03:19 +01:00
Francisco Casas
902ddee557
vkd3d-shader/hlsl: Fix SM1 dp2add swizzles.
...
SM1 dp2add doesn't map src swizzles to the dst writemask, also it
expects the last argument to have a replicate swizzle.
Before this patch we were writing the operation as:
```
dp2add r0.x, r1.x, r0.x, r2.x
```
and now it is:
```
dp2add r0.x, r1.xyxx, r0.xyxx, r2.x
```
dp2add now has its own function, write_sm1_dp2add(), since it seems to
be the only instruction with this structure.
Ideally we would be using the default swizzles for the first two src
arguments:
```
dp2add r0.x, r1, r0, r2.x
```
since, according to native's documentation, these are supported for all
sm < 4.
But this change -- along with following the convention of repeating the
last component of the swizzle when fewer than 4 components are to be
specified -- would require more global changes, probably in
hlsl_swizzle_from_writemask() and hlsl_map_swizzle().
2023-02-08 22:09:42 +01:00
Francisco Casas
d01729921c
vkd3d-shader/hlsl: Map SM1 src swizzles outside write_sm1_instruction().
...
Not every instruction expects src swizzles to be mapped according to the
dst writemasks, so this logic must be outside this function.
2023-02-08 22:09:41 +01:00
Francisco Casas
b84f560bdf
vkd3d-shader/hlsl: Set writemasks correctly for SM1 scalar and vector types.
...
Because of the change introduced in
f21693b2
vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
SM1 scalars and vectors were not longer getting the correct writemask
when they are allocated.
This happened because they have to reserve the whole register even if
they only use some of its components, so their reg_size may differ from
the number of components.
This commit fixes that.
2023-02-08 22:09:39 +01:00
Francisco Casas
6b4a4c4c6d
vkd3d-shader/hlsl: Expect component count in allocate_register().
...
This in order to set the correct writemasks for SM1 registers.
2023-02-08 22:09:38 +01:00
Francisco Casas
0ecac994d0
vkd3d-shader/hlsl: Rename 'component_count' arguments to 'reg_size'.
...
component_count will be used in the next patch for the actual number of
components of the type and not its register size.
2023-02-08 22:09:36 +01:00
Zebediah Figura
ab601d65cd
vkd3d-shader: Initialize the parameter allocator head.
...
This fixes a memory leak.
Fixes: 007f894b94
2023-02-07 22:15:08 +01:00
Nikolay Sivov
91a70c7dda
vkd3d-shader/hlsl: Handle saturate() for SM1.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2023-02-07 22:15:06 +01:00
Zebediah Figura
77d716c811
vkd3d-shader/hlsl: Add functions to the global list inside the func_prototype rule.
2023-02-07 22:15:06 +01:00
Zebediah Figura
4c46075d86
vkd3d-shader/hlsl: Use the original hlsl_ir_function_decl struct rather than allocating a new one for each definition.
...
We need to make sure every invocation points to the same hlsl_ir_function_decl
and the same parameters.
This fixes some invalid memory accesses.
2023-02-07 22:15:06 +01:00
Zebediah Figura
25d49b518d
vkd3d-shader/hlsl: Put synthetic variables into a dummy scope.
...
Prevent them from being ever looked up.
Our naming scheme for synthetic variables already effectively prevents this, but
this is better for clarity. We also will need to be able to move some named
variables into a dummy scope to account for complexities around function
definition and declarations.
2023-02-07 22:15:06 +01:00
Zebediah Figura
8755a92196
vkd3d-shader/hlsl: Add a hlsl_cleanup_semantic() helper.
2023-02-07 22:15:06 +01:00
Zebediah Figura
cb2c89a589
vkd3d-shader/hlsl: Store function parameters in an array.
2023-02-07 22:15:06 +01:00
Zebediah Figura
721c7aa22c
tests: Add more tests for function definitions.
2023-02-07 22:15:06 +01:00
Zebediah Figura
898fc9e198
vkd3d: Fix checking for failure from SleepConditionVariableCS().
...
Fixes: 552926cfca
2023-02-07 22:15:06 +01:00
Matteo Bruni
2e074ebce7
vkd3d: Initialize image aspect for NULL SRVs.
2023-02-07 22:08:00 +01:00
Giovanni Mascellani
552926cfca
vkd3d: Do not allow synchronization primitives to fail.
...
In practice they never fail. If they fail, it means that there
is some underlying platform problem and there is little we can do
anyway. Under pthreads function prototypes allow returning failure,
but that's only used for "error checking" mutexes, which we
don't use.
On the other hand, error handling in vkd3d is rather inconsistent:
sometimes the errors are ignored, sometimes logged, sometimes
passed to the caller. It's hard to handle failures appropriately
if you can't even keep your state consistent, so I think it's
better to avoid trying, assume that synchronization primitives do
not fail and at least have consistent logging if something goes
wrong.
2023-02-02 20:51:27 +01:00
Zebediah Figura
a66fe31fe5
vkd3d: Do not write the point size for SPIR-V shaders.
...
We disable shaderTessellationAndGeometryPointSize.
2023-02-02 20:51:19 +01:00
Zebediah Figura
8fc8d34ea0
vkd3d-shader/spirv: Introduce an option to control whether point size is written.
2023-02-02 20:51:18 +01:00
Nikolay Sivov
06f300ec59
vkd3d-shader/hlsl: Support dot() for SM1.
2023-02-02 20:51:12 +01:00
Zebediah Figura
68c232cfab
tests: Test entry point semantics on function declarations.
2023-01-31 22:27:02 +01:00
Zebediah Figura
4954c36347
tests: Add more tests for early return from the entry point.
2023-01-31 22:27:02 +01:00
Zebediah Figura
7460d7adc2
tests: Add some tests for early return from user-defined functions.
2023-01-31 22:27:02 +01:00
Zebediah Figura
aa3badbd9d
vkd3d-shader/hlsl: Emit a hlsl_fixme() for HLSL_IR_CALL instructions.
...
Avoid outputting invalid shaders.
2023-01-31 22:27:00 +01:00
Philip Rebohle
f9e7cb6345
include: Fix incorrect UpdateTileMappings declaration.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de >
2023-01-26 21:52:39 +01:00
Nikolay Sivov
ec00782eae
vkd3d-shader/tests: Add some exp()/exp2() tests.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2023-01-26 21:52:29 +01:00
Nikolay Sivov
8bb023e5af
vkd3d-shader/hlsl: Support exp() intrinsic.
2023-01-26 21:52:28 +01:00
Nikolay Sivov
8ca2f65bc1
vkd3d-shader/hlsl: Support exp2() intrinsic.
2023-01-26 21:52:26 +01:00
Nikolay Sivov
fa971f32bc
vkd3d-shader/hlsl: Write 'exp' instructions for SM1.
2023-01-26 21:52:25 +01:00
Nikolay Sivov
335f741630
vkd3d-shader/hlsl: Add a helper to write per-component unary instructions.
2023-01-26 21:52:24 +01:00
Francisco Casas
f33ca836d7
vkd3d-shader/hlsl: Make single-component swizzles retrieve a scalar.
2023-01-26 21:52:18 +01:00
Francisco Casas
edf86b2248
tests: Add tests for assignments to self with swizzles.
2023-01-26 21:52:18 +01:00
Francisco Casas
9d7ef64dc0
tests: Test swizzles on scalar values.
2023-01-26 21:52:18 +01:00
Francisco Casas
524029a062
tests: Test using single-component swizzles as indexes.
...
Vectors cannot be used as array indexes, however, single-component
swizzles (such as vec.x) can be used.
This suggests that single-component swizzles should actually be
scalars and not vectors of dimx = 1.
It is worth noting that the use of single-component swizzles on scalars
should still be allowed.
2023-01-26 21:52:16 +01:00
Francisco Casas
dd2168754d
tests: Combine all the swizzle tests in a single file.
2023-01-26 21:52:16 +01:00
Giovanni Mascellani
d2f8a576a8
vkd3d-shader/hlsl: Avoid infinite loop and invalid derefs in copy-prop.
...
Co-authored-by: Francisco Casas <fcasas@codeweavers.com >
Co-authored-by: Zebediah Figura <zfigura@codeweavers.com >
Because copy_propagation_transform_object_load() replaces a deref
instead of an instruction, it is currently prone to two problems:
1- It can replace a deref with the same deref, returning true every
time and getting the compilation stuck in an endless loop of
copy-propagation iterations.
2- When performed multiple times in the same deref, the second time it
can replace the deref with a deref from a temp that is only valid in
another point of the program execution, resulting in an incorrect value.
This patch preempts this by avoiding replacing derefs when the new deref
doesn't point to a uniform variable. Because, uniform variables cannot
be written to.
2023-01-26 21:52:07 +01:00
Francisco Casas
17888f6493
tests: Test correct copy-prop object replacement.
2023-01-26 21:52:05 +01:00
Zebediah Figura
653cc02f4c
vkd3d-shader/hlsl: Write SM4 thread ID registers.
2023-01-25 22:47:46 +01:00
Zebediah Figura
809a43f06b
tests: Add a test for compute thread IDs.
2023-01-25 22:10:30 +01:00
Francisco Casas
404a2d6a3d
vkd3d-shader/hlsl: Reinterpret minimum precision types as their regular counterparts.
...
Reinterpret min16float, min10float, min16int, min12int, and min16uint
as their regular counterparts: float, float, int, int, uint,
respectively.
A proper implementation would require adding minimum precision
indicators to all the dxbc-tpf instructions that use these types.
Consider the output of fxc 10.1 with the following shader:
uniform int i;
float4 main() : sv_target
{
min16float4 a = {0, 1, 2, i};
min16int2 b = {4, i};
min10float3 c = {6.4, 7, i};
min12int d = 9.4;
min16uint4x2 e = {14.4, 15, 16, 17, 18, 19, 20, i};
return mul(e, b) + a + c.xyzx + d;
}
However, if the graphics driver doesn't have minimum precision support,
it ignores the minimum precision indicators and runs at 32-bit
precision, which is equivalent as working with regular types.
2023-01-25 22:10:23 +01:00
Francisco Casas
4ce6a17053
tests: Test minimum-precision numeric types.
2023-01-25 22:10:23 +01:00
Nikolay Sivov
3c23e1713c
vkd3d-shader/hlsl: Implement sqrt() for SM1.
2023-01-25 22:10:15 +01:00
Nikolay Sivov
b84b9349bf
vkd3d-shader/hlsl: Handle RSQ output for SM1.
2023-01-25 22:10:13 +01:00
Nikolay Sivov
3e6fccdbf9
vkd3d-shader/hlsl: Support frac() intrinsic.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=34242
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2023-01-25 22:10:05 +01:00
Conor McCarthy
3db509383b
vkd3d: Store a heap array index in each CBV/SRV/UAV descriptor.
...
A pointer to the containing descriptor heap can be derived from this
information.
PE build of vkd3d uses Windows critical sections for synchronisation,
and these slow down on the very high lock/unlock rate during multithreaded
descriptor copying in Shadow of the Tomb Raider. This patch speeds up the
demo by about 8%. By comparison, using SRW locks in the allocators and
locking them for read only where applicable is about 4% faster.
2023-01-25 22:10:01 +01:00
Conor McCarthy
d14f42be9d
vkd3d-shader/spirv: Pass a parser pointer to spirv_compiler_generate_spirv().
2023-01-24 18:11:16 +01:00
Conor McCarthy
2a5ae0a8c6
vkd3d-shader/sm4: Use the instruction array interface in compile_dxbc_tpf().
2023-01-24 18:11:14 +01:00
Conor McCarthy
2d3f05184f
vkd3d-shader/glsl: Use the instruction array interface in vkd3d_glsl_generator_generate().
2023-01-24 18:11:13 +01:00
Conor McCarthy
2559d622de
vkd3d-shader: Use the instruction array interface in scan_with_parser().
2023-01-24 18:11:12 +01:00
Conor McCarthy
e9a2642d6a
vkd3d-shader/trace: Use the instruction array interface in vkd3d_dxbc_binary_to_text().
2023-01-24 18:11:10 +01:00
Conor McCarthy
e8cb90608d
vkd3d-shader: Initialise the instruction array in vkd3d_shader_parser_init().
2023-01-24 18:11:10 +01:00
Conor McCarthy
a9aaa59df0
vkd3d-shader/sm4: Store parsed instructions in an array.
2023-01-24 18:11:08 +01:00
Conor McCarthy
007f894b94
vkd3d-shader/sm1: Store parsed instructions in an array.
2023-01-24 18:11:06 +01:00
Francisco Casas
6b82ba9488
vkd3d-shader/hlsl: Fold swizzle chains.
2023-01-24 18:10:53 +01:00
Zebediah Figura
b7d34e8307
vkd3d-shader/hlsl: Apply copy propagation to swizzled loads.
2023-01-24 18:10:50 +01:00
Francisco Casas
18adf0d726
vkd3d-shader/hlsl: Use aoffimmis when writing gather resource loads.
...
If the offset of a gather resource load can be represented as an
aoffimmi (vectori of ints from -8 to 7), use one.
This is of particular importance for 4.0 profiles, where this is the only
valid way of representing offsets for this operation.
2023-01-24 18:10:49 +01:00
Francisco Casas
c2a7a40d3a
vkd3d-shader/hlsl: Replace loads with constants in copy prop.
...
If a hlsl_ir_load loads a variable whose components are stored from different
instructions, copy propagation doesn't replace it.
But if all these instructions are constants (which currently is the case
for value constructors), the load could be replaced with a constant value.
Which is expected in some other instructions, e.g. texel_offsets when
using aoffimmi modifiers.
For instance, this shader:
```
sampler s;
Texture2D t;
float4 main() : sv_target
{
return t.Gather(s, float2(0.6, 0.6), int2(0, 0));
}
```
results in the following IR before applying the patch:
```
float | 6.00000024e-01
float | 6.00000024e-01
uint | 0
| = (<constructor-2>[@4].x @2)
uint | 1
| = (<constructor-2>[@6].x @3)
float2 | <constructor-2>
int | 0
int | 0
uint | 0
| = (<constructor-5>[@11].x @9)
uint | 1
| = (<constructor-5>[@13].x @10)
int2 | <constructor-5>
float4 | gather_red(resource = t, sampler = s, coords = @8, offset = @15)
| return
| = (<output-sv_target0> @16)
```
and this IR afterwards:
```
float2 | {6.00000024e-01 6.00000024e-01 }
int2 | {0 0 }
float4 | gather_red(resource = t, sampler = s, coords = @2, offset = @3)
| return
| = (<output-sv_target0> @4)
```
2023-01-24 18:10:45 +01:00
Zebediah Figura
8c2b8ff245
vkd3d-shader/hlsl: Synthesize the swizzle and replace the instruction inside of copy_propagation_compute_replacement().
...
Rename it to copy_propagation_replace_with_single_instr() accordingly.
The idea is to introduce a constant vector replacement pass which will do the
same thing.
2023-01-24 18:10:41 +01:00
Zebediah Figura
5d34790402
vkd3d-shader/hlsl: Call copy_propagation_get_value() directly in copy_propagation_transform_object_load().
...
copy_propagation_compute_replacement() is not doing very much for us, and
conceptually is a bit of an odd fit anyway, since it's meant to deal with
multi-component types.
2023-01-24 18:10:40 +01:00
Zebediah Figura
8fd30aa87d
vkd3d-shader/hlsl: Add some swizzle manipulation definitions.
2023-01-24 18:10:39 +01:00
Francisco Casas
337b4c5db0
tests: Test constant propagation through swizzles.
...
The Load() method offsets are used for these tests since these must
solve to constants in order to pass.
2023-01-24 18:10:38 +01:00
Francisco Casas
cf17882189
vkd3d-shader/hlsl: Support offset argument for the texture Load() method.
2023-01-24 18:10:36 +01:00
Francisco Casas
7a7b17d0e1
tests: Test offset argument for the texture Load() method.
2023-01-24 18:10:36 +01:00
Giovanni Mascellani
1717dc0516
tests: Print DLL versions when running tests on Windows.
2023-01-24 18:10:22 +01:00
Giovanni Mascellani
2445743002
tests: Run d3d9 and d3d12 tests on non-cross builds too.
...
On cross builds, shaders are compiled with d3dcompiler_47.dll and
run with d3dN.dll. On non-cross builds, shaders are compiled with
vkd3d-shader and run with d3dN.dll (on Windows) or Vulkan and vkd3d
(on Linux).
2023-01-24 18:10:17 +01:00
Giovanni Mascellani
44d9e2d728
tests: Distinguish between cross and non-cross Win32 builds.
...
Now the tests compile correctly on non-cross Win32 builds.
2023-01-24 18:10:15 +01:00
Zebediah Figura
9c817e5e6d
vkd3d-shader/hlsl: Forbid recursive calls.
2023-01-19 19:16:27 +01:00
Zebediah Figura
503be4243c
tests/shader_runner: Explicitly track the expected shader compilation HRESULT instead of using a boolean flag.
2023-01-19 19:16:26 +01:00
Zebediah Figura
521f22e57a
vkd3d-shader/hlsl: Store a non-constant hlsl_ir_function_decl pointer in struct hlsl_ir_call.
2023-01-19 19:16:25 +01:00
Zebediah Figura
447463e590
vkd3d-shader/hlsl: Remove the unused "intrinsic" argument from hlsl_add_function().
2023-01-19 19:16:24 +01:00
Zebediah Figura
6c2472ce16
vkd3d-shader/hlsl: Remove some unnecessary YYABORTs from the func_prototype_no_attrs rule.
2023-01-19 19:16:22 +01:00
Francisco Casas
13c8e8b856
vkd3d-shader/hlsl: Parse step() intrinsic.
2023-01-19 19:16:17 +01:00
Francisco Casas
4e1a4a76d9
tests: Test step() intrinsic.
2023-01-19 19:16:17 +01:00
Francisco Casas
6fbf2b3e75
vkd3d-shader/hlsl: Parse sqrt() intrinsic.
2023-01-19 19:16:16 +01:00
Francisco Casas
7dbc879e2d
tests: Test sqrt() intrinsic.
2023-01-19 19:16:16 +01:00
Francisco Casas
8d5f16d803
vkd3d-shader/hlsl: Support cos() intrinsic.
2023-01-19 19:16:15 +01:00
Francisco Casas
3239ea5ff1
vkd3d-shader/hlsl: Support sin() intrinsic.
2023-01-19 19:16:14 +01:00
Francisco Casas
b65c450101
vkd3d-shader/hlsl: Add additional tests for sin() and cos().
2023-01-19 19:16:13 +01:00
Francisco Casas
2b1ec0cfe5
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_scope.
2023-01-19 19:16:08 +01:00
Francisco Casas
eabd742f3e
vkd3d-shader/hlsl: Add field-level documentation to function structs.
2023-01-19 19:16:07 +01:00
Francisco Casas
c68d0ecfe0
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_buffer.
2023-01-19 19:16:06 +01:00
Francisco Casas
ba56833bb5
vkd3d-shader/hlsl: Add documentation to small hlsl.h structs.
2023-01-19 19:16:04 +01:00
Francisco Casas
06b52c0343
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_deref.
2023-01-19 19:15:59 +01:00
Francisco Casas
f33d433621
vkd3d-shader/hlsl: Add documentation to struct hlsl_reg.
2023-01-19 19:15:57 +01:00
Francisco Casas
aab9886021
vkd3d-shader/hlsl: Allow uninitialized static objects.
...
validate_static_object_references() validates that uninitialized static
objects are not referenced in the shader.
In case a static variable contains both numeric and object types, the
"Static variables cannot have both numeric and resource components."
error should preempt uninitialized numeric values to reach further
compilation steps.
2023-01-19 12:29:41 +01:00
Francisco Casas
17d6a4411e
vkd3d-shader/hlsl: Validate that non-uniform objects are not referenced.
...
Note that in the future we should call
validate_static_object_references() after DCE and pruning branches,
because shaders such as these compile (at least in more modern versions
of the native compiler):
Branch pruning:
```
static RWTexture2D<float> tex;
float4 main() : sv_target
{
if (0)
{
tex[int2(0, 0)] = 2;
}
return 0;
}
```
DCE:
```
static Texture2D tex;
uniform uint i;
float4 main() : sv_target
{
float4 unused = tex.Load(int3(0, 1, 2));
return 0;
}
```
These are "todo" tests in hlsl-static-initializer.shader_test
that depend on this.
2023-01-19 12:29:39 +01:00
Francisco Casas
97c9669544
tests: Add additional object references tests.
2023-01-19 12:29:39 +01:00
Giovanni Mascellani
207643b8e8
tests: Test proper initialization of static structs to zero.
2023-01-19 12:29:39 +01:00
Francisco Casas
5cfc8d378f
vkd3d-shader/hlsl: Initialize static variables to 0 by default.
...
We are currently not initializing static values to zero by default.
Consider the following shader:
```hlsl
static float4 va;
float4 main() : sv_target
{
return va;
}
```
we get the following output:
```
ps_5_0
dcl_output o0.xyzw
dcl_temps 2
mov r0.xyzw, r1.xyzw
mov o0.xyzw, r0.xyzw
ret
```
where r1.xyzw is not initialized.
This patch solves this by assigning the static variable the value of an
uint 0, and thus, relying on complex broadcasts.
This seems to be the behaviour of the 9.29.952.3111 version of the native
compiler, since it retrieves the following error on a shader that lacks
an initializer on a data type with object components:
```
error X3017: cannot convert from 'uint' to 'struct <unnamed>'
```
2023-01-19 12:29:36 +01:00
Zebediah Figura
61f0d6d151
vkd3d-shader/hlsl: Get rid of the "intrinsic" field of struct hlsl_ir_function.
...
We have a different system of generating intrinsics, which makes it easier to
deal with "polymorphic" arithmetic functions.
Defining and storing intrinsics as hlsl_ir_function_decls would also require
more space in memory (and more optimization passes to get rid of the parameter
variables), and doesn't really save us any effort in terms of source code.
2023-01-13 17:32:44 +01:00
Zebediah Figura
9cc7aaf5a1
vkd3d-shader/hlsl: Forbid returning void expressions from void functions.
2023-01-13 17:32:43 +01:00
Zebediah Figura
b29d3489de
vkd3d-shader/hlsl: Generate IR for user-defined function calls.
2023-01-13 17:32:42 +01:00
Zebediah Figura
30550c0831
vkd3d-shader/hlsl: Avoid assuming that expressions have at least one argument.
2023-01-13 17:32:40 +01:00
Zebediah Figura
22a1a478ea
tests: Test specifying a UAV address as an in/out parameter to a function.
2023-01-13 17:32:39 +01:00
Francisco Casas
3fbe272659
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_src.
2023-01-11 16:03:55 +01:00
Francisco Casas
04108c0e21
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_ir_node.
2023-01-11 16:03:54 +01:00
Francisco Casas
9157a5e73f
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_ctx.
2023-01-11 16:03:52 +01:00
Francisco Casas
8ff3698699
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_ir_var.
2023-01-11 16:03:51 +01:00
Francisco Casas
0a2732428c
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_struct_field.
2023-01-11 16:03:49 +01:00
Francisco Casas
3a53da7f5b
vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_type.
2023-01-11 16:03:48 +01:00
Francisco Casas
cc811dc3c2
vkd3d-shader/hlsl: Rename hlsl_struct_field.modifiers to "storage_modifiers".
2023-01-11 16:03:47 +01:00
Francisco Casas
4dbbb8beb4
vkd3d-shader/hlsl: Rename hlsl_ir_var.modifiers to "storage_modifiers".
2023-01-11 16:03:45 +01:00
Francisco Casas
23bd2d9ad8
vkd3d-shader/hlsl: Rename HLSL_STORAGE_VOLATILE to HLSL_MODIFIER_VOLATILE.
2023-01-11 16:03:43 +01:00
Fabian Maurer
9519fcb562
vkd3d-shader/hlsl: Fix typo (Coverity).
...
I assume this is a typo, right now it doesn't make sense.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de >
2023-01-11 16:03:16 +01:00
Francisco Casas
5b1030e0cb
vkd3d-shader/hlsl: Use add_unary_arithmetic_expr() in intrinsic_pow().
...
Using add_unary_arithmetic_expr() instead of hlsl_new_unary_expr()
allows the intrinsic to work with matrices.
Otherwise we get:
E5017: Aborting due to not yet implemented feature: Copying from unsupported node type.
because an HLSL_IR_EXPR reaches split_matrix_copies().
2023-01-11 16:02:59 +01:00
Francisco Casas
6770ecbdf4
vkd3d-shader/hlsl: Introduce elementwise_intrinsic_float_convert_args().
2023-01-11 16:02:57 +01:00
Francisco Casas
9ceed76a9c
vkd3d-shader/hlsl: Convert elementwise intrinsics args to the proper common type.
2023-01-11 16:02:56 +01:00
Francisco Casas
86c35fc79d
tests: Test for common type conversion for element-wise intrinsics.
...
Some intrinsics have different rules for the allowed data types than
expressions:
- Vectors and matrices at the same time are not allowed, regardless of
their dimensions. Even if they have the same number of components.
- Any combination of matrices is always allowed, even those when no
matrix fits inside another, e.g.:
float2x3 is compatible with float3x2, resulting in float 2x2.
The common data type is the min on each dimension.
This is the case for max, pow, ldexp, clamp and smoothstep; which suggest that
it is the case for all intrinsics where the operation is applied element-wise.
Tests for mul() are also added as a counter-example where the operation
is not element-wise.
2023-01-11 16:02:53 +01:00
Francisco Casas
a7bb5a0835
vkd3d-shader/hlsl: Support smoothstep() intrinsic.
2023-01-11 16:02:52 +01:00
Francisco Casas
09e7218539
vkd3d-shader/hlsl: Support transpose() intrinsic.
2023-01-11 16:02:50 +01:00
Henri Verbeet
1eaf73147c
Release 1.6.
2022-12-07 16:08:16 +01:00
Henri Verbeet
d5f810068b
build: Add the demo shaders to the distribution.
2022-12-07 16:08:16 +01:00
Henri Verbeet
21302c09eb
build: Remove $(vkd3d_demos_shaders) from the distribution.
...
These were removed in commits 3d85d77ced
and 763f7dfa61
.
2022-12-07 16:08:11 +01:00
Conor McCarthy
1b11b57652
vkd3d-shader: Introduce DESCRIPTOR_INFO_FLAG_UAV_ATOMICS and always declare UAV images with known type for atomic ops.
...
Atomic ops on images with Unknown type will cause SPIR-V validation failure,
and assertion failure in Mesa debug builds. D3D12 allows atomics on typed
buffers, and this requires a distinction to be made between UAV reads and
atomic ops.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53874
2022-11-21 18:28:54 +01:00
Conor McCarthy
fc652d2b27
tests: Test a typed UAV buffer in test_atomic_instructions().
...
Until vkd3d-shader is patched, an atomic op on a typed buffer where
StorageImageReadWithoutFormat is available will cause SPIR-V validation
failure, and assertion in Mesa debug builds, because the image will be
declared with Unknown format.
2022-11-21 18:28:42 +01:00
Francisco Casas
43631bde4d
vkd3d-shader/hlsl: Revert expr_compatible_data_types() args names to "t1" and "t2".
...
Unlike compatible_data_types() and implicit_compatible_data_types(),
this function is intended to be symmetrical. So it makes sense to
preserve the names "t1" and "t2" for the arguments.
2022-11-18 22:29:07 +01:00
Francisco Casas
bd501ce336
vkd3d-shader/hlsl: Don't produce a parse error on empty buffer_body.
2022-11-18 22:29:06 +01:00
Francisco Casas
f100f5b726
vkd3d-shader/hlsl: Check for non-static object references on resource stores.
2022-11-18 22:29:04 +01:00
Francisco Casas
dd1008867e
tests: Add missing entry for max.shader_test in Makefile.am.
2022-11-18 22:29:02 +01:00
Francisco Casas
f21693b284
vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
...
Otherwise, for instance, the added test results in:
debug_hlsl_writemask: Assertion `!(writemask & ~VKD3DSP_WRITEMASK_ALL)' failed.
Which happens in allocate_variable_temp_register() when the variable's
type reg_size is <= 4 but its component count is larger, which may
happen if it contains objects.
2022-11-10 22:48:26 +01:00
Francisco Casas
90e6e418a3
vkd3d-shader/hlsl: Use the base type of the array elements in write_sm1_type().
2022-11-10 22:48:23 +01:00
Francisco Casas
6873b71304
vkd3d-shader/hlsl: Validate that statics don't contain both resources and numerics.
2022-11-10 22:48:21 +01:00
Francisco Casas
2fa913ccaa
vkd3d-shader/hlsl: Validate that extern structs don't contain objects SM < 5.
...
It is worth noting that these checks should also be included for
declarations inside cbuffers, once they are implemented.
2022-11-10 22:48:19 +01:00
Francisco Casas
3153ce3145
vkd3d-shader/hlsl: Don't allocate object types as constant registers.
2022-11-10 22:48:16 +01:00
Francisco Casas
6f6ba8aa56
vkd3d-shader/hlsl: Properly free new store node memory if init_deref() fails.
2022-11-10 22:48:11 +01:00
Zebediah Figura
3857ca06fa
vkd3d-shader/hlsl: Write SM4 dcl_thread_group instructions.
2022-11-08 20:53:08 +01:00
Zebediah Figura
718c79b823
vkd3d-shader/hlsl: Parse the numthreads attribute.
2022-11-08 20:53:04 +01:00
Zebediah Figura
d6799bd5d3
vkd3d-shader/hlsl: Parse function attributes.
2022-11-08 20:53:03 +01:00
Zebediah Figura
da56f41ceb
vkd3d-shader/hlsl: Use hlsl_new_synthetic_var() in hlsl_new_func_decl().
2022-11-08 20:53:01 +01:00
Zebediah Figura
1019bbead6
vkd3d-shader/hlsl: Add a hlsl_fixme() for compute shader thread counts.
...
In particular so that we don't cause test crashes by outputting invalid compute
shaders.
2022-11-08 20:52:59 +01:00
Zebediah Figura
c0782a9029
tests: Add some tests for HLSL attribute syntax.
2022-11-08 20:52:59 +01:00
Zebediah Figura
4d17758657
tests: Always compile HLSL shaders.
...
Do not rely on a draw or dispatch command to do this.
This allows more efficiently testing syntax, in cases where testing the actual
shader functionality is not interesting.
2022-11-08 20:52:57 +01:00
Zebediah Figura
520c7457a9
vkd3d-shader/sm4: Use a flat array to store destination types.
...
This cuts about 12 kB off of the 64-bit build.
2022-11-08 20:52:36 +01:00
Zebediah Figura
4173158c8b
vkd3d-shader/sm4: Use a flat array to store source types.
2022-11-08 20:52:34 +01:00
Zebediah Figura
e2aed38509
vkd3d-shader/spirv: Avoid using DXBC-specific definitions.
2022-11-08 20:52:32 +01:00
Zebediah Figura
ba08825ccd
vkd3d-shader/sm4: Use the VKD3D_DXBC_MAX_SOURCE_COUNT macro where possible.
2022-11-08 20:52:31 +01:00
Zebediah Figura
35b48a8b04
vkd3d-shader/spirv: Rename struct vkd3d_dxbc_compiler to struct spirv_compiler.
...
We would like to generate SPIR-V for input formats other than DXBC.
The "vkd3d_" prefix is dropped, partly to make names shorter, and partly to help
clarify what is an internal function.
I prefer avoiding the vkd3d_* prefix on all internal functions, for these
reasons. However, I'm open to restoring it.
2022-11-08 20:52:29 +01:00
Zebediah Figura
58c7c4b806
vkd3d-common: Always prefix debug output with "vkd3d".
...
Make it clear which library the debug output is coming from, without relying on
the function name including "vkd3d".
2022-11-08 20:52:27 +01:00
Zebediah Figura
c416627e64
vkd3d-shader/hlsl: Propagate copies for resource store instructions.
2022-10-31 22:07:47 +01:00
Zebediah Figura
9bdae4dfaa
vkd3d-shader/hlsl: Write SM4 UAV store instructions.
2022-10-31 22:07:45 +01:00
Zebediah Figura
03f9d16047
vkd3d-shader/hlsl: Parse UAV stores.
2022-10-31 22:07:44 +01:00
Zebediah Figura
0a2aaa690e
vkd3d-shader/hlsl: Implement typed UAV loads.
2022-10-31 22:07:43 +01:00
Zebediah Figura
12e397de9a
vkd3d-shader/hlsl: Write SM4 UAV declarations.
2022-10-31 22:07:41 +01:00
Zebediah Figura
2ec67e0f10
vkd3d-shader/hlsl: Allocate UAVs.
2022-10-31 22:07:40 +01:00
Francisco Casas
4096d453c4
tests: Add a test for storing to a UAV array.
2022-10-31 22:07:40 +01:00
Zebediah Figura
8044fce040
tests: Add more tests for UAV allocation.
2022-10-31 22:07:40 +01:00
Zebediah Figura
52069386c4
tests: Fix constructor declaration in the partial UAV write test.
...
Make sure the test fails for the right reason. Spotted by Francisco Casas.
2022-10-31 22:07:37 +01:00
Francisco Casas
b711b2d66b
tests: Add additional tests for explicit casts with flat matrices and vectors.
2022-10-26 23:53:12 +02:00
Francisco Casas
fcef269347
tests: Add additional tests for explicit casts with matrices.
2022-10-26 23:53:12 +02:00
Francisco Casas
588645a79a
tests: Add additional tests for explicit casts with vectors.
2022-10-26 23:53:10 +02:00
Francisco Casas
5af7316a12
vkd3d-shader/hlsl: Support explicit cast between component-wise compatible types.
2022-10-25 21:25:58 +02:00
Francisco Casas
d21fd584b1
vkd3d-shader/hlsl: Support implicit casts between component-wise equal types.
2022-10-25 21:25:57 +02:00
Francisco Casas
1c77811648
vkd3d-shader/hlsl: Remove incorrect criteria for accepting implicit casts.
2022-10-25 21:25:55 +02:00
Francisco Casas
d93ce28995
vkd3d-shader/hlsl: Handle complex types in add_cast().
...
This extends the support of this function, whether doing broadcasts or
component-wise casts, to struct and array types.
2022-10-25 21:25:51 +02:00
Francisco Casas
fb751b48c5
tests: Add additional tests for implicit casts that should fail.
2022-10-25 21:25:51 +02:00
Francisco Casas
0a345a2b73
vkd3d-shader/hlsl: Rename "t1" and "t2" arguments as "src" and "dst".
2022-10-25 21:25:49 +02:00
Brendan Shanks
963ea98a52
vkd3d-common: Add a Windows implementation of vkd3d_set_thread_name().
2022-10-25 21:25:38 +02:00
Zebediah Figura
0ef04659c7
vkd3d-shader/hlsl: Parse UAV types.
2022-10-19 21:59:55 +02:00
Zebediah Figura
fea50d243c
vkd3d-shader/hlsl: Parse texture index expressions.
2022-10-19 21:59:55 +02:00
Zebediah Figura
7115a94063
vkd3d-shader/hlsl: Cast array indices inside of add_array_load().
...
Mostly in the interest of keeping the yacc code as simple as possible.
2022-10-19 21:59:55 +02:00
Zebediah Figura
62fd13059b
tests: Add a basic shader test for typed UAV loads.
2022-10-19 21:59:55 +02:00
Zebediah Figura
75494a4ae6
tests: Add a basic shader test for compute shaders.
2022-10-19 21:59:29 +02:00
Biswapriyo Nath
6f1f14d97a
include: Add the PFN_D3D12_SERIALIZE_ROOT_SIGNATURE typedef.
2022-10-19 21:59:22 +02:00
Biswapriyo Nath
c9198735fd
include: Add the PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER typedef.
2022-10-19 21:59:22 +02:00
Giovanni Mascellani
c644244bcd
tests: Test float operations with uniform inputs.
...
The point of the "uniform" variants is to avoid hiding code generation
bugs because of the constant folding optimization.
2022-10-19 21:59:18 +02:00
Giovanni Mascellani
b6a6a927a7
tests: Test sign rules for float modulus.
2022-10-19 21:59:18 +02:00
Giovanni Mascellani
d1da5436f4
tests: Test sign rules for integer division and modulus.
2022-10-19 21:59:18 +02:00
Giovanni Mascellani
0a07ac6f88
vkd3d-shader/hlsl: Lower float modulus.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-10-19 21:59:17 +02:00
Giovanni Mascellani
eb119878f7
vkd3d-shader/hlsl: Lower int modulus.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-10-19 21:59:15 +02:00
Giovanni Mascellani
85856473f6
vkd3d-shader/hlsl: Write SM4 fractional part instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-10-19 21:59:13 +02:00
Francisco Casas
09d7442cb1
tests: Test explicit casts between types that are component-wise compatible.
2022-10-17 17:59:04 +02:00
Francisco Casas
653b109d8f
tests: Test implicit casts between types that are equal component-wise.
2022-10-17 17:59:01 +02:00
Francisco Casas
5a1b0dbf44
vkd3d-shader/hlsl: Always go through implicit conversion in assignments.
...
Otherwise we silently skip some type checks.
2022-10-17 17:58:56 +02:00
Francisco Casas
e56db9bda5
tests: Test for invalid complex broadcasts.
2022-10-17 17:58:56 +02:00
Francisco Casas
791f8a8faa
tests: Rename structs for readability in broadcast test.
2022-10-17 17:58:53 +02:00
Francisco Casas
3bae0c92c7
tests: Set ULPs to 2 in normalize() test.
...
Otherwise the test fails on a NVIDIA GeForce GTX 1050 Ti GPU.
The error being:
shader_runner:535:Section [test], line 9: Test failed: Got {2.72165507e-01, 4.08248246e-01, 5.44331014e-01, 6.80413783e-01}, expected {2.72165537e-01, 4.08248305e-01, 5.44331074e-01, 6.80413842e-01} at (0, 0).
2022-10-17 17:58:50 +02:00
Francisco Casas
ab8f418207
tests: Add missing backslash to restore skipped tests.
...
Tests after this missing backslash are not being executed since
e9829fdc65
.
2022-10-17 17:58:35 +02:00
Giovanni Mascellani
eb7b594002
vkd3d-shader/hlsl: Lower int division.
2022-10-17 17:58:17 +02:00
Giovanni Mascellani
4c13ae5764
vkd3d-shader/hlsl: Lower int absolute value.
2022-10-17 17:58:14 +02:00
Giovanni Mascellani
ef4990d996
tests: Test int absolute value.
2022-10-17 17:58:14 +02:00
Giovanni Mascellani
5442f4236c
vkd3d-shader/hlsl: Write SM4 square root instructions.
2022-10-17 17:58:12 +02:00
Giovanni Mascellani
8e5aefb309
vkd3d-shader/hlsl: Parse length() intrinsic.
2022-10-17 17:58:09 +02:00
Giovanni Mascellani
a43242a3e6
tests: Test length() intrinsic.
2022-10-17 17:58:09 +02:00
Zebediah Figura
303ce66cef
include: Use __MINGW_PRINTF_FORMAT when compiling with MinGW.
...
The default for MinGW is always ms_printf rather than gnu_printf, but if we are
using ucrtbase or ANSI stdio, we want gnu_printf.
2022-10-17 17:57:56 +02:00
Zebediah Figura
6b45f290f7
vkd3d-shader/hlsl: Pass a location pointer to init_node().
...
Instead of a flat location structure.
2022-10-12 21:58:03 +02:00
Zebediah Figura
20fc4375ad
vkd3d-shader/hlsl: Introduce a hlsl_new_expr() helper.
2022-10-12 21:58:01 +02:00
Zebediah Figura
1e10b5e616
vkd3d-shader/hlsl: Write SM4 reinterpret instructions.
2022-10-12 21:57:59 +02:00
Zebediah Figura
2d4d2e1244
vkd3d-shader/hlsl: Parse the asuint() intrinsic.
2022-10-12 21:57:57 +02:00
Zebediah Figura
eb70f1aeb5
tests: Add a test for asuint().
2022-10-12 21:57:55 +02:00
Giovanni Mascellani
3d85d77ced
demos/gears: Recompile shaders with our compiler.
2022-10-10 21:13:50 +02:00
Giovanni Mascellani
763f7dfa61
demos/triangle: Recompile shaders with our compiler.
2022-10-10 21:13:06 +02:00
Giovanni Mascellani
1655d309bd
vkd3d-shader/hlsl: Write SM4 rsq instructions.
2022-10-10 21:13:04 +02:00
Giovanni Mascellani
d600f0488e
vkd3d-shader/hlsl: Parse normalize intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-10-10 21:13:03 +02:00
Giovanni Mascellani
4ab1a4cef5
tests: Test normalize() intrinsic.
2022-10-10 21:13:01 +02:00
Giovanni Mascellani
73cf9dee8a
include: Add missing vkd3d_shader_compile() transformations and chained structures.
2022-09-28 19:11:13 +02:00
Zebediah Figura
b74a546034
vkd3d-shader/hlsl: Use hlsl_new_constant() in more places.
2022-09-28 19:11:08 +02:00
Zebediah Figura
f8da100052
vkd3d-shader/hlsl: Use hlsl_new_int_constant() in the "primary_expr" rule.
2022-09-28 19:11:05 +02:00
Zebediah Figura
3fc2fdc37f
vkd3d-shader/hlsl: Introduce a hlsl_new_bool_constant() helper.
2022-09-28 19:11:02 +02:00
Zebediah Figura
4c5fd9c7b9
vkd3d-shader/hlsl: Introduce a hlsl_new_float_constant() helper.
2022-09-28 19:10:58 +02:00
Zebediah Figura
15a0b44ada
vkd3d-shader/hlsl: Pass the arguments to hlsl_new_resource_load() as an indirect structure.
...
The function has far too many arguments, including multiple different arguments
with the same type. Use a structure for clarity and to avoid errors.
Merge hlsl_new_sample_lod() into hlsl_new_resource_load() accordingly.
2022-09-27 20:14:54 +02:00
Zebediah Figura
fb724d60e3
vkd3d-shader/hlsl: Make the source parameter to hlsl_copy_deref() const.
2022-09-27 20:14:53 +02:00
Zebediah Figura
e3123f5bd0
vkd3d-shader/hlsl: Pass only a template string to hlsl_new_synthetic_var().
...
Synthesize the internal name from the template inside of this function.
2022-09-27 20:14:51 +02:00
Zebediah Figura
991cddd139
vkd3d-shader/hlsl: Handle failure from hlsl_copy_deref().
2022-09-27 20:14:49 +02:00
Zebediah Figura
32999fc12b
vkd3d-common: Tweak the WARN for VKD3D_ERROR_INVALID_SHADER.
...
vkd3d-shader does not consume only bytecode anymore.
2022-09-27 20:14:42 +02:00
Zebediah Figura
27a6963d6a
vkd3d: Avoid an unused variable warning when building for Win32.
2022-09-27 20:14:35 +02:00
Giovanni Mascellani
d5fd309ef8
vkd3d: Add a macro to mark unreachable code.
...
This should silence warnings about some branches non returning any value
without requiring additional "return 0" statement or similar.
Also, in theory this might enable to compiler to optimize the program
a little bit more, though that's unlikely to have any measurable effect.
2022-09-27 20:14:27 +02:00
Henri Verbeet
56b2f56b86
Release 1.5.
2022-09-21 16:47:49 +02:00
Henri Verbeet
d484a08d10
vkd3d-shader: Add version information to enum vkd3d_shader_compile_option_typed_uav.
2022-09-21 16:47:49 +02:00
Henri Verbeet
6381bc4857
vkd3d-shader: Add a VKD3D_FORCE_32_BIT_ENUM element to enum vkd3d_shader_api_version.
2022-09-21 16:47:49 +02:00
Henri Verbeet
1e559cd51d
vkd3d: Add a VKD3D_FORCE_32_BIT_ENUM element to enum vkd3d_api_version.
2022-09-21 16:47:47 +02:00
Zebediah Figura
b7c94b0213
tests: Check for failure from init_test_context() in the d3d11 runner.
2022-09-19 21:51:30 +02:00
Zebediah Figura
53d6966a5d
tests: Mark test_hull_shader_relative_addressing() as broken on radv.
...
Broken for me with "AMD Radeon RX 560 Series (RADV POLARIS11)" (1002:67ef) but works with llvmpipe; Mesa 22.2.0-rc3.
2022-09-19 21:51:30 +02:00
Zebediah Figura
7393e6ed13
tests: Transition back to D3D12_RESOURCE_STATE_RENDER_TARGET in test_bufinfo_instruction().
2022-09-19 20:13:57 +02:00
Francisco Casas
8e07423ba1
vkd3d-shader/hlsl: Add offset parameter to 'Load' method.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
609632279f
vkd3d-shader/hlsl: Properly check argument count in gather methods.
2022-08-23 15:57:54 -05:00
Francisco Casas
32e6f594f2
vkd3d-shader/hlsl: Properly check argument count in SampleLevel method.
...
Also, TextureCube and TextureCubeArray don't support the offset
argument, so this check is updated here too.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
15b19b15c0
vkd3d-shader/hlsl: Use proper dimensions on SampleLevel method offset parameter.
2022-08-23 15:57:54 -05:00
Francisco Casas
c4be4a4ebf
vkd3d-shader/hlsl: Properly check argument count in Sample method.
...
Also, TextureCube and TextureCubeArray don't support the offset
argument, so this check is updated.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
562f647c2a
vkd3d-shader/hlsl: Use proper dimensions on gather methods offset parameter.
2022-08-23 15:57:54 -05:00
Francisco Casas
652906aea7
vkd3d-shader/hlsl: Use proper dimensions on Sample method offset parameter.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Zebediah Figura
d6f45b730f
vkd3d-shader/hlsl: Parse the SampleLevel method.
2022-08-23 15:57:54 -05:00
Francisco Casas
3d9baef321
vkd3d-shader/hlsl: Support initialization of implicit size arrays.
...
HLSL_ARRAY_ELEMENTS_COUNT_IMPLICIT (zero) is used as a temporal value
for elements_count for implicit size arrays.
This value is replaced by the correct one after parsing the initializer.
In case the implicit array is not initialized correctly, hlsl_error()
is called but the array size is kept at 0. So the rest of the code
must handle these cases.
In shader model 5.1, unlike in 5.0, declaring a multi-dimensional
object-type array with the last dimension implicit results in
an error. This happens even in presence of an initializer.
So, both gen_struct_fields() and declare_vars() first check if the
shader model is 5.1, the array elements are objects, and if there is
at least one implicit array size to handle the whole type as an
unbounded resource array.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
96a7236700
vkd3d-shader/hlsl: Set objects' register size back to 0.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
6989266e76
vkd3d-shader/hlsl: Check for non-static object references.
...
It is responsibility of the shader's programmer to ensure that
object references can be solved statically.
Resource arrays for ps_5_1 and vs_5_1 are an exception which is not
properly handled yet. They probably deserve a different object type.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
1bba18aa75
vkd3d-shader/hlsl: Invalidate components more precisely in copy propagation.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
b5b08bd8a0
vkd3d-shader/hlsl: Replace register offsets with index paths in copy propagation.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
10bd0c48f8
vkd3d-shader/hlsl: Print halfs in dump_ir_constant().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
a8b77b85ca
vkd3d-shader/hlsl: Skip implicit conversion if types are equal.
...
Otherwise we get false in implicit_compatible_data_types() when passing
types that are equal but not convertible according to
convertible_data_type(); e.g. getting:
"Can't implicitly convert from Texture2D<float4> to Texture2D<float4>."
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
732f1737f4
vkd3d-shader/hlsl: Set component count for objects to 1.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
e9829fdc65
tests: Test object references.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
f3432966da
vkd3d-shader/hlsl: Emit a fixme on complex resource load object derefs.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Francisco Casas
f843a7babb
vkd3d-shader/hlsl: Rename 'inner_type' to 'element_type' in function name.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
2022-08-23 15:57:54 -05:00
Martin Storsjö
1c61b20616
vkd3d-shader/spirv: Fix the signature of vkd3d_spirv_build_op_type_image.
...
Don't assume that enums and uint32_t parameters are identical. Clang
16 changes the diagonstic for incompatible function pointer types
from a warning into an error by default.
This fixes the following error, when built (for aarch64, but probably
also for other architectures) in MSVC mode:
../src/libs/vkd3d/libs/vkd3d-shader/spirv.c:1083:13: error: incompatible function pointer types passing 'uint32_t (struct vkd3d_spirv_builder *, uint32_t, SpvDim, uint32_t, uint32_t, uint32_t, uint32_t, SpvImageFormat)' (aka 'unsigned int (struct vkd3d_spirv_builder *, unsigned int, enum SpvDim_, unsigned int, unsigned int, unsigned int, unsigned int, enum SpvImageFormat_)') to parameter of type 'vkd3d_spirv_build7_pfn' (aka 'unsigned int (*)(struct vkd3d_spirv_builder *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)') [-Wincompatible-function-pointer-types]
vkd3d_spirv_build_op_type_image);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/libs/vkd3d/libs/vkd3d-shader/spirv.c:612:68: note: passing argument to parameter 'build_pfn' here
SpvOp op, const uint32_t *operands, vkd3d_spirv_build7_pfn build_pfn)
^
Signed-off-by: Martin Storsjö <martin@martin.st >
2022-08-15 21:59:38 +02:00
Francisco Casas
577014c017
vkd3d-shader/hlsl: Replace register offsets with index paths in split copies.
...
hlsl_new_store() and hlsl_new_load() are deleted, so now there are no more
direct ways to create derefs with offsets in hlsl.c and hlsl.h.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:34:19 +02:00
Francisco Casas
d7d2fe145f
vkd3d-shader/hlsl: Replace register offsets with index paths in input/output copies.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:34:08 +02:00
Francisco Casas
1b69adbd13
vkd3d-shader/hlsl: Add input and output variables using the same function.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:34:05 +02:00
Francisco Casas
c572adbf2a
vkd3d-shader/hlsl: Move register offset functions to hlsl_codegen.c.
...
This can be done now, to ensure that register offsets are no longer used
in hlsl.c and hlsl.h.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:34:01 +02:00
Francisco Casas
349aab2a6a
vkd3d-shader/hlsl: Replace register offsets with index paths in resource loads initialization.
...
At this point, the parse code is free of offsets; it only uses index
paths.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:58 +02:00
Francisco Casas
5b664c7a5c
vkd3d-shader/hlsl: Introduce hlsl_new_store_index().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:55 +02:00
Francisco Casas
f3289e1661
vkd3d-shader/hlsl: Introduce hlsl_new_store_component().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:51 +02:00
Francisco Casas
7515b8255b
vkd3d-shader/hlsl: Print index paths in dump_deref().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:46 +02:00
Francisco Casas
4fede46c9a
vkd3d-shader/hlsl: Replace register offsets with index paths in load initializations.
...
The transform_deref_paths_into_offsets pass turns these index paths back
into register offsets.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:37 +02:00
Zebediah Figura
a2996c2d59
include: Add list_move_after() and list_move_before().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:33 +02:00
Francisco Casas
2dcfc888fb
vkd3d-shader/hlsl: Unify type minor/major size functions.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:29 +02:00
Francisco Casas
039b69ace9
vkd3d-shader/hlsl: Introduce add_load_index().
...
At this point add_load() is split into add_load_component() and
add_load_index(); register offsets are hidden for these functions.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:25 +02:00
Francisco Casas
a32157f586
vkd3d-shader/hlsl: Introduce add_load_component().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
2022-08-10 21:33:19 +02:00
Giovanni Mascellani
4112c36076
vkd3d: Do not store the latch bit in an object that could be overwritten.
...
Once a event is signaled, the corresponding struct vkd3d_waiting_event
entry is considered dead and could be overwritten, so it's not safe to
keep a pointer to it in d3d12_fence_SetEventOnCompletion(). Instead,
keep the latch bit in d3d12_fence_SetEventOnCompletion() and put a
pointer to it in struct vkd3d_waiting_event.
2022-08-09 22:14:30 +02:00
Conor McCarthy
4afe69d04a
vkd3d: Send typed UAV unknown format read support info to vkd3d-shader.
...
Fixes reflections in Control appearing with only their red component.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52146
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
2022-08-09 22:14:28 +02:00
Conor McCarthy
971ab01add
vkd3d: Check specific formats for typed UAV load feature support.
...
Vulkan's shaderStorageImageExtendedFormats includes more formats than are
required by D3D12.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
2022-08-09 22:14:28 +02:00
Conor McCarthy
3dbd2ceca6
vkd3d-shader: Introduce a compile option to use Unknown format for typed UAV loads.
...
Specifying R32 for UAVs created with a vector format, e.g. R32G32B32A32_FLOAT,
results in only the red being loaded/stored, potentially causing images to
contain only the red component.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
2022-08-09 22:14:28 +02:00
Conor McCarthy
d7554accbc
tests: Test float4 UAV buffer load/store.
...
This currently fails if the shader loads from the UAV, because it causes
vkd3d-shader to specify the R32f format instead of Unknown.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
2022-08-09 22:14:08 +02:00
Giovanni Mascellani
5168929edc
vkd3d: Remove unused field fence_destruction_cond.
2022-08-08 18:55:22 +02:00
Giovanni Mascellani
5749ae4700
vkd3d: Unlock fence worker mutex before exiting.
...
Pthread mandates that a mutex must be unlocked before being destroyed.
In pratice I doubt this make a difference on any platform (certainly
it doesn't on Linux), but let's comply to standards.
2022-08-08 18:55:19 +02:00
Stefan Dösinger
aae4e31ba8
vkd3d-shader: Initialize counter_var_info unconditionally.
2022-07-25 21:09:30 +02:00
Conor McCarthy
3b579f6fe7
vkd3d: Delay unlocking the fence until after the blocked command queue op is written.
...
An unblocking Signal() on the CPU must be handled after the blocked op
is written, or the op will not be flushed until the next signal.
The device is locked while the fence is already locked, so the fence must
never be locked after locking the device. Currently this never occurs.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-20 22:28:53 +02:00
Conor McCarthy
c1071fda52
vkd3d: Delay adding a command queue to the blocked list until after the op is written.
...
Otherwise the following sequence can occur:
1. A command queue is added to the blocked list during a Wait() call.
2. An unblocking Signal() occurs on the CPU in another thread, flushing the
blocked ops, but as no op has been written, the queue is removed from the
blocked list.
3. The blocked op is written.
3. Another op is queued and the queue is not re-added to the blocked
list because this only happens for the first op.
World of Warcraft triggers this issue.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-20 22:28:49 +02:00
Francisco Casas
a7a4eb95e5
vkd3d-shader/hlsl: Introduce function to clean up hlsl_derefs.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-18 22:07:42 +02:00
Francisco Casas
b9435fb1ff
vkd3d-shader/hlsl: Pass field to add_record_load() via index.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-18 22:07:33 +02:00
Francisco Casas
300a6c8fc3
vkd3d-shader/hlsl: Handle errors in recursive calls in hlsl_type_clone().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-18 22:07:30 +02:00
Zebediah Figura
e5905bbf0f
vkd3d-shader/hlsl: Store the struct fields as an array.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-18 22:07:26 +02:00
Giovanni Mascellani
2ec6d4d3ff
tests: Test arithmetic int operations without constant operands.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-05 22:43:30 +02:00
Giovanni Mascellani
448f856c09
vkd3d-shader/hlsl: Write SM4 logic or instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-05 22:43:28 +02:00
Giovanni Mascellani
15e4b9bafb
vkd3d-shader/hlsl: Write SM4 logic and instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-05 22:43:25 +02:00
Giovanni Mascellani
02d92c9af6
vkd3d-shader/hlsl: Write SM4 logic not instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-05 22:43:22 +02:00
Giovanni Mascellani
3e88a46d4c
vkd3d-shader/hlsl: Write SM4 casts from bool.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-07-05 22:43:18 +02:00
Giovanni Mascellani
98ebe9b69c
vkd3d-shader/hlsl: Fold constant integral bitwise or.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-28 22:20:27 +02:00
Giovanni Mascellani
06c22b6a65
vkd3d-shader/hlsl: Fold constant integral bitwise and.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-28 22:20:24 +02:00
Giovanni Mascellani
4016ddff77
vkd3d-shader/hlsl: Fold constant integral bitwise xor.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-28 22:20:22 +02:00
Giovanni Mascellani
4a692dca4e
vkd3d-shader/hlsl: Fold constant integral min().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-28 22:20:17 +02:00
Giovanni Mascellani
8cb865d65a
vkd3d-shader/hlsl: Fold constant integral max().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-28 22:20:11 +02:00
Zebediah Figura
0ddaa80616
vkd3d-shader/hlsl: Fold constant swizzles.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-28 22:20:08 +02:00
Giovanni Mascellani
7682da58a8
vkd3d-shader/hlsl: Parse lerp() intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-27 21:23:33 +02:00
Zebediah Figura
bb32ffad18
vkd3d-shader/hlsl: Parse the ldexp() intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-27 21:23:31 +02:00
Giovanni Mascellani
c7198bc964
vkd3d-shader/hlsl: Write SM4 dot product instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-27 21:23:28 +02:00
Giovanni Mascellani
58d017ccc1
vkd3d-shader/hlsl: Parse dot() intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-27 21:23:26 +02:00
Giovanni Mascellani
80586bf7a9
tests: Test lerp() intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-27 21:23:24 +02:00
Giovanni Mascellani
0462d81484
tests: Test ldexp() intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-27 21:23:22 +02:00
Giovanni Mascellani
7b6e782139
tests: Test dot() intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-27 21:23:19 +02:00
Henri Verbeet
9d4df5e704
Release 1.4.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-22 18:31:51 +02:00
Henri Verbeet
2cad32d7fa
build: Add tests/vulkan_procs.h to the distribution.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-22 17:28:38 +02:00
Henri Verbeet
780da51b65
build: Add the d3d9 and d3d11 shader runners to the distribution.
...
We don't want to add these to tests_shader_runner_SOURCES, because
they're only supposed to get built for the "crosstest" target.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-22 17:28:35 +02:00
Henri Verbeet
4093fe49bf
vkd3d-compiler: Default to VKD3D_SHADER_SOURCE_HLSL when the source size is smaller than a uint32_t.
...
For example, when the input is an empty file. Leaving the source type as
VKD3D_SHADER_SOURCE_NONE would cause (potential) subsequent
get_source_type_info() calls to return NULL, resulting in a segmentation
fault.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-22 17:28:33 +02:00
Biswapriyo Nath
a021b0a7d3
include: Add ID3D12Device3 declaration in vkd3d_d3d12.idl.
...
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-21 20:16:35 +02:00
Biswapriyo Nath
f9921fc691
include: Add more D3D12_HEAP_FLAGS in vkd3d_d3d12.idl.
...
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-21 20:16:30 +02:00
Biswapriyo Nath
b7fbac1c09
include: Add ID3D12Device2 declaration in vkd3d_d3d12.idl.
...
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-10 11:59:57 +02:00
Biswapriyo Nath
694e5c865b
include: Add ID3D12SharingContract interface declarations in vkd3d_d3d12sdklayers.idl.
...
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-10 11:59:52 +02:00
Biswapriyo Nath
abd82c9e6d
include: Add ID3D12DebugDevice interface declarations in vkd3d_d3d12sdklayers.idl.
...
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-10 11:59:47 +02:00
Giovanni Mascellani
10917a7f47
vkd3d-shader/hlsl: Parse the mul() intrinsic.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:29 +02:00
Giovanni Mascellani
62fa53f9b6
vkd3d-shader/hlsl: Split matrix operations.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:27 +02:00
Giovanni Mascellani
3a755cb0e2
vkd3d-shader/hlsl: Lower matrix casts.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:22 +02:00
Giovanni Mascellani
41df40b4ed
tests: Test how matrix types interact with semantics.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:18 +02:00
Zebediah Figura
f821a1b29a
tests: Add a test for multiple render targets.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:12 +02:00
Zebediah Figura
08e2a8e9bb
tests: Add a basic shader test for UAVs.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:09 +02:00
Zebediah Figura
2b69ee67bd
tests/shader_runner: Make the render target into a resource.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:06 +02:00
Zebediah Figura
d2d29d1b88
tests/shader_runner: Create the render pass and framebuffer in vulkan_runner_draw().
...
Prepare to allow for dynamically changing the bound attachments in consecutive
draw calls.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:13:03 +02:00
Zebediah Figura
ac404afe93
tests/shader_runner: Allow creating UAV resources.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-09 19:12:59 +02:00
Giovanni Mascellani
76bb1b7439
vkd3d-shader/hlsl: Have add_expr() return hlsl_ir_node*.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-08 18:51:38 +02:00
Giovanni Mascellani
e37ac63813
vkd3d-shader/hlsl: Introduce add_cast() helper.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-08 18:51:32 +02:00
Giovanni Mascellani
8cd4995958
vkd3d-shader/hlsl: Allocate enough space for temporary matrices.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-08 18:51:28 +02:00
Zebediah Figura
ea38ecc4ff
vkd3d-shader/hlsl: Split matrices into multiple variables in prepend_input_copy().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-08 18:51:03 +02:00
Zebediah Figura
d2d4bc24e9
vkd3d-shader/hlsl: Split matrices into multiple variables in append_output_copy().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-08 18:50:52 +02:00
Biswapriyo Nath
4647209f27
include: Add ID3D12Debug interface declarations in vkd3d_d3d12sdklayers.idl.
...
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-08 18:50:40 +02:00
Zebediah Figura
14f77294b1
vkd3d-shader/spirv: Do not print a warning for VKD3D_SHADER_COMPILE_OPTION_API_VERSION.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-07 19:39:52 +02:00
Zebediah Figura
64b784dbb9
vkd3d-utils: Allow writing log output via a custom callback.
...
When using PE vkd3d through Wine, debug output may be swallowed by writing to
Win32 stderr. Avoid this by providing a way to hook up vkd3d log output to Wine
output.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-07 19:39:01 +02:00
Zebediah Figura
46b1266809
vkd3d: Allow writing log output via a custom callback.
...
When using PE vkd3d through Wine, debug output may be swallowed by writing to
Win32 stderr. Avoid this by providing a way to hook up vkd3d log output to Wine
output.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-07 19:38:57 +02:00
Zebediah Figura
174172887b
vkd3d-shader: Allow writing log output via a custom callback.
...
When using PE vkd3d through Wine, debug output may be swallowed by writing to
Win32 stderr. Avoid this by providing a way to hook up vkd3d log output to Wine
output.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-06-07 19:38:49 +02:00
Giovanni Mascellani
6ff6cb4ed2
tests/shader_runner: Allow probing a single component.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-31 21:53:26 +02:00
Zebediah Figura
4a9d675c49
tests/shader_runner: Move the check_readback_data_vec4() call to shader_runner.c.
...
Split the probe_vec4() directive into get_rt_readback() and release_readback().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-31 21:53:21 +02:00
Zebediah Figura
e6ea409bbf
tests: Move check_readback_data_vec4() to utils.h.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-31 21:53:16 +02:00
Zebediah Figura
1e8e0650c9
tests/shader_runner: Use the resource_readback structure in the Vulkan shader runner.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-31 21:53:11 +02:00
Zebediah Figura
ccdb702d53
tests/shader_runner: Use the common resource_readback structure in d3d9 and d3d11 readback structures.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-31 21:53:08 +02:00
Zebediah Figura
b5e773058c
tests: Separate generic and d3d12-specific readback fields.
...
Move the "resource" field to a new "d3d12_resource_readback" structure
encapsulating struct resource_readback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-31 21:52:49 +02:00
Giovanni Mascellani
bb49bdba6a
vkd3d-shader/hlsl: Allow majority modifiers on function declarations.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-13 18:21:15 +02:00
Giovanni Mascellani
e39559690b
vkd3d-shader/hlsl: Offset register id for input/ouput variables.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-13 18:21:12 +02:00
Francisco Casas
1fc44e7be4
tests: Test textures in initializers.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-13 18:20:45 +02:00
Francisco Casas
719e1bad1d
tests: Add additional subtests to implicit array initialization.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-13 18:20:43 +02:00
Conor McCarthy
8cae046803
vkd3d: Map timeline semaphore values to fence virtual values and buffer out-of-order waits.
...
Strictly increasing timeline values must be mapped to fence virtual values
to avoid invalid use of Vulkan timeline semaphores. In particular, non-
increasing values and value jumps of >= 4G are permitted in d3d12.
Different virtual D3D12 command queues may map to the same Vulkan queue.
If a wait of value N is submitted on one command queue, and then a signal
for >= N is submitted on another, but they are sent to the same Vk queue,
the wait will never complete. The solution is to buffer out-of-order waits
and any subsequent queue commands until an unblocking signal value is
submitted to a different D3D12 queue, or signaled on the CPU.
Buffering out-of-order waits also fixes the old fence implementation so it
is fully functional, though a bit less efficient than timeline semaphores.
Based in part on vkd3d-proton patches by Hans-Kristian Arntzen. Unlike the
vkd3d-proton implementation, this patch does not use worker threads for
submissions to the Vulkan queue.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-13 18:20:10 +02:00
Conor McCarthy
a5c63dc4b9
vkd3d: Always destroy created objects on d3d12_fence_init() failure.
...
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-13 18:20:08 +02:00
Matteo Bruni
228f7ab5cd
vkd3d-shader/hlsl: Handle over/underflow when parsing integer literals.
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-12 19:33:56 +02:00
Andrey Gusev
a9dc39dd92
include: Add more D3D12_ROOT_SIGNATURE_FLAGS enums.
...
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-12 19:33:01 +02:00
Giovanni Mascellani
e6ce077ad4
vkd3d-shader/hlsl: Handle loops in copy propagation.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-04 18:32:35 +02:00
Giovanni Mascellani
ec85eb538b
vkd3d-shader/hlsl: Remove the location parameter from initialize_var_components().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-04 18:32:26 +02:00
Giovanni Mascellani
9ad6ad7065
vkd3d-shader/hlsl: Use a more sensible source location in add_constructor().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-04 18:32:22 +02:00
Conor McCarthy
07e38212ec
vkd3d: Replace the signaled semaphore list with a resizable array.
...
Order does not need to be preserved here, and another function will add
to this array when mapped timeline semaphores are implemented.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 20:19:35 +02:00
Conor McCarthy
488722b9b5
vkd3d: Create one fence worker thread per command queue.
...
Simplifies the handling of GPU waits, and in vkd3d-proton is reported
to increase performance when support for multiple Vulkan queues is
enabled, because it avoids the problem of fences being signaled while
they sit in the pending buffer waiting to be moved to the wait buffer.
Based on a vkd3d-proton patch by Philip Rebohle.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 20:19:32 +02:00
Conor McCarthy
34e7b87966
vkd3d: Introduce an internal refcount to d3d12_fence to replace the thread waiting mechanism.
...
Simplifies the preservation of fence objects until worker threads are
done with them, and will be needed when threaded queue submission is
added.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 20:19:29 +02:00
Giovanni Mascellani
6167b3a4e2
vkd3d-shader/hlsl: Handle branches in copy propagation.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 11:30:21 +02:00
Giovanni Mascellani
38d7913f5f
vkd3d-shader/hlsl: Allow storing to matrices.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 11:30:18 +02:00
Francisco Casas
1240a947d2
tests: Test initialization of implicit size arrays.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 11:30:04 +02:00
Francisco Casas
4b4537b874
tests: Test complex broadcasts.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 11:30:00 +02:00
Francisco Casas
a58c0e7c9d
vkd3d-shader/hlsl: Detect missing loads on rhs when splitting copies of non-numeric types.
...
Otherwise we can get failed assertions:
assert(node->type == HLSL_IR_LOAD);
because broadcasts to these types are not implemented yet.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-05-02 11:29:54 +02:00
Zebediah Figura
f34db84c62
configure: Allow specifying the Vulkan library path with VULKAN_LIBS.
...
Do not define it for the vkd3d build, but restore support for overriding it as a
configure argument.
This partially reverts 99a3adcc19
.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52915
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:46:18 +02:00
Giovanni Mascellani
cf7cf05cb7
vkd3d-shader/hlsl: Parse matrix constructors.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:45:45 +02:00
Giovanni Mascellani
ff3ec5d4a5
vkd3d-shader/hlsl: Support matrix indexing.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:45:43 +02:00
Francisco Casas
246ff14511
vkd3d-shader/hlsl: Support all complex initalizers.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:45:41 +02:00
Giovanni Mascellani
e2b4f01a9f
vkd3d-shader/hlsl: Simplify flow in add_array_load().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:45:39 +02:00
Giovanni Mascellani
c5c50a8b9b
vkd3d-shader/hlsl: Do not generate useless swizzles.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:45:37 +02:00
Giovanni Mascellani
6b6ff48ece
vkd3d-shader/hlsl: Test the INT_MIN / -1 constant folding special case.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:45:35 +02:00
Giovanni Mascellani
4d181bc622
vkd3d-shader/hlsl: Do not allow NaNs in SM1.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-27 21:45:32 +02:00
Zebediah Figura
eb2c3b0b90
tests: Test depth comparison sampling with cubemap array textures.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-26 16:02:13 +02:00
Zebediah Figura
9839850b87
vkd3d-shader: Remove the workaround for sample_c.
...
The current workaround is broken for texture cube arrays, which already have 4
components.
Sampling with the components not packed together apparently succeeds with newer
NVidia drivers, so just remove the workaround. Tested with 470.103.01 on a GTX
1060.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52886
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-26 16:02:09 +02:00
Francisco Casas
535bbfa6f8
tests: Test matrix initialization.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:12:59 +02:00
Giovanni Mascellani
74273ccadd
vkd3d-shader/hlsl: Do not handle vector types in major_size() and minor_size().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:12:55 +02:00
Giovanni Mascellani
3bbb90a3cb
tests: Test matrix copying with a non-square matrix.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:12:49 +02:00
Giovanni Mascellani
d2ba10a696
vkd3d-shader/hlsl: Update split_copy()'s introductory comment.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:12:39 +02:00
Giovanni Mascellani
0e8098ccfe
vkd3d-shader/hlsl: Add trailing dots to warning messages.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:12:23 +02:00
Giovanni Mascellani
c680b674d6
vkd3d-shader/hlsl: Do not generate infinities in SM1.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:12:17 +02:00
Conor McCarthy
6b893b597b
vkd3d: Prevent a null pointer dereference when a descriptor is not a UAV.
...
Fixes crashes in Shadow of the Tomb Raider, GRID 2019 and probably others.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:12:04 +02:00
Zebediah Figura
cab16fe903
configure: Allow specifying the shared object name of the Vulkan library at configure time.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:11:55 +02:00
Zebediah Figura
99a3adcc19
configure: Remove the no longer used check for VULKAN_LIBS.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:11:47 +02:00
Zebediah Figura
f9c7b123d8
demos: Load libvulkan dynamically.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-25 22:11:43 +02:00
Giovanni Mascellani
e38ee49e99
vkd3d-shader/hlsl: Split matrix copies.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 23:02:14 +02:00
Giovanni Mascellani
d1fac2660c
vkd3d-shader/hlsl: Support vector indexing.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 23:02:11 +02:00
Zebediah Figura
aaa743033a
vkd3d-shader/hlsl: Return bool from add_record_load() and add_array_load().
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 23:02:00 +02:00
Zebediah Figura
367bd15ec5
tests: Simplify "probe" directive syntax and parsing a bit.
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 23:01:04 +02:00
Zebediah Figura
f187b48792
tests: Mark individual invalid shaders as todo.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 23:00:57 +02:00
Zebediah Figura
0929ec7462
tests: Load libvulkan dynamically in d3d12_crosstest.h.
...
We would like to allow overriding the soname of libvulkan, in which case the
tests and demos should respect that override.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 16:41:46 +02:00
Zebediah Figura
beffe5f367
tests: Load libvulkan dynamically in shader_runner_vulkan.c.
...
We would like to allow overriding the soname of libvulkan, in which case the
tests and demos should respect that override.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 16:41:44 +02:00
Zebediah Figura
bcad6d6997
tests: Load libvulkan dynamically in vkd3d_api.c.
...
We would like to allow overriding the soname of libvulkan, in which case the
tests and demos should respect that override.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 16:41:42 +02:00
Zebediah Figura
d087b9ea5b
include: Implement vkd3d_dl*() wrappers for Win32 platforms.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 16:41:39 +02:00
Zebediah Figura
a58e713314
include: Move vkd3d_dl*() helpers to vkd3d_common.h.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-20 16:41:37 +02:00
Giovanni Mascellani
16da0b3300
tests: Add another vector indexing test.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:24 +02:00
Giovanni Mascellani
564883a201
tests: Test matrix indexing.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:22 +02:00
Giovanni Mascellani
2b23b7329c
vkd3d-shader/hlsl: Fold constant modulus.
...
This commit includes work by Francisco Casas.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:20 +02:00
Giovanni Mascellani
40b299c727
vkd3d-shader/hlsl: Fold constant division.
...
This commit includes work by Francisco Casas.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:17 +02:00
Francisco Casas
aefadb87b6
vkd3d-shader/hlsl: Support complex numeric initializers.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:15 +02:00
Francisco Casas
9c518b45d1
vkd3d-shader/hlsl: Handle static struct initializer instructions.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:13 +02:00
Francisco Casas
7cee81cf3e
vkd3d-shader/hlsl: Remove instruction list parameter in struct_var_initializer().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:11 +02:00
Zebediah Figura
c3a5cd7c13
tests: Do not abort when an invalid shader test fails.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:09 +02:00
Zebediah Figura
98a36dfa41
tests: Mark individual test directives as todo.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:06 +02:00
Zebediah Figura
c0562e2a1e
tests: Introduce support for marking individual test directives as todo.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:04 +02:00
Zebediah Figura
26b89cc338
tests: Skip probe directives if the last render failed.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-15 21:18:01 +02:00
Zebediah Figura
e3f78706ec
tests: Introduce a Vulkan shader runner.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-12 19:00:19 +02:00
Zebediah Figura
3e8b5a9fc3
tests: Store samplers in a fixed-size array.
...
We will need to allocate some structures in the Vulkan backend; this is easier
if we don't need to worry about allocating them dynamically.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-12 19:00:16 +02:00
Zebediah Figura
e208d87847
tests: Store resources in a fixed-size array.
...
We will need to allocate some structures in the Vulkan backend; this is easier
if we don't need to worry about allocating them dynamically.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-12 19:00:14 +02:00
Zebediah Figura
02182ce4f7
tests: Transition back to D3D12_RESOURCE_STATE_RENDER_TARGET in d3d12_runner_probe_vec4().
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-12 19:00:11 +02:00
Francisco Casas
7d31fd1788
vkd3d-shader/hlsl: Ensure that SM4 endif has 0 source registers.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-11 22:45:59 +02:00
Zebediah Figura
93c6fd0eb0
tests: Introduce a D3D9 shader runner.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-08 11:49:33 +02:00
Zebediah Figura
90b4cbc1f2
tests: Try to avoid using SV_Position from shaders which can be tested with SM1.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-08 11:49:31 +02:00
Zebediah Figura
d2872fa33a
tests: Specify the arguments to "probe rect" as right and bottom, instead of width and height.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-08 11:49:27 +02:00
Zebediah Figura
83a3de8529
tests: Allow skipping shader tests if requirements are not met.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-08 11:49:27 +02:00
Zebediah Figura
c7a7cf498d
tests: Use a vertex buffer to draw quads for shader tests.
...
For compatibility with shader models before 4.0.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-08 11:49:16 +02:00
Zebediah Figura
94fcd52031
tests: Mark some more tests as requiring shader model 4.0.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:32:21 +02:00
Giovanni Mascellani
53d7433054
vkd3d-shader/hlsl: Write SM4 right shift instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:32:13 +02:00
Giovanni Mascellani
95df144c69
vkd3d-shader/hlsl: Assert that bool values are not bit-shifted.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:32:10 +02:00
Giovanni Mascellani
ed921151b0
vkd3d-shader/hlsl: Write SM4 uint modulus instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:32:07 +02:00
Giovanni Mascellani
e37f1ed26d
vkd3d-shader/hlsl: Write SM4 uint division instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:32:04 +02:00
Giovanni Mascellani
f3e81645be
vkd3d-shader/hlsl: Write SM4 uint negation instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:32:00 +02:00
Giovanni Mascellani
c92897ffd2
vkd3d-shader/hlsl: Write SM4 int multiplication instructions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:31:55 +02:00
Giovanni Mascellani
8c086b5c91
vkd3d-shader/hlsl: Lower casts to bool to comparisons.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:31:52 +02:00
Matteo Bruni
8fa196cf51
vkd3d-shader/hlsl: Handle HLSL_TYPE_DOUBLE in sm4_base_type().
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:31:46 +02:00
Matteo Bruni
233157649c
vkd3d-shader/hlsl: Drop extra '\n' from hlsl_error() messages.
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:31:44 +02:00
Matteo Bruni
4ab4d42468
vkd3d-shader/hlsl: Drop extra '\n' from hlsl_fixme() messages.
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-07 18:31:42 +02:00
Zebediah Figura
2e4367a470
build: Do not cross-compile tests if tests are not enabled.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:52:21 +02:00
Zebediah Figura
2f082de904
build: Do not make cross-compiled import libs an explicit dependency of the "crosstest" targets.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:52:19 +02:00
Zebediah Figura
113303c730
build: Do not cross-compile demos if demos are not enabled.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:52:12 +02:00
Zebediah Figura
d3347554a2
configure: Check for xcb-event and xcb-icccm.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:52:03 +02:00
Giovanni Mascellani
1ec00d8eba
vkd3d-shader/hlsl: Fold constant not-equal expressions.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
d9dc79de66
vkd3d-shader/hlsl: Store boolean constants as unsigned.
...
With this change it is possible to store booleans as 0xffffffff,
similarly as what happens at runtime.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
5b24f7a06c
vkd3d-shader/hlsl: Add a helper to create constants of arbitrary type.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
39bd9b0943
vkd3d-shader/hlsl: Pass a pointer to the location to hlsl_new_*_constant().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
58956922df
vkd3d-shader/hlsl: Abort on inconsistent types in fold_cast().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
c63fbbda06
vkd3d-shader/hlsl: Abort on inconsistent types in write_sm4_cast().
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
4739cf1d33
vkd3d-shader/hlsl: Check types when folding constants.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
bc7c89bc1f
vkd3d-shader/hlsl: Use an unsigned variable for iteration.
...
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:51:07 +02:00
Zebediah Figura
08d198ba6f
tests: Make test_shader_interstage_interface() into a shader test.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:50:22 +02:00
Zebediah Figura
6e966bcf23
vkd3d-shader/hlsl: Allow "nointerpolation" to be specified on struct fields.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:50:19 +02:00
Matteo Bruni
428a6b4033
vkd3d-shader/hlsl: Report failure when encountering matrix instructions.
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-05 17:50:17 +02:00
Zebediah Figura
ea93c5c767
vkd3d-shader/hlsl: Write SM4 integer addition instructions.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-04 21:12:57 +02:00
Zebediah Figura
c9b7669240
vkd3d-shader/hlsl: Declare integer semantics as having constant interpolation.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-04 21:12:52 +02:00
Zebediah Figura
e6dabf22bf
vkd3d-shader/hlsl: Respect the 'nointerpolation' modifier.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-04 21:12:47 +02:00
Zebediah Figura
8e07f65595
vkd3d-shader/hlsl: Allow mixing "in" and "out" with other modifiers.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-04 21:12:41 +02:00
Giovanni Mascellani
8e6c526779
vkd3d-shader/hlsl: Write SM4 bitwise NOT instructions.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-04 21:12:38 +02:00
Giovanni Mascellani
2959ad74f7
vkd3d-shader/hlsl: Write SM4 bitwise XOR instructions.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-04 21:12:34 +02:00
Giovanni Mascellani
f22d866cee
vkd3d-shader/hlsl: Write SM4 bitwise OR instructions.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-04-04 21:12:30 +02:00
Matteo Bruni
d2104522fe
vkd3d-shader/preproc: Don't add additional spaces after whitespace tokens.
...
This is especially a problem when e.g. it introduces a whitespace
before a #pragma directive, breaking shader compilation.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-31 21:24:56 +02:00
Francisco Casas
a75560af3d
vkd3d-shader/hlsl: Treat all braceless initializers as assignments.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-31 21:24:53 +02:00
Francisco Casas
6284cf7d57
vkd3d-shader/hlsl: Don't check exact number of components for braceless initialization of numeric types.
...
The implicit conversion in add_assignment() takes responsability now.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-31 21:24:49 +02:00
Francisco Casas
22f0b1df77
vkd3d-shader/hlsl: Properly free parse_variable_def memory.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-31 21:24:46 +02:00
Francisco Casas
426c08eba4
vkd3d-shader/hlsl: Add 'braces' flag to parse initializers.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-31 21:24:43 +02:00
Francisco Casas
d9dc1a4554
vkd3d-shader/hlsl: Concatenate nested initializers.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-31 21:24:39 +02:00
Francisco Casas
bed085cf9a
vkd3d-shader/hlsl: Avoid leaks on memory allocation failures when parsing initializers.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-31 21:24:35 +02:00
Conor McCarthy
889e5af5dd
tests: Test signalling a fence to a lower value after a GPU wait.
...
Ensures the new fence implementation using timeline semaphores handles
this correctly.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-24 23:23:15 +01:00
Conor McCarthy
22d8665300
vkd3d: Use Vulkan timeline semaphores for D3D12 fences.
...
D3D12 supports signalling a fence to a lower value, while Vulkan timeline
semaphores do not. On the GPU side this is handled by simply submitting
the signal anyway, if a test for this passes on device creation, because
working around this is impractical. For CPU signals the Vulkan semaphore
is replaced with a new one at the lower value only if no waits and/or
signals are pending on the GPU. Otherwise, a fixme is emitted.
Partly based on a vkd3d-proton patch by Hans-Kristian Arntzen (not
including the handling of lower fence values).
The old implementation is used if KHR_timeline_semaphore is not
available or GPU signals do not work for a lower value.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-24 19:47:24 +01:00
Conor McCarthy
e3045090a8
vkd3d: Write a resource null descriptor to all applicable sets when one set is written.
...
Binding a shader with the wrong null descriptor type works in Windows. The
introduction of Vulkan-backed heaps may cause a regression in clients which
do this, because the written index will remain unpopulated in all other sets,
but a shader may access it in one of them.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-24 19:46:20 +01:00
Conor McCarthy
0627462192
vkd3d: Use Vulkan null descriptors if EXT_robustness2 is available.
...
This implements all remaining unsupported image view dimensions and saves
a small amount of resources because null buffers and images are no longer
needed. It matches the D3D12 requirement that all reads return zero,
which is not strictly true of the existing implementation using resources
of small but non-zero size. Warnings on null view creation are silenced
because there should no longer be a difference from D3D12 behaviour.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-24 19:46:13 +01:00
Conor McCarthy
f34168481d
vkd3d: Remove an invalid NULL check.
...
The pointer is never NULL.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-23 18:40:58 +01:00
Conor McCarthy
ae2219a7f7
vkd3d: Do not enable Vulkan-backed descriptor heaps if required update-after-bind features are missing.
...
descriptorBindingUniformBufferUpdateAfterBind is false for Intel Skylake
(and maybe others).
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-23 18:40:56 +01:00
Zebediah Figura
24a27daf98
tests: Add a test for the "nointerpolation" modifier.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:43 +01:00
Zebediah Figura
c7623262cc
tests: Specify the primitive type from the shader runner frontend.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:41 +01:00
Zebediah Figura
492cd135e3
tests: Specify the vertex count from the shader runner frontend.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:39 +01:00
Zebediah Figura
84c73f82f7
tests: Allow specifying a custom vertex buffer.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:37 +01:00
Zebediah Figura
f11f7032cd
tests: Make the "texture" structure more generic.
...
Use it to hold any type of resource, regardless of type and binding.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:35 +01:00
Zebediah Figura
3ed4c6fe23
tests: Allow specifying a custom input layout.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:32 +01:00
Zebediah Figura
16b383aef5
tests: Specify the default vertex shader in the shader runner frontend.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:29 +01:00
Zebediah Figura
52223250d7
tests: Add support for running shader tests with a custom vertex shader.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-22 18:41:26 +01:00
Zebediah Figura
71db328d38
tests: Remove NULL rect handling from d3d11_runner_probe_vec4().
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-21 22:35:05 +01:00
Zebediah Figura
099df706f0
tests: Use a macro to define the render target size.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-21 22:35:03 +01:00
Zebediah Figura
e5be178fe2
tests: Rename struct d3d11_shader_context to struct d3d11_shader_runner.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-21 22:35:01 +01:00
Zebediah Figura
39459d6c3e
tests: Rename struct d3d12_shader_context to struct d3d12_shader_runner.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-21 22:34:59 +01:00
Zebediah Figura
5841e79102
tests: Rename struct shader_context to struct shader_runner.
...
This is a bit clearer, and avoids colliding with other things named "context",
e.g. struct test_context, or d3d11 device contexts.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-21 22:34:57 +01:00
Zebediah Figura
ead5cc3113
tests: Use SV_VertexID to draw a triangle in d3d11_runner_draw_quad().
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Zebediah Figura
41d75fde22
vkd3d-shader/hlsl: Write SM4 left shift instructions.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Zebediah Figura
ccb3326516
vkd3d-shader/hlsl: Write SM4 bitwise AND instructions.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Zebediah Figura
5251ecff89
vkd3d-shader/hlsl: Parse the sv_vertexid semantic.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Zebediah Figura
6569b37e97
vkd3d-shader/hlsl: Reverse the switch order in write_sm4_expr().
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Zebediah Figura
8fe4d7d37e
vkd3d-shader/hlsl: Cast pow() input to float.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Francisco Casas
a7e6d6b9d2
vkd3d-shader/hlsl: Remove redundant type check in declare_vars().
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Giovanni Mascellani
84059d61c3
vkd3d-shader/hlsl: Allow offsets for scalar and vector variables.
...
Signed-off-by: Francisco Casas <fcasas@codeweavers.com >
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:36 +01:00
Zebediah Figura
ee764359d0
vkd3d-shader/hlsl: Correctly calculate offsets for array elements.
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com >
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 22:20:32 +01:00
Conor McCarthy
2b0fd2a055
vkd3d: Do not copy descriptors having identical views.
...
Improves performance in Control, which copies large numbers of descriptors
per frame where often only ~10% are not identical.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 12:40:02 +01:00
Conor McCarthy
5e4f1e1ead
vkd3d: Optimise descriptor copying for Vulkan-backed heaps.
...
Source descriptors are copied to separate arrays to facilitate use of
pre-initialised Vulkan structures, and allow arrayed writes where
possible.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 12:40:02 +01:00
Conor McCarthy
2b71ea406f
vkd3d: Back descriptor heaps with Vulkan descriptor sets if descriptor indexing is available.
...
The existing implementation using virtual descriptor heaps, where Vk
descriptor sets are created for the bindings in the root descriptor tables,
is inefficient when multiple command lists are used with large descriptor
heaps. It also cannot support updating a descriptor set after it is bound.
This patch creates Vk sets for each D3D12 heap. Because D3D12 heaps
can contain CBV, SRV and UAV descriptors in the same heap, multiple Vk sets
are needed for each heap, however the total number of populated descriptors
is never more than (heap size + UAV counter count).
A new 'virtual_heaps' config option is introduced to make the old
implementation available when needed. It's not always possible to determine
if this is necessary when the device is created.
Up to nine Vk descriptor sets may be used. It's theoretically possible to
reduce this to eight by placing immutable samplers in the push descriptor
set layout, but contradictions in earlier versions of the Vulkan spec made
driver support inconsistent. The documentation was corrected in version
1.2.203.
This patch also adds support for UAV counter descriptor arrays. It's not
practical to add this in a separate patch due to complications with
combining the old UAV counter implementation with the new descriptor heap
implementation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47713
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47154
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-18 12:38:53 +01:00
Giovanni Mascellani
500ce146c3
tests: Mark atomic operations as done on AMD.
...
They seem to work with mesa 21.3.7. Since some developers are
using older releases where the bug is not yet fixed, I am leaving
it marked as a bug.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-17 20:52:30 +01:00
Giovanni Mascellani
90827313f5
tests: Mark NaN conversion as todo on NVIDIA.
...
D3D mandates that NaN becomes zero when converted to unsigned[1],
while it doesn't look like that SPIR-V's OpConvertFToU has a similar
provision[2]. In practice, this seems to work on AMD and fails on
NVIDIA, where 0x80000000 is produced instead.
[1] https://microsoft.github.io/DirectX-Specs/d3d/archive/D3D11_3_FunctionalSpec.htm#22.17.4%20dtou
[2] https://www.khronos.org/registry/SPIR-V/specs/unified1/SPIRV.html#Conversion
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-17 20:52:30 +01:00
Giovanni Mascellani
8efbd4de51
tests: Work around a rounding difference between NVIDIA and AMD.
...
NVIDIA and AMD round differently the assignment of 0.5f to a UAV
of type R16G16_UNORM. NVIDIA rounds to 0x7fff and AMD to 0x8000.
According to both Vulkan and D3D12 specifications, both values
are acceptable, but the discrepancy currently appears as a
failure on NVIDIA cards.
Work around the issue by using 0.25f instead of 0.5f, which is
rounded as 0x4000 on both implementations.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-17 20:52:30 +01:00
Zebediah Figura
fa17a170b1
vkd3d-shader/sm4: Recognise the msad opcode.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-14 18:31:08 +01:00
Zebediah Figura
0ca2444e9b
tests: Use only one heap for textures in the d3d12 shader runner.
...
The d3d12 specification forbids simultaneously binding more than one heap of a
given type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-14 18:26:50 +01:00
David Gow
13ca6322c7
vkd3d: Handle D3D12_APPEND_ALIGNED_ELEMENT for <4 byte wide elements.
...
In d3d12, input element alignment needs to be the _minimum_ of 4 and the size of
the type. See the D3D11 spec, section 4.4.6, which behaves similarly:
https://microsoft.github.io/DirectX-Specs/d3d/archive/D3D11_3_FunctionalSpec.htm#4.4.6%20Element%20Alignment
This is correctly taken into account when generating, e.g., the
vertex_buffer_stride_align_mask used for validation, but is not taken
into account when D3D12_APPEND_ALIGNED_ELEMENT is used to automatically
place input elements. Currently, vkd3d always assumes the alignment is
4.
This means that, for example, bytes or shorts should be packed tightly
together when D3D12_APPEND_ALIGNED_ELEMENT is used, but are instead
padded to 4 bytes.
Fixing this makes units appear in Age of Empires IV.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-09 20:53:15 +01:00
Zebediah Figura
721ea8fa60
tests: Mark some tests as requiring shader model 4.0.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-08 17:45:21 +01:00
Zebediah Figura
1f4056125d
tests: Avoid using non-float uniforms where possible.
...
SM1 encodes these differently.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-08 17:45:18 +01:00
Zebediah Figura
efd9e9e990
tests: Use SM1-compatible uniform layouts in shader tests.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-08 17:45:16 +01:00
Zebediah Figura
9bbce56dad
tests: Avoid depending on float accuracy in the round() test.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-08 17:45:14 +01:00
Zebediah Figura
e9ff88469e
tests: Split hlsl-operations into individual test units.
...
Partly to make the tests easier to navigate, and partly to allow marking some
tests as SM4+.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-08 17:45:11 +01:00
Francois Gouget
b64482e7c7
vkd3d-shader/spirv: Fix the spelling of some comments.
...
Signed-off-by: Francois Gouget <fgouget@free.fr >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-07 16:39:09 +01:00
Francois Gouget
ab3855133d
announce: Fix a typo in the libvkd3d-shader new interfaces section.
...
Signed-off-by: Francois Gouget <fgouget@free.fr >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-07 16:31:31 +01:00
Francois Gouget
419c746806
vkd3d: Fix the spelling of a couple of trace message.
...
Signed-off-by: Francois Gouget <fgouget@free.fr >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-07 16:31:28 +01:00
Francois Gouget
c1e376911e
vkd3d: Add a trailing linefeed to a couple of WARN() messages.
...
Signed-off-by: Francois Gouget <fgouget@free.fr >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-07 16:31:25 +01:00
Zebediah Figura
fc5df4d330
vkd3d-utils: Simplify handling of shader messages a bit.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-07 16:30:44 +01:00
Zebediah Figura
e9fd9a79a1
vkd3d-utils: Avoid leaking "messages" when vkd3d_blob_create() fails.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com >
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com >
Signed-off-by: Alexandre Julliard <julliard@winehq.org >
2022-03-07 16:30:37 +01:00