Commit Graph

739 Commits

Author SHA1 Message Date
Petrichor Park
e35604dbf0 vkd3d-shader/hlsl: Implement the firstbitlow() intrinsic. 2025-09-22 11:26:42 +02:00
Petrichor Park
e6d840170d vkd3d-shader/hlsl: Implement the firstbithigh() intrinsic. 2025-09-22 11:26:42 +02:00
Petrichor Park
e49beca0d5 vkd3d-shader/hlsl: Implement the countbits() intrinsic. 2025-09-22 11:26:42 +02:00
Henri Verbeet
47f2ec1a08 vkd3d-shader/ir: Require default swizzles on vec4 immediate constants.
The SPIR-V, GLSL and MSL backends implicitly handle swizzles on
immediate constants, but the TPF and d3d-asm backends assume a default
swizzle. In principle there's no reason those couldn't support swizzles
on immediate constants, but they're a little pointless.
2025-09-18 11:35:05 +02:00
Henri Verbeet
e69f3da089 vkd3d-shader/hlsl: Set the "has_point_size" flag for vertex shaders outputting point sizes. 2025-09-11 16:09:46 +02:00
Henri Verbeet
84d3a8d167 vkd3d-shader/hlsl: Use VKD3DSPR_COMBINED_SAMPLER destination operands in sm1_generate_vsir_sampler_dcls().
That's what the d3d-asm target expects in shader_print_dcl_usage(), and
what vkd3d_shader_scan() requires to create correct descriptor
information.
2025-09-11 16:09:46 +02:00
Henri Verbeet
4569a9d5ba vkd3d-shader/hlsl: Set the "flat constant" count in sm1_generate_vsir().
Aside from being required in order to produce valid vsir, this is used
by vsir_program_scan() to generate descriptor information.
2025-09-11 16:09:46 +02:00
Henri Verbeet
2b5dc156c7 vkd3d-shader/hlsl: vsir constant buffer sizes are specified in bytes. 2025-09-11 16:09:46 +02:00
Henri Verbeet
38078f2c51 vkd3d-shader/hlsl: Map HLSL_TYPE_HALF to VSIR_DATA_F32.
VSIR_DATA_F16 would require VKD3DSGF_FORCE_NATIVE_LOW_PRECISION, but we
don't currently implement that. vkd3d_component_type_from_data_type()
currently ends up doing this mapping for us in the SPIR-V backend, but
that's about to go away.
2025-09-08 12:34:16 +02:00
Elizabeth Figura
0096ae43e1 vkd3d-shader/hlsl: Remove liveness range tracking from the allocator.
We no longer use it.
2025-09-04 14:04:27 +02:00
Elizabeth Figura
a44d79a13c vkd3d-shader/hlsl: Use a simple counter for indexable temps. 2025-09-04 14:04:27 +02:00
Elizabeth Figura
8db9465693 vkd3d-shader/hlsl: Use unique temps for SINCOS. 2025-09-04 14:04:27 +02:00
Shaun Ren
d8ea8894ab vkd3d-shader/hlsl: Support SM1 non-floating point CMP expressions. 2025-09-04 13:58:57 +02:00
Victor Chiletto
d5fdfa5f79 vkd3d-shader/hlsl: Emit RDEF metadata for SRV structured buffers. 2025-09-04 13:48:28 +02:00
Victor Chiletto
8698874628 vkd3d-shader/hlsl: Emit vsir structured loads. 2025-09-04 13:39:03 +02:00
Victor Chiletto
ae450e5957 vkd3d-shader/hlsl: Use the packed byte size as the stride for structured buffer texture declarations. 2025-09-04 13:29:51 +02:00
Victor Chiletto
9bf94ff034 vkd3d-shader/hlsl: Emit texture declarations for SRV structured buffers. 2025-09-04 13:29:51 +02:00
Elizabeth Figura
02d70be6ef vkd3d-shader/hlsl: Use unique temps for per-component operations. 2025-09-02 11:33:25 +02:00
Elizabeth Figura
25ae2fcc84 vkd3d-shader/hlsl: Use unique temps for non-indexable variables. 2025-09-02 11:33:25 +02:00
Elizabeth Figura
887da605c5 vkd3d-shader/hlsl: Initialize the allocator with a type. 2025-09-02 11:26:30 +02:00
Shaun Ren
320c3c9652 vkd3d-shader/hlsl: Fold some general conditional identities.
The following conditional identities are applied:

  c ? x : x -> x
  false ? x : y -> y; true ? x : y -> x
  c ? true : false -> c; c ? false : true -> !c
  !c ? x : y -> c ? y : x

Lastly, for expression chains x, y in a conditional expression
  c ? x : y,
we evaluate all conditionals in the expression chains with the
condition c, assuming c is true (for x), or false (for y).
2025-08-21 16:00:51 +02:00
Shaun Ren
245430002a vkd3d-shader/hlsl: Fold some general unary identities.
The following unary identities are applied:

  ||x|| -> |x|
  |-x| -> |x|
  ~(~x) -> x
  f(g(x)) -> g(x), where f(), g() are floor() or ceil() functions.
  -(-x) -> x
  !!x -> x
  !(x == y) -> x != y, !(x < y) -> x >= y, etc (for integers).
2025-08-21 16:00:46 +02:00
Henri Verbeet
85603dc9c6 vkd3d-shader/hlsl: Initialise the vsir program in hlsl_compile_shader().
Mostly in preparation for returning a vsir program from
hlsl_compile_shader() in the next commit.
2025-08-07 20:37:41 +02:00
Elizabeth Figura
a4f69d4ae6 vkd3d-shader/d3dbc: Move TEXLD lowering to d3dbc_parse(). 2025-08-07 18:52:46 +02:00
Shaun Ren
4bb880f9ed vkd3d-shader/hlsl: Support interlocked operations on non-indexed groupshared variables. 2025-08-05 16:33:08 +02:00