Elizabeth Figura
4cd2dd50f9
vkd3d-shader/hlsl: Separate an "array" rule.
2024-07-08 18:22:39 +02:00
Nikolay Sivov
94130c2394
vkd3d-shader/fx: Add support for writing RasterizerState objects.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Nikolay Sivov
f03cb7e911
vkd3d-shader/hlsl: Add RasterizerState type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Nikolay Sivov
12947aa50d
vkd3d-shader/fx: Add support for writing DepthStencilState objects.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Nikolay Sivov
1008c49ce6
vkd3d-shader/fx: Cast state block field values to target type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Francisco Casas
597e55691a
vkd3d-shader/hlsl: Only error out on bind_count register reservation overlaps for SM1.
...
While on SM1 a register reservation reserves the whole size in
registers of the variable's data type, overlapping conflicts are only
checked up to the bind_count (used size) for each variable.
2024-07-08 18:12:03 +02:00
Nikolay Sivov
48ff7de8ef
vkd3d-shader/hlsl: Add support for ConstantBuffer<> type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Victor Chiletto
abbcf0461f
vkd3d-shader/hlsl: Reserve register slots for unused buffers.
2024-07-03 17:09:16 -03:00
Victor Chiletto
da36a447b8
vkd3d-shader/hlsl: Validate cbuffer register allocations.
2024-07-03 17:09:16 -03:00
Victor Chiletto
27414ef928
vkd3d-shader/hlsl: Do not immediately fail parsing for malformed 'b' register reservations.
...
This is a fxc quirk. In most cases, this throws an error, but for global
variables it's completely ignored.
2024-07-03 17:09:16 -03:00
Victor Chiletto
b5b3c8b9ff
vkd3d-shader/hlsl: Ignore bracket offsets for 'b' register types prior to SM 5.1.
...
This is a fxc quirk that was fixed for SM >= 5.1 only.
2024-07-03 14:34:45 -03:00
Victor Chiletto
8fb3b604bf
vkd3d-shader/hlsl: Pass a pointer to struct hlsl_reg_reservation in parse_reservation_index.
...
Instead of passing the struct components individually.
2024-07-03 14:05:58 -03:00
Victor Chiletto
e13eb64d4c
vkd3d-shader/hlsl: Support expressions as register offsets.
2024-07-03 14:05:58 -03:00
Yuxuan Shui
ccb6150aab
vkd3d-shader/hlsl: Implement storing to a swizzled matrix.
2024-06-20 12:39:46 +02:00
Elizabeth Figura
acc9d79fbb
vkd3d-shader/hlsl: Only allocate the aligned size for uniforms.
2024-06-18 13:19:44 -05:00
Elizabeth Figura
7fe581203b
vkd3d-shader/hlsl: Respect the coords writemask in write_sm1_resource_load().
...
Spotted by Francisco Casas.
2024-06-18 13:19:44 -05:00
Henri Verbeet
90f26759b5
vkd3d: Always use UINT views to clear UAVs with integer formats.
...
We would previously try to use float pipelines for SINT formats.
2024-06-13 23:26:35 +02:00
Giovanni Mascellani
a54187f3c9
vkd3d: Do not synchronize with the geometry shader stage if it's not enabled.
2024-06-13 23:24:22 +02:00
Giovanni Mascellani
a1a07de8ca
vkd3d: Enable VK_KHR_portability_subset if available.
...
We don't check it, but at least the validation layer does not complain
when using MoltenVK.
2024-06-13 23:24:22 +02:00
Giovanni Mascellani
3254eff328
vkd3d: Do not request VK_EXT_debug_marker if debug is disabled.
...
Because it requires VK_EXT_debug_report.
2024-06-13 23:24:22 +02:00
Nikolay Sivov
222c52380b
vkd3d-shader/fx: Fix variable buffer offset value.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-12 19:02:20 +02:00
Nikolay Sivov
402dc94259
vkd3d-shader/fx: Set EXPLICIT_BIND_POINT flag for packoffset() reservations as well.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-12 19:02:20 +02:00
Elizabeth Figura
2f88442d7d
vkd3d-shader/hlsl: Always initialize $$ when parsing modifiers from an arbitrary string.
...
This avoids spurious errors like "row_major and column_major are mutually
exclusive" when an invalid modifier is used.
Fixes: cf7c05f431
2024-06-11 15:54:10 +02:00
Nikolay Sivov
72ddea6030
vkd3d-shader/fx: Use original full semantic name.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:53:19 +02:00
Nikolay Sivov
1124ea46ee
vkd3d-shader/hlsl: Store original semantic name.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:53:19 +02:00
Conor McCarthy
47d077e5ce
vkd3d: Interpret a null vertex buffer 'views' pointer as a null buffer.
2024-06-11 15:52:28 +02:00
Conor McCarthy
589ed1e358
vkd3d: Allow block compressed textures to have unaligned width and height.
2024-06-11 15:51:34 +02:00
Nikolay Sivov
ba18035260
vkd3d-shader/d3dbc: Write load instruction for tex2Dbias().
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:50:34 +02:00
Nikolay Sivov
a289393fe7
vkd3d-shader/asm: Output 'bias' flag for 'texld'.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:50:34 +02:00
Nikolay Sivov
ccbe36fb8d
vkd3d-shader/hlsl: Implement tex2Dbias().
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56701
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:50:34 +02:00
Elizabeth Figura
33e5553158
vkd3d-shader/hlsl: Write SM5.1 binding reflection data.
2024-06-11 15:49:30 +02:00
Elizabeth Figura
bb41947fc6
vkd3d-shader: Write SM5.1 register spaces.
2024-06-11 15:49:30 +02:00
Elizabeth Figura
4355e6ca69
vkd3d-shader/hlsl: Allocate register spaces for objects.
2024-06-11 15:49:30 +02:00
Elizabeth Figura
7b61b0219e
vkd3d-shader/hlsl: Allocate register spaces for constant buffers.
2024-06-11 15:49:30 +02:00
Elizabeth Figura
28a5e23814
vkd3d-shader: Write SM5.1 register indices.
...
Separate ID and index. Allocate IDs for all external resources (but ignore them
for shader models other than 5).
2024-06-11 15:49:30 +02:00
Elizabeth Figura
19a13740de
vkd3d-shader/hlsl: Put constant buffers into the extern_resources struct.
...
Mostly to get the same sorting logic.
2024-06-11 15:49:30 +02:00
Elizabeth Figura
558320b52f
vkd3d-shader/hlsl: Add a hlsl_fixme() for 5.1 resource arrays.
...
These are a bit trickier to handle, and need more tests.
2024-06-11 15:49:30 +02:00
Conor McCarthy
9b070edf01
vkd3d-shader/spirv: Implement the QUAD_READ_LANE_AT instruction.
2024-06-11 15:48:21 +02:00
Conor McCarthy
0b8b5b2d0f
vkd3d-shader/dxil: Implement DX intrinsic QuadReadLaneAt.
2024-06-11 15:48:21 +02:00
Conor McCarthy
c298493e4f
vkd3d-shader/spirv: Implement the QUAD_READ_ACROSS_* instructions.
2024-06-11 15:48:21 +02:00
Conor McCarthy
8a15642f45
vkd3d-shader/dxil: Implement DX intrinsic QuadOp.
2024-06-11 15:48:21 +02:00
Francisco Casas
f5bfa728eb
vkd3d-shader/hlsl: Reorder default values for matrices for SM4.
...
Default value initializers behave differently than regular initializers
for matrices on SM4 profiles.
While regular initializers assign the rhs elements in reading-order
(completing one row at the time), default initializers assing the rhs
elements in Chinese reading-order (completing one column at the time).
So after lowering a default value to a constant, the index of the
component to which this default value is stored is computed to meet
this expectation. This can be done because the default values.
For reference, compiling this shader:
row_major int2x3 m = {1, 2, 3, 4, 5, 6};
float4 main() : sv_target
{
return float4(m[0][0], 99, 99, 99);
}
gives the following buffer definition:
// cbuffer $Globals
// {
//
// row_major int2x3 m; // Offset: 0 Size: 28
// = 0x00000001 0x00000003 0x00000005 0x00000000
// 0x00000002 0x00000004 0x00000006
//
// }
Given that the matrix is column-major, m's default value is actually
{{1, 3, 5}, {2, 4, 6}}, unlike the {{1, 2, 3}, {4, 5, 6}} one would
expect in a regular initializer.
SM1 profiles assign the elements in regular reading order.
2024-06-11 15:46:40 +02:00
Francisco Casas
ab01fedc5d
vkd3d-shader/hlsl: Fix numeric register offset for matrix components.
2024-06-11 15:46:40 +02:00
Francisco Casas
affadf319c
vkd3d-shader/d3dbc: Write default values for SM1.
2024-06-11 15:46:40 +02:00
Francisco Casas
253c994155
vkd3d-shader/tpf: Write default values for SM4.
2024-06-11 15:46:40 +02:00
Francisco Casas
099a64aeb2
vkd3d-shader/hlsl: Initialize default values with braceless initializers.
...
It is hard to initialize default values on add_assignment() and calling
add_assignment() for initializers is not really necessary: the only
thing we need from it the implicit cast.
2024-06-11 15:46:40 +02:00
Francisco Casas
e8dbc36bd2
vkd3d-shader/hlsl: Record default values for uniforms and constant buffers.
2024-06-11 15:46:40 +02:00
Henri Verbeet
1fe7a6581b
vkd3d-shader/ir: Rename the "handler_idx" field of struct vkd3d_shader_instruction to "opcode".
2024-05-30 19:57:01 +02:00
Nikolay Sivov
5265fbb789
vkd3d-shader/fx: Do not write shared buffers block when not compiling as a child effect.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:50 +02:00
Nikolay Sivov
ea177a7750
vkd3d-shader/hlsl: Handle "unsigned int" type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:29 +02:00
Henri Verbeet
36c123c005
Release 1.12.
2024-05-29 22:05:28 +02:00
Nikolay Sivov
308d735923
vkd3d-shader/ir: Set texture register dimension as VEC4 when normalising combined samplers.
...
Thanks, Giovanni.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-27 21:07:51 +02:00
Conor McCarthy
ae25c80498
vkd3d: Check for mutable descriptor set allocation failure in d3d12_descriptor_heap_create_descriptor_set().
2024-05-27 21:07:30 +02:00
Nikolay Sivov
f090d1e80d
vkd3d-shader: Remove explicit newlines from hlsl_fixme() messages.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-23 23:12:10 +02:00
Henri Verbeet
b5ac6ac636
vkd3d-shader: Use a separate allocation for the "semantic_name" field of shader signature elements.
...
For tpf shader this would previously be a pointer into the original
shader code, and for d3dbc shaders we'd use static strings.
Unfortunately the dxil parser creates shader signatures where these
are pointers to metadata strings, and those go away when we call
sm6_parser_cleanup().
We could conceivably store a flag in the shader signature to indicate
whether shader_signature_cleanup()/vkd3d_shader_free_shader_signature()
should free the "semantic_name" field. It'd be a little ugly, and seems
unlikely to be worth it, but I'd be willing to be convinced.
2024-05-23 23:12:06 +02:00
Victor Chiletto
105ef28273
vkd3d-shader/preproc: Treat CR as whitespace.
2024-05-23 23:11:58 +02:00
Giovanni Mascellani
dfa3ee25e0
vkd3d: Move the full stops before the newline.
2024-05-22 22:15:27 +02:00
Victor Chiletto
fa5708d3b5
vkd3d-shader/hlsl: Fix XOR assign operator lexing.
2024-05-22 22:15:20 +02:00
Nikolay Sivov
9c83caeda6
vkd3d-shader/fx: Use correct type name when reusing types.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-16 21:49:50 +02:00
Nikolay Sivov
a913ac7844
vkd3d-shader/fx: Implement writing shared buffers.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-16 21:49:48 +02:00
Henri Verbeet
ce6f8a6a30
vkd3d-shader/dxil: Parse the shader into a vsir program in vkd3d_shader_sm6_parser_create().
2024-05-16 21:49:40 +02:00
Henri Verbeet
6474e8cc7b
vkd3d-shader/tpf: Parse the shader into a vsir program in vkd3d_shader_sm4_parser_create().
2024-05-16 21:49:39 +02:00
Henri Verbeet
402b96ef3b
vkd3d-shader/d3dbc: Parse the shader into a vsir program in vkd3d_shader_sm1_parser_create().
2024-05-16 21:49:38 +02:00
Henri Verbeet
efe9dfd73a
vkd3d-shader/ir: Do not store the vkd3d-shader configuration flags in struct vkd3d_shader_parser.
2024-05-16 21:49:37 +02:00
Henri Verbeet
19b552ce1b
vkd3d-shader/ir: Pass an initialised vsir_program structure to vkd3d_shader_parser_init().
2024-05-16 21:49:36 +02:00
Henri Verbeet
9e4a790de1
vkd3d-shader/ir: Use a separate allocation for the vsir program in struct vkd3d_shader_parser.
2024-05-16 21:49:34 +02:00
Francisco Casas
061dc39036
vkd3d-shader/hlsl: Also lower matrix swizzles and index loads in const passes.
2024-05-15 21:17:51 +02:00
Francisco Casas
0d252f894a
vkd3d-shader/hlsl: Run more constant passes on static expressions eval.
2024-05-15 21:17:50 +02:00
Francisco Casas
4f60c7167e
vkd3d-shader/hlsl: Run constant passes in a separate function.
2024-05-15 21:17:49 +02:00
Conor McCarthy
9e57039fce
vkd3d-shader/dxil: Handle SV_ClipDistance and SV_CullDistance.
2024-05-14 20:44:22 +02:00
Conor McCarthy
4f50af4c83
vkd3d-shader/dxil: Handle SV_Coverage out.
2024-05-14 20:44:18 +02:00
Conor McCarthy
e1c774bfeb
vkd3d-shader/spirv: Implement the WAVE_READ_LANE_FIRST instruction.
2024-05-14 20:44:10 +02:00
Conor McCarthy
47f0483267
vkd3d-shader/dxil: Implement DX intrinsic WaveReadLaneFirst.
2024-05-14 20:44:06 +02:00
Conor McCarthy
936d8e4f61
vkd3d-shader/spirv: Implement the WAVE_READ_LANE_AT instruction.
2024-05-14 20:44:04 +02:00
Conor McCarthy
e41643ab8f
vkd3d-shader/dxil: Implement DX intrinsic WaveReadLaneAt.
2024-05-14 20:44:02 +02:00
Victor Chiletto
c9af34ab28
vkd3d-shader/hlsl: Avoid a null pointer dereference in hlsl_block_cleanup (UBSan).
...
destroy_block() is called with a NULL block from:
* create_loop, through the loop rules for while and do-while loops.
* The selection_statement rule, in the case $6.else_block is NULL.
* free_parse_initializer.
2024-05-14 20:43:48 +02:00
Conor McCarthy
98f73ca2e5
vkd3d-shader/ir: Allow all DCL instructions to occur outside hull shader phases.
2024-05-13 22:27:13 +02:00
Conor McCarthy
def87539de
vkd3d-shader/dxil: Delete bool not-equal-to-false comparison instructions.
2024-05-13 22:27:13 +02:00
Conor McCarthy
f47ac703ab
vkd3d-shader/spirv: Emit a trace instead of a warning message for ignored alignment.
2024-05-13 22:27:13 +02:00
Conor McCarthy
e340855122
vkd3d-shader/spirv: Do not warn if no global flags are unhandled.
2024-05-13 22:27:13 +02:00
Conor McCarthy
ea5624e5e8
vkd3d-shader/dxil: Emit bool inputs and outputs as uint.
...
DXIL reads/writes uint for these.
2024-05-13 22:27:13 +02:00
Francisco Casas
5b7191280b
vkd3d-shader: Return a valid pointer when count=0 in param allocator (ubsan).
...
After compiling and linking with '-fsanitize=undefined' the following
error pops up in many tests:
vkd3d_shader_main.c:2024:12: runtime error: member access within null pointer of type 'struct vkd3d_shader_param_node'
This happens in the scenario where shader_param_allocator_get() gets
called with 'count = 0' but no allocation has been made yet, so
allocator->current is NULL.
In this case the result of the function, given by:
params = &allocator->current->param[allocator->index * allocator->stride];
is an invalid non-NULL pointer.
Functions like shader_sm4_read_instruction() may call
vsir_program_get_src_params() or vsir_program_get_dst_params() with 0
counts for various DCL_ instructions, as well as things like NOP,
ELSE, and SYNC.
We could avoid calling the functions in question with 0 counts, but it
doesn't seem worth the effort.
Alternatively, we could just return NULL on 'count == 0', but this is
also complicated because NULL is interpreted as a memory allocation
failure on the callers.
So we force allocation of the next node even if 'count = 0' when
allocator->current is NULL.
2024-05-13 22:27:13 +02:00
Francisco Casas
28d267b7c0
vkd3d-shader/hlsl: Allocate SM1 numeric uniforms in decreasing bind count.
2024-05-13 22:26:21 +02:00
Francisco Casas
e7450ce539
vkd3d-shader/d3dbc: Write used bind count for numeric uniforms.
2024-05-13 22:26:13 +02:00
Francisco Casas
f548644222
vkd3d-shader/hlsl: Only allocate numeric bind count for SM1 numeric uniforms.
...
Unless they have register reservations, in which case the whole
variable is still reserved.
2024-05-13 22:26:08 +02:00
Francisco Casas
573d511344
vkd3d-shader/hlsl: Track bind count according to usage for uniforms.
...
Where bind count means the number of registers required to include all
dereferences to the variable within the shader as in
hlsl_ir_var.bind_count[].
2024-05-13 22:26:07 +02:00
Francisco Casas
e0a801e796
vkd3d-shader/hlsl: Improve tracking of used components running DCE before.
...
track_object_components_usage() had to be improved to also
register derefs on resource stores.
It was not doing it because it assumed that for every resource store
there was a resource load already, which was true, before calling DCE.
2024-05-13 22:26:05 +02:00
Francisco Casas
657e460d11
vkd3d-shader/hlsl: Allocate unused variables with register reservations on SM1.
2024-05-13 22:26:03 +02:00
Giovanni Mascellani
05394b624a
vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS18 in CheckFeatureSupport().
2024-05-13 11:50:37 +02:00
Giovanni Mascellani
7c7503713a
vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS17 in CheckFeatureSupport().
2024-05-13 11:50:37 +02:00
Giovanni Mascellani
d528fdbebf
vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS16 in CheckFeatureSupport().
2024-05-13 11:50:37 +02:00
Giovanni Mascellani
5445c4c8aa
vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS15 in CheckFeatureSupport().
2024-05-13 11:50:37 +02:00
Giovanni Mascellani
761ee1e487
vkd3d: Handle D3D12_FEATURE_D3D12_OPTIONS14 in CheckFeatureSupport().
2024-05-13 11:50:37 +02:00
Conor McCarthy
fb20639eb4
vkd3d: Return E_INVALIDARG if the requested shader model is unknown.
2024-05-13 11:50:33 +02:00
Conor McCarthy
d17956ced8
vkd3d: Return a shader model no higher than the requested one for D3D12_FEATURE_SHADER_MODEL.
2024-05-13 11:50:32 +02:00
Conor McCarthy
77259da1ad
vkd3d-shader/spirv: Implement the WAVE_PREFIX_BIT_COUNT instruction.
2024-05-13 11:50:23 +02:00
Conor McCarthy
2810edf45b
vkd3d-shader/dxil: Implement DX intrinsic WavePrefixBitCount.
2024-05-13 11:50:22 +02:00
Conor McCarthy
065ef0c5e4
vkd3d-shader/spirv: Implement the WAVE_IS_FIRST_LANE instruction.
2024-05-13 11:50:21 +02:00
Conor McCarthy
c30976e5c2
vkd3d-shader/dxil: Implement DX intrinsic WaveIsFirstLane.
2024-05-13 11:50:20 +02:00
Conor McCarthy
feef2577ef
vkd3d-shader/spirv: Implement the WAVE_ALL_BIT_COUNT instruction.
2024-05-13 11:50:19 +02:00
Conor McCarthy
cb5163f9a4
vkd3d-shader/dxil: Implement DX intrinsic WaveAllBitCount.
2024-05-13 11:50:17 +02:00
Giovanni Mascellani
ca35023ed0
vkd3d: Only request properties and features when the corresponding extension is available.
...
This fixes a number of validation errors.
2024-05-08 21:08:30 +02:00
Giovanni Mascellani
ea090a34cd
vkd3d: Init physical device information after checking available extensions.
2024-05-08 21:08:30 +02:00
Giovanni Mascellani
826b75722b
vkd3d: Do not automatically succeed if no extensions are available.
...
So error messages for missing required extensions are emitted.
2024-05-08 21:08:28 +02:00
Giovanni Mascellani
dbe3384609
vkd3d: Move checking device extensions to a dedicated function.
2024-05-08 21:08:28 +02:00
Giovanni Mascellani
29c63906bc
vkd3d: Warn about missing extensions only when meaningful.
2024-05-08 21:08:28 +02:00
Stefan Dösinger
d6b1e62ffc
vkd3d: Add a win32 version of vkd3d_get_program_name.
2024-05-08 21:08:22 +02:00
Conor McCarthy
962096f179
vkd3d-shader/dxil: Implement DX intrinsics EmitStream, CutStream and EmitThenCutStream.
2024-05-08 21:08:16 +02:00
Conor McCarthy
cc49f26af1
vkd3d-shader/ir: Validate geometry shader properties.
2024-05-08 21:08:15 +02:00
Conor McCarthy
4fd2d5aa77
vkd3d-shader/dxil: Load geometry shader properties.
2024-05-08 21:08:14 +02:00
Nikolay Sivov
0053cc52b7
vkd3d-shader/fx: Initial support for writing sample state objects.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:08:05 +02:00
Nikolay Sivov
3c6470e3b2
vkd3d-shader/fx: Set UAV count in the header.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:08:04 +02:00
Nikolay Sivov
1a79d1e945
vkd3d-shader/fx: Filter out unsupported object types.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:08:03 +02:00
Nikolay Sivov
9bbed14987
vkd3d-shader/fx: Fix shader counter in the header.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:08:02 +02:00
Nikolay Sivov
cb1a271151
vkd3d-shader/fx: Set texture count in the header.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:08:01 +02:00
Nikolay Sivov
162d8760be
vkd3d-shader/fx: Set RTV counter in the header.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:08:00 +02:00
Nikolay Sivov
a879ac5536
vkd3d-shader/fx: Write depth stencil view object variables.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:07:59 +02:00
Zebediah Figura
c2eb563e50
vkd3d-shader/fx: Skip uniform copy logic for global variables.
2024-05-08 21:07:58 +02:00
Francisco Casas
68483d070f
vkd3d-shader/hlsl: Turn hlsl_state_block_entry arguments into hlsl_src.
...
This allows to apply passes that replace instructions in
hlsl_state_block_entry.instrs.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-08 21:07:57 +02:00
Zebediah Figura
cefd6f9de6
vkd3d-utils: Implement ID3D12ShaderReflection::GetResourceBindingDesc().
2024-05-06 22:12:50 +02:00
Zebediah Figura
35d388eedd
vkd3d-utils: Initialize the null type vtbl.
2024-05-06 22:12:50 +02:00
Zebediah Figura
7b3c47ba2e
vkd3d-shader/tpf: Write the field offset in bytes.
2024-05-06 22:12:48 +02:00
Zebediah Figura
68562d375e
vkd3d-utils: Fix bounds comparison against element counts.
2024-05-06 22:12:48 +02:00
Zebediah Figura
2480eec98b
vkd3d-shader/hlsl: Move the "base_type" member to the class-specific union.
2024-05-06 22:12:41 +02:00
Zebediah Figura
4fd3f46109
vkd3d-shader/hlsl: Use a switch in hlsl_types_are_equal().
2024-05-06 22:12:39 +02:00
Zebediah Figura
d9f7a88329
vkd3d-shader/hlsl: Make HLSL_TYPE_PIXELSHADER into a separate class.
2024-05-06 22:12:37 +02:00
Zebediah Figura
874937dab4
vkd3d-shader/hlsl: Make HLSL_TYPE_VERTEXSHADER into a separate class.
2024-05-06 22:12:34 +02:00
Zebediah Figura
e904b4596a
vkd3d-shader/hlsl: Ensure that the type is numeric before calling expr_common_base_type().
2024-05-06 22:12:33 +02:00
Conor McCarthy
cfcc789b42
vkd3d-shader/spirv: Implement the WAVE_OP_* instructions.
2024-05-06 22:12:27 +02:00
Conor McCarthy
c71751edc9
vkd3d-shader/dxil: Implement DX intrinsics WaveActiveOp and WavePrefixOp.
2024-05-06 22:12:25 +02:00
Conor McCarthy
fef5760af0
vkd3d-shader/spirv: Implement the WAVE_ACTIVE_BIT_* instructions.
2024-05-06 22:12:24 +02:00
Conor McCarthy
af208135f3
vkd3d-shader/dxil: Implement DX intrinsic WaveActiveBit.
2024-05-06 22:12:22 +02:00
Conor McCarthy
1c49b3a779
vkd3d-shader/spirv: Implement the WAVE_ACTIVE_BALLOT instruction.
2024-05-06 22:12:21 +02:00
Conor McCarthy
174a692a17
vkd3d-shader/dxil: Implement DX intrinsic WaveActiveBallot.
2024-05-06 22:12:19 +02:00
Henri Verbeet
592e902d47
vkd3d-shader: Pass a struct vsir_program to vkd3d_shader_parser_compile().
2024-05-02 22:19:18 +02:00
Henri Verbeet
fa7b623eac
vkd3d-shader: Pass a struct vsir_program to scan_with_parser().
2024-05-02 22:19:18 +02:00
Henri Verbeet
f948520504
vkd3d-shader/spirv: Pass a struct vsir_program to spirv_compile().
2024-05-02 22:19:17 +02:00
Henri Verbeet
e21215f466
vkd3d-shader/spirv: Pass a struct vsir_program to spirv_compiler_generate_spirv().
2024-05-02 22:19:16 +02:00
Giovanni Mascellani
5d78eeb6d3
vkd3d: Simplify control flow for swapchain images.
2024-05-02 22:19:08 +02:00
Conor McCarthy
95489899be
vkd3d-shader/spirv: Handle the WAVE_ANY_TRUE instruction.
2024-05-02 22:19:02 +02:00
Conor McCarthy
fb5eb3159d
vkd3d-shader/dxil: Implement DX intrinsic WaveAnyTrue.
2024-05-02 22:19:00 +02:00
Conor McCarthy
77ec2a5caa
vkd3d-shader/spirv: Handle the WAVE_ALL_TRUE instruction.
2024-05-02 22:18:59 +02:00
Conor McCarthy
8e2b351538
vkd3d-shader/dxil: Implement DX intrinsic WaveAllTrue.
2024-05-02 22:18:58 +02:00
Conor McCarthy
78f2d2936d
vkd3d-shader/spirv: Handle the WAVE_ACTIVE_ALL_EQUAL instruction.
2024-05-02 22:18:57 +02:00
Conor McCarthy
9aa9b112e6
vkd3d-shader/dxil: Implement DX intrinsic WaveActiveAllEqual.
2024-05-02 22:18:55 +02:00
Conor McCarthy
c770efc530
vkd3d-shader/spirv: Handle the WAVELANEINDEX register.
2024-05-02 22:18:54 +02:00
Conor McCarthy
fd590c2593
vkd3d: Initialise wave ops feature options.
...
Based in part on a vkd3d-proton patch by Philip Rebohle.
2024-05-02 22:18:50 +02:00
Conor McCarthy
a130c970a6
vkd3d-shader/spirv: Handle the WAVELANECOUNT register.
2024-05-02 22:18:49 +02:00
Conor McCarthy
6a56b4e5d8
vkd3d-shader/dxil: Implement DX intrinsics WaveGetLaneCount and WaveGetLaneIndex.
2024-05-02 22:18:48 +02:00
Conor McCarthy
127bcf90e4
vkd3d-shader/dxil: Implement DX intrinsic Coverage.
2024-04-30 16:32:10 +02:00
Conor McCarthy
36c76e1557
vkd3d-shader/dxil: Handle SV_PrimitiveId.
2024-04-30 16:32:10 +02:00
Conor McCarthy
eef0f7c29e
vkd3d-shader/dxil: Handle SV_InstanceId.
2024-04-30 16:32:10 +02:00
Conor McCarthy
fb730b11cf
vkd3d-shader/dxil: Handle constexpr pointer cast.
2024-04-30 16:31:44 +02:00
Conor McCarthy
05510c118a
vkd3d-shader/dxil: Emit an error if a CMPXCHG instruction uses a forward-referenced pointer.
2024-04-30 16:31:42 +02:00
Conor McCarthy
b67a68b486
vkd3d-shader/dxil: Emit an error if a ATOMICRMW instruction uses a forward-referenced pointer.
2024-04-30 16:31:41 +02:00
Conor McCarthy
9615c38968
vkd3d-shader/dxil: Emit an error if a STORE instruction uses a forward-referenced pointer.
2024-04-30 16:31:40 +02:00
Conor McCarthy
b4b5af66ef
vkd3d-shader/dxil: Emit an error if a LOAD instruction uses a forward-referenced pointer.
2024-04-30 16:31:39 +02:00
Alexandre Julliard
91762a62c6
vkd3d-shader: Avoid non-constant initializer.
...
Fixes "initializer element is not constant" error with gcc < 8.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56508
2024-04-30 16:31:32 +02:00
Henri Verbeet
87c83e2ae2
vkd3d-shader: Get rid of struct vkd3d_shader_desc.
2024-04-30 16:31:19 +02:00
Henri Verbeet
b761f1a263
vkd3d-shader/spirv: Use location information from the current instruction.
2024-04-30 16:31:14 +02:00
Henri Verbeet
8b8ad07057
vkd3d-shader/hlsl: Use vkd3d_string_buffer_printf() in declare_predefined_types().
2024-04-30 16:31:09 +02:00
Francisco Casas
ee735e8eed
vkd3d-shader/hlsl: Fold x * 1 identities.
2024-04-30 16:31:05 +02:00
Francisco Casas
b14f935d0f
vkd3d-shader/hlsl: Fold x + 0 identities.
2024-04-30 16:31:02 +02:00
Stefan Dösinger
cb6c868460
vkd3d: Implement cache locking.
2024-04-24 23:49:20 +02:00
Stefan Dösinger
71f1955cd6
vkd3d: Implement vkd3d_shader_cache_get.
2024-04-24 23:49:20 +02:00
Stefan Dösinger
aad76f4ed2
vkd3d: Implement vkd3d_shader_cache_put.
2024-04-24 23:49:15 +02:00
Henri Verbeet
af33caf036
vkd3d-common: Introduce vkd3d_atomic_exchange_ptr().
2024-04-24 23:49:12 +02:00
Henri Verbeet
b1c326ce56
vkd3d-common: Introduce vkd3d_atomic_exchange_u32().
2024-04-24 23:49:11 +02:00
Henri Verbeet
5c8a90a6c9
vkd3d-common: Introduce vkd3d_atomic_compare_exchange_u32().
2024-04-24 23:49:11 +02:00
Henri Verbeet
bfbd29efe6
vkd3d: Get rid of vkd3d_atomic_compare_exchange_pointer().
...
The only uses of this were remove by commit
3ca2259807
.
2024-04-24 23:49:10 +02:00
Henri Verbeet
11db8c1719
vkd3d-common: Use WIDL_C_INLINE_WRAPPERS.
2024-04-24 23:48:44 +02:00
Henri Verbeet
534044181b
vkd3d-utils: Use WIDL_C_INLINE_WRAPPERS.
2024-04-24 23:48:44 +02:00
Henri Verbeet
d5717d333b
vkd3d: Use WIDL_C_INLINE_WRAPPERS.
2024-04-24 23:48:44 +02:00
Conor McCarthy
075979fa21
vkd3d-shader/ir: Always check for undominated SSA use in register relative addresses.
2024-04-24 23:48:13 +02:00
Francisco Casas
5e3515f191
vkd3d-shader/d3dbc: Support SM1 if conditionals.
...
According to the documentation, if_comp is available from 2_x pixel
and vertex shaders and, unlike "if bool" it doesn't expect a constant
boolean register (from the input signature), so:
if_neq cond -cond
seems like a convenient way to write these, for profiles above 2.0.
2024-04-24 23:48:06 +02:00
Francisco Casas
d2427ea1bd
vkd3d-shader/ir: Lower IFC instructions to IF instructions.
2024-04-24 23:48:05 +02:00
Francisco Casas
e370ce5bf2
vkd3d-shader/d3dbc: Pass hlsl_block instead of function declaration.
2024-04-24 23:48:04 +02:00
Henri Verbeet
46fca3f9f4
vkd3d-common: Introduce VKD3D_BITMAP_SIZE.
2024-04-23 22:41:25 +02:00
Francisco Casas
aa35b2cecb
vkd3d-shader/hlsl: Cleanup parse_attribute_list structs (valgrind).
2024-04-23 22:38:03 +02:00
Conor McCarthy
e3dde09bb9
vkd3d-shader/ir: Accept undefined PHI incomings as valid.
...
An incoming can be undefined if the PHI result is not used if the
incoming's path was taken, or if the undefined value is consumed by
an instruction (dxc will compile such code without errors).
2024-04-23 22:37:33 +02:00
Zebediah Figura
d7da278693
vkd3d-shader/hlsl: Make HLSL_TYPE_RENDERTARGETVIEW into a separate class.
2024-04-23 22:37:09 +02:00
Zebediah Figura
ee2bde3aba
vkd3d-shader/hlsl: Make HLSL_TYPE_DEPTHSTENCILVIEW into a separate class.
2024-04-23 22:37:06 +02:00
Zebediah Figura
76971d811e
vkd3d-shader/hlsl: Make HLSL_TYPE_TECHNIQUE into a separate class.
2024-04-23 22:36:51 +02:00
Zebediah Figura
3c8c7426df
vkd3d-shader/hlsl: Make HLSL_TYPE_PASS into a separate class.
2024-04-23 22:36:38 +02:00
Zebediah Figura
24d3a352a6
vkd3d-shader/hlsl: Make HLSL_TYPE_EFFECT_GROUP into a separate class.
2024-04-23 22:36:32 +02:00
Giovanni Mascellani
6b841486d4
vkd3d-shader/ir: Materialize SSAs in each function of a hull shader.
2024-04-23 22:36:17 +02:00
Giovanni Mascellani
c8af142bb0
vkd3d-shader/ir: Structurize each function of a hull shader.
2024-04-23 22:36:16 +02:00
Giovanni Mascellani
d8e4b19cdc
vkd3d-shader/ir: Skip invalid blocks when materializing undominated SSAs.
2024-04-23 22:36:14 +02:00
Henri Verbeet
7b4a1fdfbc
vkd3d: Move the vkd3d_cond implementation to vkd3d-common.
...
Much like the vkd3d_mutex implementation.
2024-04-22 23:15:20 +02:00
Henri Verbeet
8345b9b6f5
vkd3d-shader/glsl: Implement VKD3DSIH_NOP.
2024-04-22 23:14:30 +02:00
Conor McCarthy
079f8e4d52
vkd3d-shader/dxil: Implement DX intrinsic OutputControlPointID.
2024-04-22 23:13:31 +02:00
Conor McCarthy
3976738baf
vkd3d-shader/dxil: Implement DX intrinsic DomainLocation.
2024-04-22 23:13:30 +02:00
Conor McCarthy
e165f9cefc
vkd3d-shader/dxil: Implement DX intrinsic StorePatchConstant.
2024-04-22 23:13:29 +02:00
Conor McCarthy
3479962983
vkd3d-shader/dxil: Implement DX intrinsics LoadOutputControlPoint and LoadPatchConstant.
2024-04-22 23:13:28 +02:00
Conor McCarthy
4457181b2a
vkd3d-shader/dxil: Support patch constant functions and signatures.
2024-04-22 23:13:26 +02:00
Zebediah Figura
833c897aac
vkd3d-shader/hlsl: Parse register space reservations.
2024-04-22 23:13:15 +02:00
Zebediah Figura
29f6a7e5f7
vkd3d-shader/hlsl: Rename register_opt and packoffset_opt to register_reservation and packoffset_reservation.
...
"opt" seems to imply "optional", but the optional aspect of these reservations
is not (and never has been) encoded into these rules.
2024-04-22 23:13:13 +02:00
Henri Verbeet
4a209efb62
vkd3d-shader/hlsl: Support spirv-binary and spirv-text as target formats.
2024-04-19 22:24:07 +02:00
Henri Verbeet
0116e49d9b
vkd3d-shader/hlsl: Support d3d-asm as target format.
2024-04-19 22:24:06 +02:00
Henri Verbeet
414bb99542
vkd3d-shader/glsl: Add vkd3d-shader version information to the generated shader.
2024-04-19 22:23:55 +02:00