Francisco Casas
ed9e236b01
vkd3d-shader/tpf: Avoid reading constant value components beyond type's width (Valgrind).
...
We are passing map writemasks that may have more components than the
constant's data type, so a (j < width) check is added to avoid reading
components from the constant that are not intended to be used.
Remaining values in the register are initialized to zero.
2023-08-24 21:43:55 +02:00
Nikolay Sivov
89eda51855
vkd3d-shader/hlsl: Change warning code for unknown loop attributes.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-24 21:43:50 +02:00
Nikolay Sivov
1153f6bb34
vkd3d-shader/hlsl: Parse "if" statement attributes.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-24 21:43:49 +02:00
Zebediah Figura
926575a6f3
vkd3d-shader/hlsl: Force sm1 inputs to be 4-component only for vertex shaders.
...
Pixel shaders still have an appropriate writemask.
2023-08-24 21:43:44 +02:00
Zebediah Figura
622311da8e
vkd3d-shader: Add a flag marking raw buffers to struct vkd3d_shader_descriptor_info.
2023-08-23 22:45:04 +02:00
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
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
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
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
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
Zebediah Figura
6fc3ae2b5c
vkd3d-shader/preproc: Stringify text immediately in macro invocations.
2023-08-02 20:19:19 +09:00
Zebediah Figura
cbb1d84069
vkd3d-shader/preproc: Separate a preproc_stringify() helper.
2023-08-02 20:19:18 +09:00
Zebediah Figura
3a235b57f6
vkd3d-shader/preproc: Expand macro arguments in macro invocations.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55361
2023-08-02 20:19:17 +09:00