Giovanni Mascellani
5e42f6779a
vkd3d-shader/ir: Split handling blocks when emitting a structured program.
2024-04-15 21:33:15 +02:00
Giovanni Mascellani
b4cfc24f67
vkd3d-shader/ir: Refactor declaration emission outside of the CFG structure.
...
This is in preparation of handling more than one function (as
it happens for Hull Shaders), which will require having a single
row of declarations, but handling more than one CFG.
2024-04-15 21:33:14 +02:00
Giovanni Mascellani
27801e5612
vkd3d-shader/ir: Split undominated SSA materialization.
2024-04-15 21:33:13 +02:00
Giovanni Mascellani
d891ac5017
vkd3d-shader/ir: Split program structurization.
2024-04-15 21:33:12 +02:00
Giovanni Mascellani
eb15f97083
vkd3d-shader/ir: Move breaks out of selections again after having optimized loops.
2024-04-15 21:33:08 +02:00
Giovanni Mascellani
be7eec75dc
vkd3d-shader/ir: Append code to the non-breaking branch if there is breaking one.
2024-04-15 21:33:07 +02:00
Giovanni Mascellani
a2c6b5450b
vkd3d-shader/ir: Prepare for changing the destination list in vsir_cfg_optimize_recurse().
2024-04-15 21:33:05 +02:00
Petrichor Park
1fb9e7526b
vkd3d-shader/hlsl: Implement tanh.
2024-04-15 21:32:59 +02:00
Petrichor Park
c4182cc272
vkd3d-shader/hlsl: Implement hyperbolic sin and cos.
2024-04-15 21:32:56 +02:00
Giovanni Mascellani
aad040af05
vkd3d-shader/ir: Remove loops that terminate with a `break'.
2024-04-11 09:22:14 -05:00
Giovanni Mascellani
105ccc4769
vkd3d-shader/ir: Count how many jumps target each loop.
2024-04-11 09:22:13 -05:00
Giovanni Mascellani
f5d1b5d263
vkd3d-shader/ir: Move `break's out of selection constructs when possible.
2024-04-11 09:22:11 -05:00
Nikolay Sivov
8d78e3a821
vkd3d-shader/hlsl: Support refract() intrinsic.
...
With some changes by Giovanni Mascellani.
2024-04-10 08:55:27 -05:00
Giovanni Mascellani
ecad299ba4
vkd3d-shader/hlsl: Emit half results when operating on half arguments.
2024-04-10 08:55:24 -05:00
Zebediah Figura
280bea9033
vkd3d-shader/fx: Use a switch in write_fx_2_initial_value().
2024-04-10 08:55:20 -05:00
Zebediah Figura
6c6106f780
vkd3d-shader/fx: Move unimplemented type checks into is_type_supported_fx_2().
2024-04-10 08:55:19 -05:00
Zebediah Figura
047040fc63
vkd3d-shader/fx: Don't use an array to write the type class.
2024-04-10 08:55:18 -05:00
Zebediah Figura
285059ef11
vkd3d-shader/d3dbc: Consider the class in sm1_base_type().
...
We want the base type to stop being a property of all types, and to stop using
the same enumeration for objects and numeric types. The backend should do the
work of translation; we want a more sensible and convenient representation for
the compiler itself.
2024-04-10 08:55:17 -05:00
Zebediah Figura
a882d60534
vkd3d-shader/hlsl: Map HLSL_TYPE_DOUBLE to D3DXPT_FLOAT.
2024-04-10 08:55:15 -05:00
Conor McCarthy
9d7f63dc26
vkd3d: Validate that a resource with initial state RENDER_TARGET is a render target.
2024-04-10 08:55:11 -05:00
Conor McCarthy
78301d7202
vkd3d: Validate presence of flag ALLOW_RENDER_TARGET or ALLOW_DEPTH_STENCIL for multisampled resources.
2024-04-10 08:55:11 -05:00
Stefan Dösinger
a7860ae752
vkd3d: Implement reopening existing caches.
2024-04-10 08:54:58 -05:00
Stefan Dösinger
f24005507c
vkd3d: Implement opening and closing shader caches.
2024-04-10 08:54:58 -05:00
Giovanni Mascellani
a2bb4ef301
vkd3d-shader/d3d-asm: Reset indent level on HS phases.
2024-04-10 08:54:29 -05:00
Conor McCarthy
cb5411408a
vkd3d-shader/dxil: Implement DX intrinsic CalculateLOD.
2024-04-10 08:54:23 -05:00
Francisco Casas
e9559c394b
vkd3d-shader/hlsl: Allow KW_PIXELSHADER and KW_VERTEXSHADER as stateblock lhs.
2024-04-10 08:54:23 -05: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
Francisco Casas
4dedcc5885
vkd3d-shader/hlsl: Also call dce before lowering deref paths.
2024-04-10 08:54:23 -05:00
Francisco Casas
5ab1ef1cad
vkd3d-shader/hlsl: Properly release string buffer on write_atan_or_atan2().
...
vkd3d_string_buffer_cleanup() doesn't do the same as
hlsl_release_string_buffer(). The former only frees the char array
inside the string buffer and not the string buffer itself.
2024-04-09 12:28:03 -05:00
Zebediah Figura
0e3377a1be
vkd3d-shader/hlsl: Avoid using HLSL_CLASS_OBJECT without checking the base type.
...
As the diffstat shows, HLSL_CLASS_OBJECT does not really have much in common.
Resource types (TEXTURE, SAMPLER, UAV) sometimes behave similarly to each other,
but do not generally behave similarly to effect-specific types (string, shader,
state, view). Most consumers of HLSL_CLASS_OBJECT subsequently check the base
type anyway.
Hence we want to replace HLSL_TYPE_* with individual classes for object types.
As a first step, change the last few places that only check HLSL_CLASS_OBJECT.
2024-04-09 12:27:55 -05:00
Zebediah Figura
269cdad7b9
vkd3d-shader/hlsl: Consider any valid register reservation to invoke manual packing.
...
Regardless of the type of the variable.
2024-04-09 12:27:53 -05:00
Zebediah Figura
ce50c3a186
vkd3d-shader/hlsl: Use hlsl_type_is_resource() for unbounded array checks.
...
Not all objects can be unbounded descriptors.
2024-04-09 12:27:51 -05:00
Zebediah Figura
c5f507ac38
vkd3d-shader/hlsl: Add SM5.1 shader target strings.
2024-04-09 12:27:47 -05:00
Zebediah Figura
843968cd63
vkd3d-shader/hlsl: Use hlsl_version_ge() when checking for unbounded arrays.
...
6.x also allows them.
2024-04-09 12:27:45 -05:00
Zebediah Figura
5fbd2708c0
vkd3d-shader/hlsl: Move shader version helpers to hlsl.h.
2024-04-09 12:27:43 -05:00
Conor McCarthy
e72c3bab71
vkd3d-shader/spirv: Ensure the data register is UINT in spirv_compiler_emit_store_tgsm().
2024-04-09 12:27:30 -05:00
Conor McCarthy
dc99159dd8
vkd3d-shader/spirv: Bitcast if necessary in spirv_compiler_emit_store_dst_components().
2024-04-09 12:27:29 -05:00
Conor McCarthy
85c8c6be4d
vkd3d-shader/dxil: Support constexpr GEP.
2024-04-09 12:27:26 -05:00
Conor McCarthy
7d5e3713f9
vkd3d-shader/ir: Materialise SSAs to temps before lowering switch instructions.
2024-04-09 12:27:20 -05:00
Conor McCarthy
cfcd57209b
vkd3d-shader/ir: Convert SSAs to temps only if the block of origin does not dominate all uses.
2024-04-09 12:27:19 -05:00
Conor McCarthy
1c61776c18
vkd3d-shader/spirv: Handle uint2 to double bitcast in spirv_compiler_emit_mov().
...
Necessary for MakeDouble if the dst is SSA.
2024-04-09 12:27:18 -05:00
Conor McCarthy
c8eb7e1c81
vkd3d-shader/spirv: Emit a uint result for RESINFO_UINT if the dst register is SSA.
2024-04-09 12:27:16 -05:00
Conor McCarthy
7bfc7410f2
vkd3d-shader/ir: Materialise phis to temps in the incoming blocks.
...
RADV converts temps to phi instructions, so converting phis to MOVC in
VSIR just translates back to phis feeding into a MOVC. This commit
eliminates the MOVC.
2024-04-09 12:27:15 -05:00
Francisco Casas
62bb12f322
vkd3d-shader/hlsl: Use LOGIC_AND instead of MUL in all().
2024-04-09 12:27:09 -05:00
Francisco Casas
53e4d6eedb
vkd3d-shader/hlsl: Use LOGIC_OR instead of BIT_OR in any().
...
Note that BIT_OR is not available for SM1 bools, so we must prefer
LOGIC_OR when possible.
2024-04-09 12:27:07 -05:00
Francisco Casas
2621fc9572
vkd3d-shader/ir: Add missing src swizzle in vsir_program_lower_texkills().
2024-04-09 12:27:06 -05:00
Francisco Casas
8fca801591
vkd3d-shader/tpf: Use the extra_bits field for _nz on discard.
2024-04-09 12:27:03 -05:00