Commit Graph

7965 Commits

Author SHA1 Message Date
Giovanni Mascellani
3797c922a5 tests/hlsl: Test SV_GSInstanceID. 2025-07-29 12:50:23 +02:00
Giovanni Mascellani
52b9ef0426 vkd3d-shader/spirv: Support precise flags on SAMPLE_INFO instructions. 2025-07-29 12:31:36 +02:00
Giovanni Mascellani
53754f0583 vkd3d-shader/spirv: Support precise flags on RESINFO instructions. 2025-07-29 12:31:23 +02:00
Giovanni Mascellani
bdccdd9996 vkd3d-shader/d3d-asm: Emit precise flags for a number of opcodes.
I've seen them specifically on RESINFO, but it general it makes
sense to print them for any opcode that expects a bit field in
the flags.
2025-07-29 12:28:09 +02:00
Giovanni Mascellani
f7866df201 vkd3d-shader/dxil: Emit gather offsets as signed.
This is important for the MSL generator, otherwise invalid MSL
is emitted.
2025-07-28 16:32:40 +02:00
Giovanni Mascellani
3cf35ce22e vkd3d-shader/msl: Convert the results of load and sample operations to the destination data type.
This should eventually go away when we properly enforce vsir typing,
but since for the moment we're resolving to hack, let's at least
make it compatible with DXIL.
2025-07-28 16:31:57 +02:00
Giovanni Mascellani
7df92b6e50 vkd3d-shader/msl: Reject shaders with duplicate I/O target locations.
We'll have to handle them eventually, but let's avoid generating
invalid code in the meantime.
2025-07-28 16:27:58 +02:00
Giovanni Mascellani
9476a235b2 vkd3d-shader/msl: Use the union type for SAMPLEMASK registers.
Function msl_print_assignment() doesn't currently handle bitcasts
when the left operand has a specific (rather than a union) type.

We could also fix the function, and maybe it wouldn't be a bad
idea anyway, but using the union type seems more in the spirit
of the MSL backend anyway.
2025-07-28 16:27:58 +02:00
Giovanni Mascellani
16b06c295b vkd3d-shader/msl: Emit indexable temps with the appropriate component count. 2025-07-28 16:27:58 +02:00
Giovanni Mascellani
6ed0bd0bab vkd3d-shader/msl: Ignore the interpolation mode for output variables.
They are meaningless, but some frontends (e.g., DXIL) set them
nevertheless.
2025-07-28 16:27:58 +02:00
Francisco Casas
19bc3ec104 vkd3d-shader/ir: Validate flags in RESINFO operations. 2025-07-28 16:26:16 +02:00
Francisco Casas
3a0a96b851 vkd3d-shader/ir: Validate flags in SAMPLE_INFO operations. 2025-07-28 16:26:16 +02:00
Nikolay Sivov
a4f5225229 vkd3d: Return success from d3d12_device_EnumerateMetaCommands().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2025-07-28 16:24:04 +02:00
Nikolay Sivov
2c49f04411 vkd3d-shader/fx: Do not attempt to parse expressions without code section. 2025-07-28 16:22:13 +02:00
Nikolay Sivov
dcd1747f12 vkd3d-shader/fx: Handle regular shader blobs when parsing the state data.
For the pass shader states this blob will contain compiled shaders, for other
state types it will contain expression code. Complex state data is stored separately,
tracing it back to actual state type will require keeping track of already parsed states.
2025-07-28 16:21:32 +02:00
Henri Verbeet
0652cb4adb demos/teapot: Add specular lighting. 2025-07-28 16:12:19 +02:00
Henri Verbeet
9b0087a111 vkd3d-shader/spirv: Emit OpLine instructions. 2025-07-28 16:11:29 +02:00
Henri Verbeet
b3cac7b86d vkd3d-shader: Call vsir_program_scan() for d3d-asm targets in vsir_program_compile().
Like we do for every other target.
2025-07-28 16:11:06 +02:00
Henri Verbeet
eaebef4265 vkd3d-shader/hlsl: Emit vsir from hlsl_emit_bytecode(). 2025-07-28 16:10:15 +02:00
Henri Verbeet
4300e6c8b5 vkd3d-shader/ir: Allow source operands of shift operations to have different data types. 2025-07-28 16:10:15 +02:00
Henri Verbeet
b3e367b099 vkd3d-shader/tpf: Update the comment describing the data type mapping in init_sm4_lookup_tables().
"R", "S", and "U" were removed, and "*" was added.
2025-07-24 19:12:49 +02:00
Henri Verbeet
a4c25b81c5 vkd3d-shader/hlsl: Get rid of the "hlsl" argument to hlsl_compile_shader(). 2025-07-23 17:25:19 +02:00
Henri Verbeet
f02405350e vkd3d-shader/ir: Consistently use VSIR_DATA_U32 for resinfo_uint destination operands.
Much like we do for sample_info_uint.
2025-07-23 17:23:40 +02:00
Henri Verbeet
b88be5b92b vkd3d-shader/ir: Consistently use VSIR_DATA_U32 for sample_info_uint destination operands.
The HLSL compiler already did this; the TPF and DXIL parsers did not.
Previously spirv_compiler_emit_sample_info() was unable to correctly
handle VSIR_DATA_U32 destinations; the new version is arguably simpler
as well.
2025-07-23 17:23:40 +02:00
Henri Verbeet
b8c73e4a2c vkd3d-shader/spirv: Use spirv_compiler_error() to report unhandled resinfo flags. 2025-07-23 17:23:40 +02:00