Zebediah Figura
c1ebba9515
vkd3d-shader: Add structure stride to struct vkd3d_shader_descriptor_info1.
2023-08-23 22:45:04 +02:00
Zebediah Figura
88f85ffb50
vkd3d-shader: Add constant buffer size to struct vkd3d_shader_descriptor_info1.
2023-08-23 22:45:04 +02:00
Zebediah Figura
8c465c81cf
vkd3d-shader: Add sample count to struct vkd3d_shader_descriptor_info1.
2023-08-23 22:45:04 +02:00
Zebediah Figura
ccedb7f711
vkd3d-shader: Set descriptor flags in the caller to vkd3d_shader_scan_add_descriptor().
...
Return the vkd3d_shader_descriptor_info1 from that function.
2023-08-23 22:45:02 +02:00
Conor McCarthy
f3baf55d97
vkd3d: Implement ID3D12Device1 with stubs.
2023-08-23 22:44:58 +02:00
Giovanni Mascellani
8f8c89fb87
vkd3d: Update a warning so that it aligns with the check that triggers it.
2023-08-23 22:44:52 +02:00
Conor McCarthy
3ca2259807
vkd3d: Fix invalid atomic behaviour in the view cache linked list.
...
The list suffers from the ABA problem, where comparison with the head
succeeds but the head's `next` pointer has changed. Occurs in Cyberpunk
2077, on NVIDIA at least.
2023-08-23 22:44:45 +02:00
Nikolay Sivov
4f2e07a45d
vkd3d-shader/hlsl: Allow 'const' modifier without initializer in the global scope.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-15 21:51:50 +02:00
Nikolay Sivov
7fd10bb6bc
tests: Add some tests for a 'const' modifier.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-15 21:51:50 +02:00
Zebediah Figura
240b9424fb
vkd3d-shader/hlsl: Pass an hlsl_block pointer to append_output_copy().
2023-08-15 21:51:47 +02:00
Zebediah Figura
a04e3a51dd
vkd3d-shader/hlsl: Pass an hlsl_block pointer to prepend_input_copy().
2023-08-15 21:51:39 +02:00
Zebediah Figura
7a4ac1afb1
vkd3d-shader/hlsl: Pass an hlsl_block pointer to prepend_uniform_copy().
2023-08-15 21:51:37 +02:00
Francisco Casas
96f66aa4f8
vkd3d-shader/d3dbc: Use the bind count instead of the allocation size in d3dbc.c.
...
This should have no effect, since in SM1 the allocation size is the
same as the bind count because there are no texture registers.
It is just done for consistency.
2023-08-15 21:51:33 +02:00
Francisco Casas
d4a49d788a
vkd3d-shader/hlsl: Simplify computation of allocation size.
2023-08-15 21:51:32 +02:00
Francisco Casas
37cfbe47d7
vkd3d-shader/hlsl: Sort synthetic separated samplers first for SM4.
2023-08-15 21:51:31 +02:00
Francisco Casas
81afe43569
vkd3d-shader/tpf: Put the actual bind count in the RDEF table.
2023-08-15 21:51:29 +02:00
Francisco Casas
7eba063136
vkd3d-shader/hlsl: Rename hlsl_reg.bind_count to hlsl_reg.allocation_size.
...
We have to distinguish between the "bind count" and the "allocation size"
of variables.
The "allocation size" affects the starting register id for the resource to
be allocated next, while the "bind count" is determined by the last field
actually used. The former may be larger than the latter.
What we are currently calling hlsl_reg.bind_count is actually the
"allocation size", so a rename is in order.
The real "bind count", which will be introduced in following patches,
is important because it is what should be shown in the RDEF table and
some resource allocation rules depend on it.
For instance, for this shader:
texture2D texs[3];
texture2D tex;
float4 main() : sv_target
{
return texs[0].Load(int3(0, 0, 0)) + tex.Load(int3(0, 0, 0));
}
the variable "texs" has a "bind count" of 1, but an "allocation size" of
3:
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// texs texture float4 2d t0 1
// tex texture float4 2d t3 1
2023-08-15 21:51:27 +02:00
Francisco Casas
948c4145f5
tests: Test texture allocation ordering in complex scenarios.
2023-08-15 21:51:26 +02:00
Nikolay Sivov
98f63c46f8
vkd3d-shader/hlsl: Use type width in fold_rcp().
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:21 +02:00
Nikolay Sivov
932c5e36dc
vkd3d-shader/hlsl: Add constant folding for 'log2'.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:20 +02:00
Nikolay Sivov
58bc61e48d
vkd3d-shader/hlsl: Add constant folding for 'sqrt'.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:18 +02:00
Nikolay Sivov
7e99188dc7
vkd3d-shader: Add constant folding for 'dp2add' operation.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:15 +02:00
Nikolay Sivov
25ff56769b
vkd3d-shader: Add constant folding for the 'dot' operation.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:15 +02:00
Zebediah Figura
983d01df8c
vkd3d-shader: Get rid of the uav_ranges array.
...
This is now redundant; the register ID is encoded into the scan descriptors.
2023-08-14 18:38:11 +02:00
Zebediah Figura
7d02922541
vkd3d-shader: Add register ID to struct vkd3d_shader_descriptor_info1.
2023-08-14 18:38:11 +02:00
Zebediah Figura
4e9798f6f7
vkd3d-shader: Introduce struct vkd3d_shader_scan_descriptor_info1.
2023-08-14 18:38:11 +02:00
Zebediah Figura
fd4a820c4b
vkd3d-shader: Centralize cleanup on error in scan_with_parser().
2023-08-14 18:38:11 +02:00
Zebediah Figura
9c5cb2de18
vkd3d-shader: Factor more code into vkd3d_shader_scan_get_uav_descriptor_info().
2023-08-14 18:38:11 +02:00
Francisco Casas
8484bd59a6
vkd3d-shader/tpf: Separate dst register write function.
2023-08-14 18:38:08 +02:00
Francisco Casas
d1c45fe2f0
vkd3d-shader/tpf: Separate src register write function.
2023-08-14 18:38:07 +02:00
Francisco Casas
2258e9d0f3
vkd3d-shader/tpf: Make register_type_table an array of structs with lookup tables.
2023-08-14 18:38:06 +02:00
Francisco Casas
c77e5f1c1f
vkd3d-shader/tpf: Introduce struct tpf_writer to group sm4 write arguments.
...
We will add register information lookup tables on this struct later.
They will be used by sm4_encode_register(), and thus, they will be
required by write_sm4_instruction().
2023-08-14 18:38:05 +02:00
Francisco Casas
a584499c8a
vkd3d-shader/tpf: Use struct vkd3d_shader_register_index in sm4_register.idx[].
2023-08-14 18:38:04 +02:00
Francisco Casas
fc589add49
vkd3d-shader/tpf: Allow passing NULL register type on hlsl_sm4_register_from_semantic().
2023-08-14 18:38:03 +02:00
Francisco Casas
8a6a620ee2
vkd3d-shader/tpf: Use enum vkd3d_shader_register_type in sm4_register.type.
2023-08-14 18:38:01 +02:00
Henri Verbeet
5d75731d97
vkd3d-dxbc: Implement listing section data.
2023-08-08 21:15:28 +09:00
Henri Verbeet
fbb5e59a03
vkd3d-dxbc: Implement listing DXBC contents.
2023-08-08 21:15:28 +09:00
Henri Verbeet
6bfb94c440
vkd3d-dxbc: Introduce a program to inspect and modify DXBC blobs.
2023-08-08 21:15:28 +09:00
Zebediah Figura
cf6bc95a3d
vkd3d-shader/hlsl: Use hlsl_block_add_instr() in clone_block().
2023-08-08 21:15:16 +09:00
Zebediah Figura
4ae00cea43
vkd3d-shader/hlsl: Clean up the static_initializers block when the context is destroyed (Valgrind).
...
This is currently leaked if we fail parsing before reaching codegen.
2023-08-08 21:15:13 +09:00
Zebediah Figura
b22e2113a6
vkd3d-shader/hlsl: Pass a hlsl_block pointer to dump_instr_list().
2023-08-08 21:15:10 +09:00
Zebediah Figura
0652bb1950
vkd3d-shader/hlsl: Store the "instrs" field of struct hlsl_attribute as a hlsl_block.
2023-08-08 21:15:08 +09:00
Zebediah Figura
372ddd1f29
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_load_component().
2023-08-08 21:15:05 +09:00
Zebediah Figura
f649db23a5
vkd3d-shader: Introduce a function to build a varying map between sm1 stages.
2023-08-03 21:20:44 +09:00
Zebediah Figura
d932fba7c3
vkd3d-shader/spirv: Make output varyings not consumed by the next stage private variables.
2023-08-03 21:20:42 +09:00
Zebediah Figura
11475ef62a
vkd3d-shader: Implement remapping shader output registers to match the next shader's semantics.
2023-08-03 21:20:42 +09:00
Zebediah Figura
cb96482500
vkd3d-shader: Add a separate field for the target location of a signature element.
...
We want to be able to remap input signatures based on the signature index, but
signature normalization both reorders the signature, and requires the old
register index, so add a new field for this.
2023-08-03 21:20:39 +09:00
Zebediah Figura
bad72d1874
vkd3d-shader/d3dbc: Make sure all inter-stage varyings have a unique register index.
...
spirv will need this.
2023-08-03 21:20:22 +09:00
Zebediah Figura
b4bb3931c5
vkd3d-shader/preproc: Append spaces between tokens in macro invocations.
2023-08-02 20:19:21 +09:00
Zebediah Figura
250a24bd3f
vkd3d-shader/preproc: Strip whitespace when stringifying.
2023-08-02 20:19:20 +09:00