Commit Graph

355 Commits

Author SHA1 Message Date
Shaun Ren
0202393d41 vkd3d-shader/d3dbc: Implement HLSL_OP1_{COS,SIN}_REDUCED for SM1.
Also enable SM1 trigonometry function tests.
2024-07-16 19:03:52 +02:00
Shaun Ren
b4845b9dca vkd3d-shader/hlsl: Implement sin/cos for SM1.
Also introduce HLSL_OP3_MAD.
2024-07-16 18:55:22 +02:00
Elizabeth Figura
71a3d55e8c vkd3d-shader/hlsl: Implement the GetRenderTargetSampleCount() intrinsic. 2024-07-11 00:33:57 +02:00
Victor Chiletto
5bc56d43bb vkd3d-shader/hlsl: Parse loop and unroll loop attributes.
Based on a patch by Nikolay Sivov.

Co-authored-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-11 00:32:53 +02:00
Francisco Casas
60c8a813a3 vkd3d-shader/hlsl: Validate state block function calls. 2024-07-09 20:38:08 +02:00
Francisco Casas
b5f2e7daeb vkd3d-shader/hlsl: Parse function call syntax on state blocks. 2024-07-09 20:36:28 +02:00
Francisco Casas
704ce03561 vkd3d-shader/d3dbc: Don't require a hlsl_semantic to get register and usage. 2024-07-09 20:12:47 +02:00
Francisco Casas
003f4c7600 vkd3d-shader/d3dbc: Use program->shader_version instead of ctx->profile. 2024-07-09 20:06:23 +02:00
Francisco Casas
dd8aa2ec91 vkd3d-shader/hlsl: Generate CTAB outside d3dbc_compile().
There is no way to store this information from the vsir_program alone,
so we make d3dbc_compile() expect the CTAB blob.
2024-07-09 18:59:54 +02:00
Francisco Casas
130b3335cb vkd3d-shader/d3dbc: Split hlsl_sm1_write().
The idea is to start splitting the

    HLSL IR -> d3dbc

translation into

    HLSL IR -> vsir -> d3dbc

So hlsl_sm1_write is split into two functions, sm1_generate_vsir()
which should handle the first part and d3dbc_compile() which should
handle the second part.

This translation should be completed once the hlsl_ctx and entry_func
are no longer used in d3dbc_compile().
2024-07-09 18:38:00 +02:00
Zebediah Figura
6db2bc3eff vkd3d-shader/d3dbc: Use enum vkd3d_shader_register_type in struct sm1_instruction. 2024-07-09 16:59:02 +02:00
Nikolay Sivov
0f7ac0a054 vkd3d-shader/hlsl: Set default values for annotations variables.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:49:06 +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
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
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
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
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
Francisco Casas
e8dbc36bd2 vkd3d-shader/hlsl: Record default values for uniforms and constant buffers. 2024-06-11 15:46:40 +02:00
Francisco Casas
4f60c7167e vkd3d-shader/hlsl: Run constant passes in a separate function. 2024-05-15 21:17:49 +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
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
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
2480eec98b vkd3d-shader/hlsl: Move the "base_type" member to the class-specific union. 2024-05-06 22:12:41 +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
Francisco Casas
b14f935d0f vkd3d-shader/hlsl: Fold x + 0 identities. 2024-04-30 16:31:02 +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
Zebediah Figura
833c897aac vkd3d-shader/hlsl: Parse register space reservations. 2024-04-22 23:13:15 +02:00
Zebediah Figura
171e097268 vkd3d-shader/hlsl: Make HLSL_TYPE_UAV into a separate class. 2024-04-19 22:23:20 +02:00
Zebediah Figura
93d7cd1785 vkd3d-shader/hlsl: Make HLSL_TYPE_TEXTURE into a separate class. 2024-04-19 22:23:19 +02:00
Zebediah Figura
220362cbad vkd3d-shader/hlsl: Make HLSL_TYPE_SAMPLER into a separate class. 2024-04-19 22:23:18 +02:00
Zebediah Figura
f57db442b0 vkd3d-shader/hlsl: Make HLSL_TYPE_STRING into a separate class. 2024-04-19 22:23:16 +02:00
Zebediah Figura
cdcf2da2eb vkd3d-shader/hlsl: Make HLSL_TYPE_VOID into a separate class. 2024-04-19 22:23:14 +02:00
Francisco Casas
ef9ae22ed0 vkd3d-shader/hlsl: Store state block on pass variables. 2024-04-10 08:54:23 -05:00
Francisco Casas
a99bcb1196 vkd3d-shader/hlsl: Parse list of state blocks. 2024-04-10 08:54:23 -05:00
Francisco Casas
80320f6129 vkd3d-shader/hlsl: Introduce hlsl_ir_stateblock_constant. 2024-04-10 08:54:23 -05:00
Francisco Casas
ee0d439a1b vkd3d-shader/hlsl: Parse and store state blocks on variables. 2024-04-10 08:54:23 -05:00
Zebediah Figura
5fbd2708c0 vkd3d-shader/hlsl: Move shader version helpers to hlsl.h. 2024-04-09 12:27:43 -05:00
Francisco Casas
3a0a4b625f vkd3d-shader/hlsl: Merge HLSL_OP3_MOVC into HLSL_OP3_TERNARY. 2024-04-09 12:27:02 -05:00
Francisco Casas
19fd43214b vkd3d-shader/hlsl: Ensure that TERNARY condition is always bool.
Also, properly casting it to float in lower_ternary() for SM1
avoids creating ABS and NEG on bool types.
2024-04-09 12:26:59 -05:00
Nikolay Sivov
4b0a328a2b vkd3d-shader/hlsl: Allow 'export' modifier on functions.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-04-03 22:24:15 +02:00
Nikolay Sivov
e1e6367210 vkd3d-shader/fx: Add an option to include empty buffers in the effect binary.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-04-02 23:10:42 +02:00
Nikolay Sivov
c509c85f63 vkd3d-shader/hlsl: Allow annotations on constant buffers.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-04-02 23:10:40 +02:00