Conor McCarthy
76fd1388d8
vkd3d: Check the IASetVertexBuffers() view count against the device limits.
...
For example, current MoltenVK only supports 31 vertex buffers.
2024-11-06 21:43:32 +01:00
Elizabeth Figura
fb8660c196
vkd3d-shader/ir: Add an is_pre_rasterization_shader() helper.
2024-11-05 20:00:27 +01:00
Elizabeth Figura
4290d85397
vkd3d-shader/hlsl: Write all writemask components for PSIZE and FOG outputs.
...
Matching fxc/d3dcompiler.
2024-11-05 19:58:49 +01:00
Elizabeth Figura
a10ee075ff
vkd3d-shader/ir: Force fog and point size to 1 component when normalizing I/O.
2024-11-05 19:57:41 +01:00
Elizabeth Figura
5a513ffcec
vkd3d-shader/hlsl: Enforce FOG component count for sm1 VS output.
2024-11-05 19:53:24 +01:00
Elizabeth Figura
f50b20ddd6
vkd3d-shader/hlsl: Enforce PSIZE component count for sm1 VS output.
2024-11-05 19:53:24 +01:00
Francisco Casas
90a07ada8e
vkd3d-shader/tpf: Use SCALAR swizzle dimension for RASTERIZER registers.
...
While we currently output instructions like this:
sampleinfo_uint r0.x, rasterizer.xxxx
> SAMPLE_INFO (111)
0 0000100[len:4] 0000000000001[1] 00001101111[opcode:111]
└─ 0 000[d3i:0] 000[d2i:0] 000[d1i:0] 01[idxs:1] 00000000[type:0] 0000[0] 0001[wmask:1] 00[swtype:0] 10[dim:2]
└─ 00000000000000000000000000000000[0|0.0]
└─ 0 000[d3i:0] 000[d2i:0] 000[d1i:0] 00[idxs:0] 00001110[type:14] 00000000[sw:0] 01[swtype:1] 10[dim:2]
FXC/d3dcompiler outputs instructions like this:
sampleinfo o0.x, rasterizer.x
> SAMPLE_INFO (111)
0 0000100[len:4] 0000000000000[0] 00001101111[opcode:111]
└─ 0 000[d3i:0] 000[d2i:0] 000[d1i:0] 01[idxs:1] 00000010[type:2] 0000[0] 0001[wmask:1] 00[swtype:0] 10[dim:2]
└─ 00000000000000000000000000000000[0|0.0]
└─ 0 000[d3i:0] 000[d2i:0] 000[d1i:0] 00[idxs:0] 00001110[type:14] 000000[0] 00[swcomp:0] 10[swtype:2] 10[dim:2]
Note the difference in swtype of the rasterizer src register.
2024-11-05 19:50:55 +01:00
Francisco Casas
950c381728
vkd3d-shader/hlsl: Store RASTERIZER_SAMPLE_COUNT in the vsir program.
...
Also, the profile check for GetRenderTargetSampleCount() is moved to
parse time.
2024-11-05 19:48:31 +01:00
Francisco Casas
ab60f4e082
vkd3d-shader/hlsl: Store simple SM4 expressions in the vsir program.
2024-11-05 19:35:52 +01:00
Francisco Casas
b4608e99e3
vkd3d-shader/tpf: Remove HLSL IR ABS handling.
2024-11-05 19:20:21 +01:00
Francisco Casas
6eda775047
vkd3d-shader/hlsl: Run sm4_generate_vsir_block() recursively.
...
This allows us to remove the HLSL IR version of an instruction when
the vsir version is properly implemented.
2024-11-05 19:20:21 +01:00
Shaun Ren
64c4a3a442
vkd3d-shader/hlsl: Store SM4 semantic declarations in the vsir program.
2024-11-05 19:19:22 +01:00
Nikolay Sivov
5ea946aa90
vkd3d-shader/hlsl: Accept multiple colon-separated attributes.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-05 18:23:31 +01:00
Francisco Casas
68311ef010
vkd3d-shader/hlsl: Store SM4 ABS instructions in the vsir program.
2024-11-04 17:00:54 +01:00
Francisco Casas
404644bad3
vkd3d-shader/hlsl: Introduce vsir_src_from_hlsl_node().
...
This allows constants to be inlined for sm4.
2024-11-04 16:36:28 +01:00
Francisco Casas
6f52bb6b1a
vkd3d-shader/hlsl: Store SM4 swizzles in the vsir program.
2024-11-04 16:08:38 +01:00
Francisco Casas
2083d505c7
vkd3d-shader/tpf: Use instr.extra_bits for IF.
2024-11-04 15:37:46 +01:00
Henri Verbeet
e6c84862a8
vkd3d-shader/ir: Search for SV_TARGET0 vsir_program_insert_alpha_test().
...
As opposed to any SV_TARGET with register index 0. We care about the
semantic index here, not the register index.
2024-11-04 15:32:05 +01:00
Henri Verbeet
1b0248f31b
vkd3d-shader/ir: Specifically search for SV_POSITION0 in vsir_program_insert_clip_planes().
2024-11-04 15:30:44 +01:00
Elizabeth Figura
3681b83fb4
vkd3d-shader/fx: Fix checking for a GS with stream output.
2024-11-04 15:29:39 +01:00
Elizabeth Figura
7e4ab9c7c0
vkd3d-shader: Write zeroes for uninitialized outputs in vsir_program_remap_output_signature().
2024-11-04 15:26:55 +01:00
Elizabeth Figura
e781abc3fb
vkd3d-shader: Write uninitialized components of COLOR0 as 1.
2024-11-04 15:21:09 +01:00
Elizabeth Figura
cc9fcee676
vkd3d-shader: Reduce masks to only read components in vsir_program_remap_output_signature().
2024-11-04 15:11:54 +01:00
Elizabeth Figura
61bda1c054
vkd3d-shader: Always ensure a RET at the end of a program.
2024-11-04 15:06:02 +01:00
Nikolay Sivov
ad2208b726
vkd3d-shader/fx: Implement parsing shader resources types.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-29 14:52:39 +01:00
Nikolay Sivov
1a8e9ff94e
vkd3d-shader/fx: Implement parsing shader objects.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-29 14:41:55 +01:00
Elizabeth Figura
3511b54040
vkd3d-shader/hlsl: Use early return in allocate_register().
...
Partly to avoid a spurious maybe-uninitialized warning, and partly because it's a more idiomatic structure.
2024-10-28 18:01:06 +01:00
Elizabeth Figura
08253504dc
vkd3d-shader: Make an assert into an explicit check.
...
For some reason gcc without LTO thinks that component_count can overflow the
array here.
2024-10-28 18:01:06 +01:00
Elizabeth Figura
5883e01032
vkd3d-shader/fx: Remove an unnecessary hlsl_is_numeric_type().
...
Constants can only be numeric.
2024-10-28 18:01:06 +01:00
Elizabeth Figura
a595b96f62
vkd3d: Initialize vk_extensions in vk_init_device_caps().
...
Without LTO, gcc doesn't know that hresult_from_vk_result() will always return a
failure HRESULT for a failure VkResult, and so thinks that we might exit from
vkd3d_check_device_extensions() with a success HRESULT but without initializing
vk_extensions.
2024-10-28 18:01:06 +01:00
Henri Verbeet
9690ffff61
vkd3d-shader/spirv: Handle oPts in spirv_compiler_get_register_name().
2024-10-28 17:54:43 +01:00
Henri Verbeet
fa6d03a4cb
vkd3d-shader/d3d-asm: Implement support for VKD3DSPR_PARAMETER registers.
2024-10-28 17:54:20 +01:00
Nikolay Sivov
89e5912fd2
vkd3d-shader/hlsl: Implement RWByteAddressBuffer.Store*() methods.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:51:04 +01:00
Nikolay Sivov
cf27065b7d
vkd3d-shader/hlsl: Add parser support for the RWByteAddressBuffer type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:44:28 +01:00
Nikolay Sivov
4195a2f18a
vkd3d-shader/hlsl: Use a more compact way to store object method configurations.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:41:46 +01:00
Elizabeth Figura
390a330b8e
vkd3d-shader/hlsl: Avoid leaking the block in the subscript rule.
2024-10-28 15:40:41 +01:00
Elizabeth Figura
bb74180659
vkd3d-shader/hlsl: Return an error expression when an invalid subscript is used.
2024-10-28 15:40:41 +01:00
Elizabeth Figura
7905c47765
vkd3d-shader/hlsl: Handle error expressions in array sizes.
2024-10-28 15:40:41 +01:00
Elizabeth Figura
8b98e483ac
vkd3d-shader/hlsl: Handle error expressions in return statements.
2024-10-28 15:40:41 +01:00
Elizabeth Figura
94cf432035
vkd3d-shader/hlsl: Handle error expressions in conditions.
2024-10-28 15:40:41 +01:00
Nikolay Sivov
5eff8bf918
vkd3d-shader/hlsl: Handle SV_GroupIndex.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-24 20:54:04 +02:00
Henri Verbeet
5e9edf25d0
vkd3d-shader/glsl: Implement VKD3DSIH_GATHER4.
2024-10-24 20:52:37 +02:00
Henri Verbeet
d477a00734
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_GRAD.
2024-10-24 20:52:37 +02:00
Henri Verbeet
d58282c6d1
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_LOD.
2024-10-24 20:52:37 +02:00
Henri Verbeet
85697d76be
vkd3d-shader/glsl: Implement VKD3DSIH_UMAX and VKD3DSIH_UMIN.
2024-10-24 20:52:37 +02:00
Henri Verbeet
6a119b6946
vkd3d-shader/glsl: Implement VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL.
2024-10-24 20:52:37 +02:00
Francisco Casas
9d82915629
vkd3d-shader/hlsl: Make allocation functions static again.
2024-10-24 20:50:59 +02:00
Francisco Casas
23be6ed0dd
vkd3d-shader/hlsl: Store temp declarations in the vsir program.
...
Move the temp allocation back to hlsl_codegen.c.
Note that the DCL_TEMPS instructions wouldn't be necessary if we had the
capacity to store the temp_count for both the main program and the patch
constant program (or more generally speaking, a temp_count for all
phases).
The plan is to eventually also move the HS_CONTROL_POINT and
HS_FORK_PHASE markers to the vsir_program, making it able to contain
both functions.
2024-10-24 20:50:59 +02:00
Francisco Casas
158bf794e6
vkd3d-shader/hlsl: Introduce hlsl_ir_vsir_instruction_ref, again.
...
This node type will be deleted (again) once the hlsl->vsir->tpf
translation is complete. It serves the purpose of allowing to keep
both real hlsl_ir_nodes and vsir_instructions in the hlsl_block,
until all the former can be translated into the latter.
2024-10-24 20:50:59 +02:00
Francisco Casas
cf7fade580
vkd3d-shader/hlsl: Store the thread group size in the vsir program.
2024-10-24 20:48:20 +02:00