Commit Graph

8114 Commits

Author SHA1 Message Date
Henri Verbeet
b023b67b95 vkd3d-shader/dxil: Allow creating signed parameters in instruction_dst_param_init_ssa_scalar(). 2025-09-16 15:46:23 +02:00
Henri Verbeet
8700e3a5bd vkd3d-shader/dxil: Allow returning signed types from vsir_data_type_from_dxil().
We have a number of vsir operations which should take a signed type, but
which the DXIL parser currently emits unsigned types for. For example,
ISHR.

In the SPIR-V backend, we translate ISHR to OpShiftRightArithmetic,
which is specified as filling the most-significant bits of the result
with the sign bit of the "Base" operand. For an unsigned type, that
would technically be 0. In practice, implementations like radv/Mesa seem
to fill with the most-significant bit of the "Base" operand for unsigned
types, but arguably that could be considered a bug. Alternatively, the
wording in the specification is just unfortunate; SPIR-V does generally
take the position that signedness of operands should be irrelevant for
almost all operations. Either way, it seems best to avoid using
OpShiftRightArithmetic with unsigned types.

For a target like MSL, allowing ISHR to take an unsigned source operand
is just inconvenient; we'd have to introduce bitcasts to achieve the
desired behaviour, instead of simply using msl_binop().
2025-09-16 15:46:23 +02:00
Henri Verbeet
db3aaeca17 vkd3d-shader/ir: Make the vsir assembly data type names consistent with the corresponding enum elements. 2025-09-16 15:44:48 +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
7c0b70db85 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_resource_declaration(). 2025-09-11 16:08:58 +02:00
Henri Verbeet
06dadcfb42 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_cbv_declaration(). 2025-09-11 16:08:58 +02:00
Henri Verbeet
3a6ebfa826 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_push_constant_buffers(). 2025-09-11 16:08:58 +02:00
Henri Verbeet
91e69f41cf vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_dcl_indexable_temp(). 2025-09-11 16:08:58 +02:00
Henri Verbeet
f9d473b4fe vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_shader_epilogue_function(). 2025-09-11 16:08:58 +02:00
Henri Verbeet
de2095fda4 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_throw_invalid_dst_type_error_with_flags(). 2025-09-10 11:59:04 +02:00
Henri Verbeet
b326097473 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_shift_operation(). 2025-09-10 11:59:04 +02:00
Henri Verbeet
e7f3547c24 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_cast_operation(). 2025-09-10 11:59:04 +02:00
Henri Verbeet
81f229146c vkd3d-shader/ir: Handle all component types in vsir_data_type_from_component_type(). 2025-09-10 11:42:21 +02:00
Henri Verbeet
db704d2980 vkd3d-shader/spirv: Handle i64 component types. 2025-09-10 11:42:21 +02:00
Elizabeth Figura
446b59319b vkd3d-utils: Null-terminate the output of D3DPreprocess().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58596
2025-09-10 11:40:03 +02:00
Elizabeth Figura
f52dc8a89a vkd3d-utils: Null-terminate the output of D3DDisassemble(). 2025-09-10 11:40:03 +02:00
Elizabeth Figura
df1c94dd60 vkd3d-shader: Document the null terminator appended for textual formats.
vkd3d_string_buffer uses vsnprintf() and therefore null-terminates when
appending, so no code changes are necessary.
2025-09-10 11:39:43 +02:00
Elizabeth Figura
bb7c95f7d6 tests: Test special characters. 2025-09-10 11:09:04 +02:00
Elizabeth Figura
7fe82bcd85 tests: Test null-termination. 2025-09-10 11:05:01 +02:00
Henri Verbeet
d26f75f12c vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_load_invocation_id(). 2025-09-09 15:02:08 +02:00
Henri Verbeet
361404a1d1 vkd3d-shader/spirv: Use spirv_get_type_id() in frag_coord_fixup(). 2025-09-09 15:02:08 +02:00
Henri Verbeet
34dbf38e83 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_draw_parameter_fixup(). 2025-09-09 15:02:08 +02:00