vkd3d-shader/hlsl: Use a block in hlsl_normalize_binary_exprs().
[vkd3d.git] / ANNOUNCE
blobf3eeac2960a485125738d808de98b9d988997f15
1 The vkd3d team is proud to announce that release 1.14 of vkd3d, the Direct3D
2 to Vulkan translation library, is now available.
4 This release contains improvements that are listed in the release notes below.
5 The main highlights are:
7   - Disassembler support for binary effects.
8   - Initial support for Metal Shading Language output.
9   - Miscellaneous bug fixes.
11 The source is available from the following location:
13   <https://dl.winehq.org/vkd3d/source/vkd3d-1.14.tar.xz>
15 The current source can also be pulled directly from the git repository:
17   <https://gitlab.winehq.org/wine/vkd3d.git>
19 Vkd3d is available thanks to the work of multiple people. See the file AUTHORS
20 for the complete list.
22 # What's new in vkd3d 1.14
24 ### libvkd3d
26   - Depth bounds can be changed dynamically using the OMSetDepthBounds() method
27     of the ID3D12GraphicsCommandList1 interface.
29   - The new VKD3D_CAPS_OVERRIDE environment variable can be used to override the
30     value of capabilities like the maximum feature level and resource binding
31     tier reported to applications.
33 ### libvkd3d-shader
35   - New features for the HLSL source type:
36     - Interstage I/O variable packing matches d3dcompiler/fxc more closely.
37     - The following intrinsic functions are supported:
38       - dst()
39       - f32tof16()
40       - mad()
41       - modf()
42       - sincos()
43     - ‘discard’ support for shader model 1-3 target profiles.
44     - The ‘SV_SampleIndex’ input semantic for fragment shaders.
45     - The ‘SV_GroupIndex’ input semantic for compute shaders.
46     - The ‘earlydepthstencil’ function attribute.
47     - Constant folding of expressions like ‘x && c’ and ‘x || c’, where ‘c’ is a
48       constant.
49     - Preprocessor support for namespaces in macro identifiers. I.e., syntax
50       like ‘#define NAME1::NAME2::NAME3 1’ works as intended now.
51     - Structure inheritance. Multiple inheritance is not supported.
52     - Register assignments for unused constant buffers are allowed to overlap
53       register assignments for used constant buffers.
54     - Instruction count reflection data for shader model 4+ target profiles.
55       This data is contained in the ‘STAT’ DXBC section, and can be queried with
56       the GetDesc() method of the ID3D11ShaderReflection and
57       ID3D12ShaderReflection interfaces. Note that the ID3D12ShaderReflection
58       implementation provided by vkd3d-utils does not currently correctly report
59       this information.
60     - ‘unorm’ and ‘snorm’ resource format modifiers. For example,
61       ‘Texture2D<unorm float4> t;’
62     - Parser support for ‘ByteAddressBuffer’ resources, as well as their
63       Load()/Load2()/Load3()/Load4() methods.
64     - Parser support for ‘RWByteAddressBuffer’ resources, as well as their
65       Store()/Store2()/Store3()/Store4() methods.
66     - Parser support for the ‘compile’ keyword, as well as the CompileShader()
67       and ConstructGSWithSO() intrinsic functions. Actual compilation of
68       embedded shaders is not implemented yet, but parser support is sufficient
69       for allowing compilation of HLSL sources containing this syntax to succeed
70       when targetting shader target profiles like ‘vs_5_0’ or ‘ps_5_0’.
71     - Initial support for tessellation shaders. Only the most trivial shaders
72       are supported in this release. Perhaps most notably, both ‘InputPatch’ and
73       ‘OutputPatch’ are not implemented yet.
75   - The new ‘fx’ source type can be used in combination with the ‘d3d-asm’
76     target type to disassemble binary effects.
78   - More complete support for fx_2_0 binary effect output, including support for
79     annotations, default values, as well as object initialiser data used for e.g.
80     string, texture, and shader objects.
82   - A significant number of instructions have been implemented for the
83     experimental GLSL target. The GLSL output currently targets version 4.40
84     without extensions, but the intention is to make this configurable in a
85     future release of vkd3d.
87   - Experimental support for Metal Shading Language (MSL) output, enabled by
88     building vkd3d with the ‘-DVKD3D_SHADER_UNSUPPORTED_MSL’ preprocessor
89     option. The current release is only able to compile the most basic shaders
90     when targetting MSL. Being an experimental feature, both the ABI and API may
91     change in future releases; the feature may even go away completely.
92     Nevertheless, we hope our users find this feature useful, and welcome
93     feedback and contributions.
95   - Shader code generation for various legacy fixed-function features, including
96     clip planes, point sizes, and point sprites. This is mainly relevant for
97     executing shader model 1-3 sources in modern target environments like
98     Vulkan, because those target environments do not implement equivalent
99     fixed-function features.
101   - The amount of shader validation done by the internal validator has been
102     greatly extended. The validator is enabled by the ‘force_validation’ option,
103     specified through the VKD3D_SHADER_CONFIG environment variable.
105   - New interfaces:
106     - The VKD3D_SHADER_COMPILE_OPTION_DOUBLE_AS_FLOAT_ALIAS flag specifies that
107       the ‘double’ type behaves as an alias for the ‘float’ type in HLSL sources
108       with shader model 1-3 target profiles.
109     - The VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32_VEC4 enumeration value
110       specifies that a shader parameter contains a 4-dimensional vector of
111       32-bit floating-point data.
112     - The VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_MASK shader parameter specifies
113       which clip planes are enabled.
114     - The VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_[0-7] shader parameters specify
115       the corresponding clip planes.
116     - The VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE shader parameter specifies the
117       point size to output when the source shader does not explicitly output a
118       point size.
119     - The VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MIN shader parameter specifies
120       the minimum point size to clamp point size outputs to.
121     - The VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MAX shader parameter specifies
122       the maximum point size to clamp point size outputs to.
123     - The VKD3D_SHADER_PARAMETER_NAME_POINT_SPRITE shader parameter specifies
124       whether texture coordinate inputs in fragment shaders should be replaced
125       with point coordinates.
126     - The VKD3D_SHADER_SOURCE_FX source type specifies binary Direct3D effects.
127     - The VKD3D_SHADER_TARGET_MSL target type specifies Metal Shading Language
128       shaders.
130 ### libvkd3d-utils
132   - The GetDesc() method of the ID3D12ShaderReflection interface returned by
133     D3DReflect() returns shader version information.
135   - New interfaces:
136     - D3DCompile2VKD3D() is a variant of D3DCompile2() that allows targeting the
137       behaviour of a specific d3dcompiler version.
139 ### vkd3d-compiler
141   - The ‘--alias-double-as-float’ option specifies that the ‘double’ type
142     behaves as an alias for the ‘float’ type in HLSL sources with shader model
143     1-3 target profiles.
145   - The ‘fx’ source type specifies binary Direct3D effects.
147   - The ‘msl’ target type specifies Metal Shading Language shaders.
149 ### Changes since vkd3d 1.13:
151 Andrey Gusev (3):
152       vkd3d: Recognise VK_QUEUE_VIDEO_ENCODE_BIT_KHR in debug_vk_queue_flags().
153       vkd3d-utils: Store the actual serialisation return value in get_blob_part().
154       vkd3d-utils: Store the actual serialisation return value in D3DStripShader().
156 Anna (navi) Figueiredo Gomes (14):
157       vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_emit_resource_declaration().
158       vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_emit_cbv_declaration().
159       vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_emit_sampler_declaration().
160       vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_build_descriptor_variable().
161       vkd3d-shader/spirv: Break long assembly lines.
162       vkd3d/state: Replace ERR with WARN in vkd3d_validate_descriptor_set_count().
163       tests/shader_runner: Extract a pipeline creation function from d3d12_runner_draw().
164       tests/shader_runner: Use ID3D12Device2_CreatePipelineState() when available.
165       tests/shader_runner: Introduce a 'depth-bounds' test option.
166       tests/shader_runner: Introduce a "d3d12" tag.
167       tests: Test depth bounds.
168       vkd3d: Implement d3d12_command_list_OMSetDepthBounds().
169       tests/shader_runner: Test the "earlydepthstencil" attribute.
170       vkd3d-shader/hlsl: Implement the "earlydepthstencil" attribute.
172 Arkadiusz Hiler (1):
173       vkd3d-shader/preproc: Support namespaces in macro identifiers.
175 Atharva Nimbalkar (7):
176       vkd3d-shader/glsl: Implement VKD3DSIH_ADD.
177       vkd3d-shader/glsl: Implement support for VKD3DSPR_IMMCONST registers.
178       vkd3d-shader/glsl: Implement VKD3DSIH_AND.
179       vkd3d-shader/glsl: Implement support for VSIR_DIMENSION_VEC4 immediate constants.
180       vkd3d-shader/glsl: Implement VKD3DSIH_MOVC.
181       vkd3d-shader/glsl: Implement VKD3DSIH_ITOF.
182       vkd3d-shader/glsl: Implement VKD3DSIH_UTOF.
184 Conor McCarthy (21):
185       vkd3d-shader/ir: Free the semantic names of deleted signature elements in shader_signature_merge(). (Valgrind)
186       tests/d3d12: Test a bounded range at the same offset as an unbounded one in test_unbounded_resource_arrays().
187       vkd3d: Sort bounded descriptor ranges after unbounded ones of equal offset.
188       tests/d3d12: Test invalid bytecode in test_root_signature_byte_code().
189       vkd3d: Clear the output pointer on failure in vkd3d_create_versioned_root_signature_deserializer().
190       vkd3d-shader/dxil: Load forward-referenced comparands as value/type pairs in sm6_parser_emit_cmpxchg().
191       vkd3d-shader/dxil: Load forward-referenced sources as value/type pairs in sm6_parser_emit_store().
192       tests: Move the dxc compilation helpers to utils.h.
193       tests/shader_runner: Introduce struct vulkan_test_context for the Vulkan runner.
194       tests/shader-runner: Move struct vulkan_test_context to vulkan_utils.h.
195       tests/shader-runner: Move the Vulkan helper functions to vulkan_utils.h.
196       tests/d3d12: Test buffer and texture SRVs in test_unbounded_resource_arrays().
197       vkd3d: Access the current range via the declared pointer in d3d12_root_signature_init_root_descriptor_tables().
198       vkd3d: Introduce a separate structure for storing Vulkan descriptor binding arrays.
199       vkd3d: Create a separate Vulkan descriptor binding array for each descriptor set.
200       vkd3d: Lay out virtual descriptor heap buffer and image bindings consecutively instead of interleaving them.
201       vkd3d: Zero the pipeline state UAV counter view array when the state is invalidated. (Valgrind)
202       tests: Use state RESOLVE_SOURCE for readback from multisampled textures.
203       vkd3d: Check the IASetVertexBuffers() view count against the device limits.
204       vkd3d-shader/ir: Add a secondary sort by sysval for signature element register merges.
205       vkd3d-shader/dxil: Implement DX intrinsic SampleIndex.
207 Elizabeth Figura (92):
208       vkd3d-utils: Add a D3DCompile2VKD3D() that allows configuring DLL version.
209       vkd3d-utils: Do not emit implicit truncation warnings from D3DCompile2VKD3D() before version 42.
210       build: Do not warn on incomplete documentation.
211       vkd3d-shader: Mention the structure name when referring to a struct field.
212       vkd3d-shader: Escape a hash in Doxygen documentation.
213       vkd3d-shader: Do not use \ref for parameters.
214       vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in write_atan_or_atan2().
215       vkd3d-shader/hlsl: Use elementwise_intrinsic_convert_args() in intrinsic_dst().
216       vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in intrinsic_faceforward().
217       vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in intrinsic_smoothstep().
218       vkd3d-shader/hlsl: Preserve halves in intrinsic_step().
219       vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in refract().
220       vkd3d-shader/hlsl: Use intrinsic_float_convert_arg() in write_acos_or_asin().
221       vkd3d-shader/hlsl: Use expr_common_base_type() in intrinsic_cross().
222       vkd3d-shader/hlsl: Preserve doubles in intrinsic_float_convert_arg().
223       vkd3d-shader/hlsl: Preserve doubles in elementwise_intrinsic_float_convert_args().
224       vkd3d-shader/hlsl: Preserve doubles in intrinsic_cross().
225       vkd3d-shader/hlsl: Preserve doubles in intrinsic_determinant().
226       vkd3d-shader/hlsl: Store a pointer to the block's "value" instruction in the block.
227       vkd3d-shader/hlsl: Return bool from add_assignment().
228       vkd3d-shader/hlsl: Do not create a copy in add_assignment().
229       vkd3d-shader/hlsl: Do not handle HLSL_CLASS_CONSTANT_BUFFER in copy_propagation_transform_load().
230       vkd3d-shader/hlsl: Clarify a comment.
231       vkd3d-shader/hlsl: Introduce the "error" type.
232       vkd3d-shader/hlsl: Return an "error" expression when constructing an arithmetic expression from incompatible types.
233       vkd3d-shader/hlsl: Handle error expressions in unary expressions.
234       vkd3d-shader/hlsl: Use add_cast() in append_conditional_break().
235       vkd3d-shader/hlsl: Fix a corner case in ternary type conversion.
236       vkd3d-shader/ir: Remove newlines from some vkd3d_shader_error() calls.
237       vkd3d-shader: Allow controlling clip planes through vkd3d-shader parameters.
238       tests: Test clip planes.
239       vkd3d-shader/hlsl: Free static initializers after functions.
240       vkd3d-shader/hlsl: Return an "error" expression when using an undeclared variable.
241       vkd3d-shader/hlsl: Handle error expressions in function calls.
242       vkd3d-shader/hlsl: Handle error expressions in binary expressions.
243       vkd3d-shader/hlsl: Handle error expressions in assignments.
244       vkd3d-shader/hlsl: Handle error expressions in method calls.
245       vkd3d-shader/preproc: Store argument values per expansion, not per macro.
246       vkd3d-shader/hlsl: Introduce an add_explicit_conversion() helper.
247       vkd3d-shader/hlsl: Handle error expressions in explicit casts.
248       vkd3d-shader/hlsl: Handle error expressions in array indexes.
249       vkd3d-shader/hlsl: Handle error expressions in subscripts.
250       vkd3d-shader/hlsl: Handle error expressions in increments.
251       vkd3d-shader/spirv: Always write the point size in vertex shaders.
252       tests: Add a test for shader point size output.
253       vkd3d-shader/spirv: Implement shader point size.
254       vkd3d-shader/ir: Allow controlling FFP point size through a vkd3d-shader parameter.
255       tests: Test FFP point size.
256       vkd3d-shader/ir: Allow controlling FFP point size clamping through vkd3d-shader parameters.
257       tests: Test FFP point size clamping.
258       vkd3d-shader/hlsl: Factor out an initialize_var() helper.
259       vkd3d-shader/hlsl: Store the initializer location in struct parse_initializer.
260       vkd3d-shader/hlsl: Factor the component count check into initialize_var().
261       vkd3d-shader/hlsl: Handle error expressions in initializers.
262       vkd3d-shader/hlsl: Handle error expressions in ternary expressions.
263       vkd3d-shader/ir: Allow controlling point sprite through a parameter.
264       tests: Test point sprite.
265       vkd3d-shader: Factor out a vsir_parse() helper.
266       vkd3d-shader: Validate the parsed shader in vsir_parse().
267       vkd3d-shader/hlsl: Handle error expressions in conditions.
268       vkd3d-shader/hlsl: Handle error expressions in return statements.
269       vkd3d-shader/hlsl: Handle error expressions in array sizes.
270       vkd3d-shader/hlsl: Return an error expression when an invalid subscript is used.
271       vkd3d-shader/hlsl: Avoid leaking the block in the subscript rule.
272       tests/shader_runner: Store shader caps using an array.
273       tests/shader_runner: Get rid of the "dxbc_ptr" parameter to create_shader_stage().
274       tests/shader_runner: Store shader sources as an array.
275       tests/shader_runner: Store the dxc_compiler in the shader_runner.
276       tests/shader_runner: Centralize the compile_hlsl() helper in shader_runner.c.
277       tests/shader_runner: Split HLSL and SPIRV compilation in the Vulkan shader runner.
278       tests/shader_runner: Compile HLSL for all stages before compiling SPIRV.
279       tests/shader_runner: Build a varying map in the Vulkan runner.
280       tests: Add a test for sm1 inter-stage interface matching.
281       vkd3d: Initialize vk_extensions in vk_init_device_caps().
282       vkd3d-shader/fx: Remove an unnecessary hlsl_is_numeric_type().
283       vkd3d-shader: Make an assert into an explicit check.
284       vkd3d-shader/hlsl: Use early return in allocate_register().
285       tests: Silence a bogus -Wmaybe-uninitialized.
286       tests: Add a test for uninitialized varyings.
287       vkd3d-shader: Always ensure a RET at the end of a program.
288       vkd3d-shader: Reduce masks to only read components in vsir_program_remap_output_signature().
289       vkd3d-shader: Write uninitialized components of COLOR0 as 1.
290       vkd3d-shader: Write zeroes for uninitialized outputs in vsir_program_remap_output_signature().
291       vkd3d-shader/fx: Fix checking for a GS with stream output.
292       tests: Add some tests for FOG and PSIZE writemask restrictions.
293       vkd3d-shader/hlsl: Enforce PSIZE component count for sm1 VS output.
294       vkd3d-shader/hlsl: Enforce FOG component count for sm1 VS output.
295       vkd3d-shader/ir: Force fog and point size to 1 component when normalizing I/O.
296       vkd3d-shader/hlsl: Write all writemask components for PSIZE and FOG outputs.
297       vkd3d-shader/ir: Add an is_pre_rasterization_shader() helper.
298       vkd3d-shader/hlsl: Silence a spurious -Wmaybe-uninitialized in sm4_generate_vsir_instr_dcl_semantic().
299       vkd3d-shader: Silence a spurious -Wmaybe-uninitialized in vsir_program_insert_alpha_test().
301 Evan Tang (4):
302       vkd3d-shader/ir: Remove an unnecessary typecast in shader_instruction_eliminate_phase_instance_id().
303       vkd3d-shader/ir: Don't shift register write masks by the component index in shader_dst_param_io_normalise().
304       tests: Add a test for shader interstage register packing.
305       tests: Add a test for writing patch constants during tessellation.
307 Feifan He (30):
308       vkd3d-shader: Introduce VKD3D_SHADER_TARGET_MSL.
309       vkd3d-shader/msl: Generate comments for unhandled instructions.
310       vkd3d-shader/msl: Call vsir_program_transform() before generating code.
311       vkd3d-shader/msl: Keep track of the current indentation level
312       vkd3d-shader/msl: Add vkd3d-shader version information to the generated shader.
313       vkd3d-shader/msl: Implement VKD3DSIH_NOP.
314       vkd3d-shader/msl: Implement VKD3DSIH_MOV.
315       vkd3d-shader/msl: Implement VKD3DSIH_RET.
316       vkd3d-shader/msl: Implement support for VKD3DSPR_TEMP registers.
317       vkd3d-shader/msl: Generate shader output structure declarations.
318       vkd3d-shader/msl: Generate shader input structure declarations.
319       vkd3d-shader/msl: Generate the shader entry point.
320       vkd3d-shader/msl: Generate the shader entry point epilogue.
321       vkd3d-shader/msl: Generate the shader entry point prologue.
322       vkd3d-shader/msl: Handle signature element masks in the prologue and epilogue.
323       vkd3d-shader/msl: Generate shader descriptor structure declarations.
324       vkd3d-shader/msl: Implement support for VKD3DSPR_CONSTBUFFER registers.
325       vkd3d-shader/msl: Implement support for VKD3DSPR_INPUT registers.
326       vkd3d-shader/msl: Implement support for VKD3DSPR_OUTPUT registers.
327       tests/shader_runner: Introduce a Metal shader runner.
328       vkd3d-shader/msl: Add the missing output register index in msl_generate_entrypoint_epilogue().
329       vkd3d-shader/msl: Use pointers for constant buffer descriptors.
330       tests/shader_runner_metal: Implement graphics shader compilation.
331       vkd3d-shader/msl: Output the generated shader code.
332       tests/shader_runner_metal: Create vertex descriptors.
333       tests/shader_runner_metal: Create Metal render targets.
334       tests/shader_runner_metal: Create Metal vertex buffers.
335       tests/shader_runner_metal: Implement render target readback.
336       tests/shader_runner_metal: Create Metal constant buffers.
337       tests/shader_runner_metal: Implement draws.
339 Francisco Casas (77):
340       vkd3d-shader/hlsl: Introduce hlsl_ir_vsir_instruction_ref.
341       vkd3d-shader/hlsl: Store SM1 constant dcls on the vsir_program.
342       vkd3d-shader/hlsl: Store SM1 sampler dcls on the vsir_program.
343       vkd3d-shader/hlsl: Save hlsl_ir_constants in the vsir_program for SM1.
344       vkd3d-shader/hlsl: Save hlsl_ir_loads in the vsir_program for SM1.
345       vkd3d-shader/hlsl: Save hlsl_ir_stores in the vsir_program for SM1.
346       vkd3d-shader/hlsl: Save hlsl_ir_swizzles in the vsir_program for SM1.
347       vkd3d-shader/hlsl: Parse the shader 'compile' syntax.
348       vkd3d-shader/hlsl: Parse the CompileShader() syntax.
349       vkd3d-shader/hlsl: Save simple hlsl_ir_exprs in the vsir_program for SM1.
350       vkd3d-shader/hlsl: Save per-component hlsl_ir_exprs in the vsir_program for SM1.
351       vkd3d-shader/hlsl: Save DOT hlsl_ir_exprs in the vsir_program for SM1.
352       vkd3d-shader/hlsl: Save COS_REDUCED and SIN_REDUCED in the vsir_program for SM1.
353       vkd3d-shader/hlsl: Save DP2ADD hlsl_ir_exprs in the vsir_program for SM1.
354       vkd3d-shader/hlsl: Save REINTERPRET hlsl_ir_exprs as vsir_program MOVs for SM1.
355       vkd3d-shader/hlsl: Save CAST hlsl_ir_exprs in the vsir_program for SM1.
356       vkd3d-shader/hlsl: Save hlsl_ir_resource_load in the vsir_program for SM1.
357       vkd3d-shader/hlsl: Save hlsl_ir_jump in the vsir_program for SM1.
358       vkd3d-shader/hlsl: Introduce enum hlsl_compile_type.
359       tests: Test ConstructGSWithSO() parsing.
360       vkd3d-shader/hlsl: Process GeometryShader as a valid stateblock lhs.
361       vkd3d-shader/hlsl: Parse ConstructGSWithSO().
362       vkd3d-shader/hlsl: Allow effect calls on default value initializers.
363       vkd3d-shader/hlsl: Save hlsl_ir_if in the vsir_program for SM1.
364       vkd3d-shader/hlsl: Remove hlsl_ir_vsir_instruction_ref.
365       vkd3d-shader/d3dbc: Remove ctx and entry_func args in d3dbc_compile().
366       tests/shader_runner: Skip the GLSL tests when GLSL support is not enabled.
367       tests/shader_runner: Skip the DXIL tests when DXIL support is not enabled.
368       tests/shader_runner: Use skip() when the d3d12 device doesn't support shader model 6.
369       tests/shader_runner: Query for GLSL target support instead of checking VKD3D_SHADER_UNSUPPORTED_GLSL.
370       tests/shader-runner: Query for SM6 support instead of checking VKD3D_SHADER_UNSUPPORTED_DXIL.
371       tests: Test sampler_state keyword syntax.
372       vkd3d-shader/hlsl: Process 'texture' as a valid stateblock lhs.
373       vkd3d-shader/hlsl: Parse sampler_state.
374       vkd3d-shader/hlsl: Fix the conditions to discard default values.
375       vkd3d-shader/tpf: Write sysval semantic consistently.
376       vkd3d-shader/tpf: Use dcl_input_ps_sgv for sv_isfrontface.
377       tests: Test interstage signature optimizations.
378       tests: Test interstage signature with arrays.
379       vkd3d-shader/d3dbc: Remove the "hlsl_" prefix from external functions.
380       vkd3d-shader/hlsl: Split hlsl_sm4_write().
381       vkd3d-shader/tpf: Rename "tpf_writer" to "tpf_compiler".
382       vkd3d-shader/tpf: Pass a tpf_compiler structure to tpf_compile() callees.
383       vkd3d-shader/tpf: Use the I/O signatures from the vsir program in tpf_write_signature().
384       vkd3d-shader/tpf: Replace uses of ctx->profile with tpf->program->shader_version.
385       vkd3d-shader/tpf: Make sysval_semantic_from_hlsl() independent of HLSL IR.
386       vkd3d-shader/tpf: Make hlsl_sm4_register_from_semantic() independent of HLSL IR.
387       tests: Add signature reflection test with structs.
388       vkd3d-shader/hlsl: Add mode field to register_allocator allocations.
389       vkd3d-shader/hlsl: Use a register_allocator to allocate semantic registers.
390       vkd3d-shader/hlsl: Also pass field storage modifiers to output signature elements.
391       vkd3d-shader/hlsl: Allow accounting for interpolation mode when allocating semantics.
392       vkd3d-shader/hlsl: Allow to force alignment on some semantic vars.
393       vkd3d-shader/hlsl: Allow prioritizing smaller writemasks when allocating signature elements.
394       vkd3d-shader/hlsl: Optimize interstage signatures.
395       vkd3d-shader/hlsl: Sort signature elements by register id.
396       vkd3d-shader/hlsl: Store the thread group size in the vsir program.
397       vkd3d-shader/hlsl: Introduce hlsl_ir_vsir_instruction_ref, again.
398       vkd3d-shader/hlsl: Store temp declarations in the vsir program.
399       vkd3d-shader/hlsl: Make allocation functions static again.
400       vkd3d-shader/tpf: Use instr.extra_bits for IF.
401       vkd3d-shader/hlsl: Store SM4 swizzles in the vsir program.
402       vkd3d-shader/hlsl: Introduce vsir_src_from_hlsl_node().
403       vkd3d-shader/hlsl: Store SM4 ABS instructions in the vsir program.
404       vkd3d-shader/hlsl: Run sm4_generate_vsir_block() recursively.
405       vkd3d-shader/tpf: Remove HLSL IR ABS handling.
406       vkd3d-shader/hlsl: Store simple SM4 expressions in the vsir program.
407       vkd3d-shader/hlsl: Store RASTERIZER_SAMPLE_COUNT in the vsir program.
408       vkd3d-shader/tpf: Use SCALAR swizzle dimension for RASTERIZER registers.
409       vkd3d-shader/hlsl: Store SM4 casts in the vsir program.
410       vkd3d-shader/hlsl: Store SM4 SIN and COS in the vsir program.
411       vkd3d-shader/hlsl: Store SM4 RCP in the vsir program.
412       vkd3d-shader/hlsl: Store SM4 SAT in the vsir program.
413       vkd3d-shader/hlsl: Store SM4 MUL in the vsir program.
414       vkd3d-shader/hlsl: Store SM4 DIV in the vsir program.
415       vkd3d-shader/hlsl: Store SM4 DOT in the vsir program.
416       vkd3d-shader/hlsl: Store SM4 MOD in the vsir program.
418 Giovanni Mascellani (203):
419       vkd3d-shader: Use a hash to build the filename when dumping shaders.
420       vkd3d-shader: Dump the converted shader too.
421       vkd3d-shader/ir: Emit a warning instead of an error on validation failures.
422       vkd3d-shader/ir: Do not decide the control flow type on NOPs.
423       vkd3d-shader/ir: Run validation after lowering instructions.
424       vkd3d-shader/ir: Run validation after materializing PHI SSAs to TEMPs.
425       vkd3d-shader/ir: Run validation after lowering switches to selection ladders.
426       vkd3d-shader/ir: Run validation after structurization.
427       vkd3d-shader/ir: Run validation after flattening control flow constructs.
428       vkd3d-shader/ir: Run validation after materializing undominated SSAs to TEMPs.
429       vkd3d-shader/ir: Assume that Hull Shaders have a control point phase in vsir_program_normalise_io_registers().
430       vkd3d-shader/ir: Run validation after remapping the output signature.
431       vkd3d-shader/ir: Run validation after flattening hull shader phases.
432       vkd3d-shader/ir: Run validation after normalising Hull Shader control points I/O registers.
433       vkd3d-shader/ir: Run validation after normalising I/O registers.
434       vkd3d-shader/ir: Run validation after normalising flat constants.
435       vkd3d: Directly call the function to update descriptors.
436       vkd3d: Do not keep track of descriptor heaps when using virtual heaps.
437       vkd3d-shader/ir: Run validation after removing dead code.
438       vkd3d-shader/ir: Run validation after normalising combined samplers.
439       vkd3d-shader/ir: Run validation after flattening control flow constructs.
440       vkd3d-shader/ir: Run validation after inserting the alpha test.
441       vkd3d-shader/ir: Rename vsir_program_normalise() to vsir_program_transform().
442       vkd3d-shader/ir: Print results as signed numbers.
443       vkd3d-shader/ir: Move the control flow type enumeration to vkd3d_shader_private.h.
444       vkd3d-shader/ir: Record the control flow type in the program.
445       vkd3d-shader/ir: Introduce a helper for validating DCL_TEMPS.
446       vkd3d-shader/ir: Introduce a helper for validating IF.
447       vkd3d-shader/ir: Introduce a helper for validating IFC.
448       vkd3d-shader/ir: Introduce a helper for validating ELSE.
449       vkd3d-shader/ir: Introduce a helper for validating ENDIF.
450       vkd3d-shader/ir: Introduce a helper for validating LOOP.
451       vkd3d-shader/ir: Introduce a helper for validating ENDLOOP.
452       vkd3d-shader/ir: Introduce a helper for validating REP.
453       vkd3d-shader/ir: Introduce a helper for validating ENDREP.
454       vkd3d-shader/ir: Introduce a helper for validating SWITCH.
455       vkd3d-shader/ir: Introduce a helper for validating ENDSWITCH.
456       vkd3d-shader/ir: Introduce a helper for validating RET.
457       vkd3d-shader/ir: Introduce a helper for validating LABEL.
458       vkd3d-shader/ir: Introduce a helper for validating BRANCH.
459       vkd3d-shader/ir: Introduce a helper for validating SWITCH_MONOLITHIC.
460       vkd3d-shader/ir: Introduce a helper for validating PHI.
461       vkd3d-shader/ir: Do not access a missing destination register when validating PHI.
462       vkd3d-shader/ir: Validate NOP instructions.
463       vkd3d-shader/ir: Record leaving a block in the relevant validation handlers.
464       vkd3d-shader/ir: Record entering a block in the LABEL validation handler.
465       vkd3d-shader/ir: Introduce a helper for validating DCL_HS_MAX_TESSFACTOR.
466       vkd3d-shader/ir: Introduce a helper for validating DCL_INPUT_PRIMITIVE.
467       vkd3d-shader/ir: Introduce a helper for validating DCL_VERTICES_OUT.
468       vkd3d-shader/ir: Introduce a helper for validating DCL_OUTPUT_TOPOLOGY.
469       vkd3d-shader/ir: Introduce a helper for validating DCL_GL_INSTANCES.
470       vkd3d-shader/ir: Introduce a helper for validating DCL_OUTPUT_CONTROL_POINT_COUNT.
471       vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_DOMAIN.
472       vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_OUTPUT_PRIMITIVE.
473       vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_PARTITIONING.
474       vkd3d-shader/ir: Introduce a helper for validating Hull Shader phases.
475       vkd3d-shader/ir: Allow failure in shader_signature_find_element_for_reg().
476       vkd3d-shader/spirv: Propagate errors from vkd3d_spirv_stream_append().
477       vkd3d-shader/spirv: Do not reallocate the SPIR-V program.
478       vkd3d-shader/spirv: Rewrite vkd3d_spirv_get_type_id_for_data_type() in terms of vkd3d_spirv_get_type_id().
479       vkd3d-shader/spirv: Cache numeric types without through the general declaration cache.
480       vkd3d-shader/spirv: Do not specify depth for SPIR-V images.
481       vkd3d-shader/dxil: Release memory on exceptional paths in sm6_parser_read_signature(). (Valgrind)
482       vkd3d-shader/dxil: Release memory on exceptional paths when parsing DXIL code. (Valgrind)
483       vkd3d-shader: Get rid of the SAMPLER data type.
484       vkd3d-shader: Get rid of the UAV data type.
485       vkd3d-shader: Get rid of the RESOURCE data type.
486       vkd3d-shader/ir: Do not allow NULL registers in source parameters.
487       vkd3d-shader/ir: Disallow SAMPLER registers in destination parameters.
488       vkd3d-shader/ir: Disallow RESOURCE registers in destination parameters.
489       vkd3d-shader/dxil: Emit RESOURCE and UAV registers with data type UNUSED.
490       vkd3d-shader/ir: Validate SAMPLER registers.
491       vkd3d-shader/ir: Validate RESOURCE registers.
492       vkd3d-shader/ir: Validate UAV registers.
493       vkd3d-shader/d3d-asm: Dump all indices when tracing VSIR code.
494       vkd3d-shader/tpf: Propagate validation errors after parsing.
495       vkd3d-shader/d3dbc: Trace the program when validation fails after parsing.
496       vkd3d-shader/dxil: Trace the program when validation fails after parsing.
497       vkd3d-shader/d3dbc: Do not emit indices for DEPTHOUT registers.
498       vkd3d-shader/ir: Validate index count for DEPTHOUT registers.
499       vkd3d-shader/ir: Validate index count for DEPTHOUTGE registers.
500       vkd3d-shader/ir: Validate index count for DEPTHOUTLE registers.
501       vkd3d-shader/ir: Validate index count for RASTOUT registers.
502       vkd3d-shader/ir: Validate index count for MISCTYPE registers.
503       readme: Move the "Developing vkd3d" section upwards.
504       readme: Document some preprocessor definitions used by vkd3d.
505       vkd3d-shader/spirv: Handle all possible destination modifiers.
506       vkd3d-shader/dxil: Emit SAMPLER, UAV and RESOURCE registers with only 2 indices.
507       vkd3d-shader/ir: Validate indices for SAMPLER registers.
508       vkd3d-shader/ir: Validate indices for RESOURCE registers.
509       vkd3d-shader/ir: Validate indices for UAV registers.
510       tests/shader-runner: Print the WARP driver version.
511       vkd3d-shader/dxil: Emit double arithmetic operations when appropriate.
512       vkd3d-shader/d3d-asm: Rename vkd3d_shader_trace() to vsir_program_trace().
513       vkd3d-shader/d3d-asm: Rename dump_signature() to dump_dxbc_signature().
514       vkd3d-shader/d3d-asm: Rename dump_signatures() to dump_dxbc_signatures().
515       vkd3d-shader/d3d-asm: Dump signatures when tracing a VSIR program.
516       vkd3d-shader/ir: Set the signature sort indices in shader_signature_merge().
517       vkd3d-shader: Ignore the patch constant signature when it doesn't make sense.
518       vkd3d-shader/ir: Allow a patch constant signature only for Hull and Domain Shaders.
519       vkd3d-shader/ir: Validate register counts in input signatures.
520       vkd3d-shader/ir: Validate register counts in output signatures.
521       vkd3d-shader/ir: Validate register counts in patch constant signatures.
522       vkd3d-shader/ir: Validate masks in shader signatures.
523       vkd3d-shader/spirv: Write spirv_compiler_emit_variable() in terms of spirv_compiler_emit_array_variable().
524       tests: Only destroy the device if the context has one in vulkan_test_context_destroy().
525       vkd3d-shader/ir: Do not emit an instruction number before starting validating instructions.
526       vkd3d-shader/ir: Validate usage masks in shader signatures.
527       vkd3d-shader/ir: Validate system value semantics in shader signatures.
528       vkd3d-shader/ir: Validate component types in shader signatures.
529       vkd3d-shader/ir: Validate minimum precision in shader signatures.
530       vkd3d-shader/ir: Validate interpolation mode in shader signatures.
531       vkd3d-shader/ir: Validate that constant interpolation is used with integer types.
532       vkd3d-shader/ir: Do not search for signature elements using a scalar write mask.
533       vkd3d-shader/ir: Disallow INPUT registers in destination parameters.
534       vkd3d-shader/ir: Disallow OUTPUT registers in source parameters.
535       vkd3d-shader/ir: Only allow PATCHCONST registers as source parameteres in Hull and Domain Shaders.
536       vkd3d-shader/ir: Only allow PATCHCONST registers as destination parameteres in Hull Shaders.
537       vkd3d-shader/ir: Introduce a helper for validating TEMP registers.
538       vkd3d-shader/ir: Introduce a helper for validating SSA registers.
539       vkd3d-shader/ir: Introduce a helper for validating LABEL registers.
540       vkd3d-shader/ir: Introduce a helper for validating registers without indices.
541       vkd3d-shader/ir: Introduce a helper for validating SAMPLER registers.
542       vkd3d-shader/ir: Introduce a helper for validating RESOURCE registers.
543       vkd3d-shader/ir: Introduce a helper for validating UAV registers.
544       vkd3d-shader/ir: Introduce a helper for validating RASTOUT registers.
545       vkd3d-shader/ir: Introduce a helper for validating MISCTYPE registers.
546       vkd3d-shader/ir: Validate the allowed signatures and stages for SV_Position.
547       vkd3d-shader/ir: Validate the allowed data type and component count for SV_Position.
548       vkd3d-shader/ir: Validate the allowed signatures and stages for SV_ClipDistance.
549       vkd3d-shader/ir: Validate the allowed data type and component count for SV_ClipDistance.
550       vkd3d-shader/ir: Validate the allowed signatures and stages for SV_CullDistance.
551       vkd3d-shader/ir: Validate the allowed data type and component count for SV_CullDistance.
552       vkd3d-shader/ir: Validate the input control point count.
553       vkd3d-shader/ir: Validate the output control point count.
554       vkd3d-shader/ir: Validate that signatures are sensible for shader type.
555       tests/shader-runner: Make geometry shaders optional.
556       vkd3d-shader/ir: Validate SV_TessFactor signature elements for quad domains.
557       vkd3d-shader/ir: Validate SV_InsideTessFactor signature elements for quad domains.
558       vkd3d-shader/ir: Validate SV_TessFactor signature elements for tri domains.
559       vkd3d-shader/ir: Validate SV_InsideTessFactor signature elements for tri domains.
560       vkd3d-shader/ir: Validate the line detail SV_TessFactor signature element for isolines domains.
561       vkd3d-shader/ir: Validate the line density SV_TessFactor signature element for isolines domains.
562       ci: Use the macOS image from the master vkd3d repository.
563       vkd3d: Introduce a helper function to add bindings to struct vk_binding_array.
564       vkd3d: Use vk_binding_array_add_binding() in d3d12_root_signature_init_static_samplers().
565       vkd3d: Use vk_binding_array_add_binding() in d3d12_root_signature_init_root_descriptors().
566       vkd3d: Create Vulkan bindings in d3d12_root_signature_append_vk_binding().
567       vkd3d-shader/d3dbc: Make signature masks contiguous.
568       vkd3d-shader/ir: Check that signature masks are contiguous.
569       tests: Test discontiguous signature masks with SM<4 shaders.
570       ci: Remove the tart username and password environment variables.
571       ci: Use widl from the mingw-w64 brew package on macOS.
572       ci: Stop building widl for the macOS image.
573       ci: Build the DirectX shader compiler for macOS.
574       ci: Test DXIL shaders on macOS.
575       vkd3d-shader: Keep track of whether programs have normalised I/O.
576       vkd3d-shader: Keep track of whether programs have normalised hull shader control point I/O.
577       vkd3d-shader/ir: Validate INPUT registers.
578       vkd3d-shader/ir: Validate OUTPUT registers.
579       vkd3d-shader/ir: Validate PATCHCONST registers.
580       vkd3d-shader/ir: Validate INCONTROLPOINT registers.
581       vkd3d-shader/ir: Validate OUTCONTROLPOINT registers.
582       vkd3d: Allow overriding the device capabilities.
583       tests: Mark a sampling test as buggy on llvmpipe.
584       tests: Mark creating an 8x MSAA render target as buggy on llvmpipe.
585       tests: Mark latching the predicated value as todo on llvmpipe.
586       vkd3d-shader/ir: Represent the normalisation level with an enumeration.
587       vkd3d/device: Trace which descriptor heap implementation is being used.
588       vkd3d: Disable push descriptors when that's helpful to stay within 8 descriptor sets.
589       tests: Compute the correct value for condition conjunctions.
590       tests: Use appropriate RTV formats in max-min.shader_test.
591       tests: Use the appropriate RTV format in minimum-precision.shader_test.
592       tests: Mark interface packing pipeline creation as todo on MoltenVK.
593       ci: Build DXC for release.
594       tests: Test mismatching RTV and pixel shader output types.
595       vkd3d: Introduce an enumerant for the mutable descriptor set.
596       vkd3d: Move descriptor sets backing the SRV-UAV-CBV heap at the end.
597       vkd3d: Only put the mutable descriptor set once in the pipeline layout.
598       vkd3d: Incorporate mutable descriptors in the push descriptor disabling logic.
599       vkd3d-shader: Do not dump the target shader if compilation failed.
600       vkd3d-shader: Warn instead of erroring out when failing to dump a shader.
601       tests: Consider LOD miscalculation a todo rather than a driver bug.
602       tests: Use the appropriate RTV format in bitwise.shader_test.
603       tests: Dispatch just four invocations when testing for wave reconvergence.
604       tests: Mark geometry.shader_test as todo on MoltenVK.
605       tests: Mark tessellation.shader_test as todo on MoltenVK.
606       ci: Update the DXC version used on the CI to 1.8.2407.
607       tests: Mark tessellation-patch-vars.shader_test as todo on MoltenVK.
608       ci: Error out on Objective-C warnings.
609       tests: Mark fog.shader_test as todo with MSL.
610       tests: Use the appropriate RTV format in f32tof16.shader_test.
611       tests: Mark some tests in wave-reconvergence.shader_test as buggy on MoltenVK.
612       tests: Work around a Metal bug in switch.shader_test.
613       tests: Mark a couple of tests in register-reservations-numeric.shader_test as todo with MSL.
614       tests/shader_runner_vulkan: Avoid using ok() for shader compilation failues in create_graphics_pipeline().
615       tests: Remove some todo markings on MoltenVK in interface-packing.shader_test.
616       vkd3d-shader/spirv: Get rid of the "offset_component_count" field of struct vkd3d_spirv_resource_type.
617       tests: Mark a conditional rendering test as buggy on llvmpipe.
618       ci: Update Mesa to version 24.2.4.
619       vkd3d: Use WARN rather than ERR in vkd3d_instance_init().
620       vkd3d-shader/ir: Move applying flat interpolation to a dedicated pass.
621       vkd3d-shader/ir: Return an error when the FLAT_INTERPOLATION parameter is invalid.
623 Henri Verbeet (130):
624       vkd3d-shader/tpf: Return a vkd3d_shader_sysval_semantic from hlsl_sm4_usage_from_semantic().
625       vkd3d-shader/d3dbc: Return a vkd3d_decl_usage from hlsl_sm1_usage_from_semantic().
626       vkd3d-shader/tpf: Use enum vkd3d_shader_component_type in write_sm4_signature().
627       vkd3d-shader/tpf: Use enum vkd3d_sm4_data_type in sm4_resource_format().
628       vkd3d-shader/d3dbc: Store a enum vkd3d_sm1_opcode in struct sm1_instruction.
629       vkd3d-shader/d3dbc: Use VKD3D_SM1_INSTRUCTION_LENGTH_SHIFT instead of D3DSI_INSTLENGTH_SHIFT.
630       vkd3d-shader/d3dbc: Avoid D3DVS_VERSION and D3DPS_VERSION.
631       vkd3d-shader/d3dbc: Use VKD3D_SM1_REGISTER_TYPE_SHIFT and related constants in sm1_encode_register_type().
632       vkd3d-shader/d3dbc: Use enum vkd3d_shader_dst_modifier in struct sm1_dst_register.
633       vkd3d-shader/d3dbc: Use enum vkd3d_shader_src_modifier in struct sm1_src_register.
634       vkd3d-shader/d3dbc: Use VKD3D_SM1_DCL_USAGE_SHIFT and VKD3D_SM1_DCL_USAGE_INDEX_SHIFT in d3dbc_write_semantic_dcl().
635       vkd3d-shader/tpf: Include vkd3d_d3dcommon.h only from tpf.c.
636       vkd3d-shader/ir: Move the source parameter helpers up.
637       vkd3d-shader/ir: Move the destination parameter helpers up.
638       vkd3d-shader/ir: Move the instruction helpers together.
639       vkd3d-shader/ir: Introduce vsir_src_param_init_resource().
640       vkd3d-shader/ir: Introduce vsir_src_param_init_sampler().
641       vkd3d-shader/ir: Merge vsir_program_normalise_combined_samplers() into vsir_program_lower_instructions().
642       vkd3d-shader/glsl: Implement support for VKD3DSPR_INPUT registers.
643       vkd3d-shader/glsl: Implement support for VKD3DSPR_OUTPUT registers.
644       build: Use a tab to indent the "tests/hlsl/constructgswithso.shader_test" line in Makefile.am.
645       vkd3d-shader/d3dbc: Introduce enum vkd3d_sm1_misc_register.
646       vkd3d-shader/glsl: Handle SV_TARGET outputs.
647       vkd3d-shader/glsl: Implement support for VKD3DSPR_CONSTBUFFER registers.
648       vkd3d-shader/glsl: Implement support for VKD3DSPSM_ABS modifiers.
649       vkd3d-shader/d3dbc: Introduce enum vkd3d_sm1_rastout_register.
650       vkd3d-shader/glsl: Implement VKD3DSIH_NEU.
651       vkd3d-shader/glsl: Implement VKD3DSIH_MUL.
652       vkd3d-shader/glsl: Implement VKD3DSIH_INE.
653       vkd3d-shader/glsl: Implement VKD3DSIH_OR.
654       vkd3d-utils: Make D3D12CreateDevice a variadic macro, if possible.
655       vkd3d-shader/glsl: Implement VKD3DSIH_DIV.
656       vkd3d-shader/glsl: Implement support for VKD3DSPSM_NEG modifiers.
657       vkd3d-shader/glsl: Implement VKD3DSIH_GEO.
658       vkd3d-shader/glsl: Implement VKD3DSIH_FRC.
659       vkd3d-shader/d3dbc: Write the actual constant info offset in write_sm1_uniforms().
660       vkd3d-shader/glsl: Implement VKD3DSIH_FTOI.
661       vkd3d-shader/glsl: Implement VKD3DSIH_FTOU.
662       vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_PI.
663       vkd3d-shader/ir: Properly check the register bounds in shader_signature_find_element_for_reg().
664       vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_Z.
665       vkd3d-shader/glsl: Implement support for the VKD3DSPR_DEPTHOUT register.
666       vkd3d-shader/glsl: Implement VKD3DSIH_DP3.
667       vkd3d-shader/glsl: Implement VKD3DSIH_DP4.
668       vkd3d-shader/glsl: Implement VKD3DSIH_DP2.
669       vkd3d-shader/glsl: Implement VKD3DSIH_SQRT.
670       vkd3d-shader/glsl: Implement VKD3DSIH_DCL_INPUT_PS.
671       vkd3d-shader/glsl: Implement VKD3DSIH_IEQ.
672       vkd3d-shader/glsl: Implement VKD3DSIH_EXP.
673       vkd3d-shader/glsl: Implement VKD3DSIH_LTO.
674       vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_NI.
675       vkd3d-shader/glsl: Implement VKD3DSIH_IF and VKD3DSIH_ENDIF.
676       vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_NE.
677       vkd3d-shader/glsl: Handle SV_IS_FRONT_FACE inputs.
678       vkd3d-shader/glsl: Implement VKD3DSIH_LOG.
679       vkd3d-shader/glsl: Implement VKD3DSIH_MAX.
680       vkd3d-shader/glsl: Implement VKD3DSIH_MIN.
681       vkd3d-shader/glsl: Implement VKD3DSIH_RSQ.
682       vkd3d-shader/glsl: Implement VKD3DSIH_NOT.
683       vkd3d-shader/glsl: Implement VKD3DSIH_ELSE.
684       vkd3d-shader/glsl: Implement support for VKD3DSPDM_SATURATE modifiers.
685       vkd3d-shader/glsl: Implement VKD3DSIH_MAD.
686       vkd3d-shader/glsl: Implement VKD3DSIH_ISHL.
687       vkd3d-shader/glsl: Implement VKD3DSIH_ISHR.
688       vkd3d-shader/glsl: Implement VKD3DSIH_USHR.
689       vkd3d-shader/glsl: Implement VKD3DSIH_LD.
690       vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE.
691       vkd3d-shader/glsl: Implement VKD3DSIH_IGE.
692       vkd3d-shader/glsl: Implement VKD3DSIH_ILT.
693       vkd3d-shader/glsl: Implement VKD3DSIH_IMUL.
694       vkd3d-shader/glsl: Implement VKD3DSIH_EQO.
695       vkd3d-shader/glsl: Handle SV_VERTEX_ID inputs.
696       vkd3d-shader/glsl: Add interpolation modifiers to interstage inputs and outputs.
697       vkd3d-shader/glsl: Implement VKD3DSIH_IADD.
698       vkd3d-shader/glsl: Implement support for VKD3DSPR_IDXTEMP registers.
699       vkd3d-shader/glsl: Handle SV_POSITION inputs in fragment shaders.
700       vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_UINT outputs.
701       vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_UINT inputs.
702       vkd3d-shader/glsl: Implement VKD3DSIH_INEG.
703       vkd3d-shader/glsl: Implement VKD3DSIH_IMAX.
704       vkd3d-shader/ir: Store the thread group size in struct vsir_program.
705       vkd3d-shader/glsl: vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_INT inputs.
706       vkd3d-shader/glsl: Implement loops.
707       vkd3d-shader/glsl: Implement switches.
708       vkd3d-shader/glsl: Implement VKD3DSIH_ULT.
709       vkd3d-shader/glsl: Implement VKD3DSIH_CONTINUE.
710       vkd3d-shader/ir: Remove VKD3DSIH_DCL_UAV_TYPED instructions.
711       vkd3d-shader/glsl: Use VKD3D_SHADER_ERROR_GLSL_UNSUPPORTED for unsupported CBV descriptor arrays.
712       vkd3d-shader/glsl: Use the semantic index for shader_out_* declarations.
713       vkd3d-shader/glsl: Implement VKD3DSIH_STORE_UAV_TYPED.
714       vkd3d-shader/glsl: Implement support for compute shaders.
715       tests/shader_runner: Trace the "clip-planes" cap.
716       build: Actually run interface-packing.shader_test and tessellation-patch-vars.shader_test.
717       tests: Add a basic shader model 6 interface packing test as well.
718       vkd3d-shader/dxil: Shift register write masks by the component index in sm6_parser_emit_dx_store_output().
719       vkd3d-shader/d3dbc: Avoid D3DXSHADER_CONSTANTTABLE.
720       vkd3d: Slightly simplify the SRV/UAV logic in vk_write_descriptor_set_from_d3d12_desc().
721       vkd3d-shader/glsl: Implement VKD3DSIH_LD_UAV_TYPED.
722       vkd3d-shader/glsl: Implement support for the VKD3DSPR_THREADID register.
723       vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_B.
724       vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_C.
725       vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_C_LZ.
726       vkd3d-shader/ir: Store the global flags in struct vsir_program.
727       vkd3d-shader/glsl: Implement VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL.
728       vkd3d-shader/glsl: Implement VKD3DSIH_UMAX and VKD3DSIH_UMIN.
729       vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_LOD.
730       vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_GRAD.
731       vkd3d-shader/glsl: Implement VKD3DSIH_GATHER4.
732       tests/shader_runner: Print the test context in fatal_error().
733       vkd3d-shader/d3d-asm: Implement support for VKD3DSPR_PARAMETER registers.
734       vkd3d-shader/spirv: Handle oPts in spirv_compiler_get_register_name().
735       tests/shader_runner: Handle render target sizes other than 640x480.
736       tests/shader_runner_d3d12: Introduce a helper to get the default resource state for a resource.
737       tests: Add a test for actual multisample loads.
738       tests/shader_runner: Set "properties2.sType" in get_physical_device_info() in the Vulkan runner.
739       tests/shader_runner: Print "(none)" for an empty caps list in trace_shader_caps().
740       tests/shader_runner: Check whether copy/dispatch/draw succeeded in parse_test_directive().
741       vkd3d-shader/ir: Specifically search for SV_POSITION0 in vsir_program_insert_clip_planes().
742       vkd3d-shader/ir: Search for SV_TARGET0 vsir_program_insert_alpha_test().
743       vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_INT outputs.
744       vkd3d-shader/glsl: Implement VKD3DSIH_GATHER4_PO.
745       vkd3d-shader/glsl: Implement support for static texel offsets in shader_glsl_sample().
746       vkd3d-shader/glsl: Handle SV_SAMPLE_INDEX inputs.
747       vkd3d-shader/glsl: Implement VKD3DSIH_LD2DMS.
748       tests/shader_runner: Slightly simplify dxc handling.
749       tests/shader_runner_metal: Get rid of some stray semicolons.
750       vkd3d-shader/msl: Implement VKD3DSIH_DCL_INPUT.
751       vkd3d-shader/msl: Implement VKD3DSIH_DCL_OUTPUT_SIV.
752       vkd3d-shader/msl: Implement VKD3DSIH_DCL_OUTPUT.
753       include: Document the binary effect transformations supported by vkd3d_shader_compile().
755 Nikolay Sivov (61):
756       vkd3d-shader/fx: Set structure field offsets in bytes.
757       vkd3d-shader/fx: Only add numeric variables when writing buffers.
758       vkd3d-shader/fx: Expand BlendState array fields for fx_4_1 as well.
759       vkd3d-shader/fx: Fix the unpacked size and stride fields of the fx_4_0 types.
760       vkd3d-shader/tpf: Fix a typo when adding the SFI0 section.
761       vkd3d-shader: Handle the SV_SampleIndex semantic.
762       vkd3d-shader/hlsl: Implement the mad() intrinsic.
763       vkd3d-shader/fx: Check modifiers when reusing types.
764       vkd3d-shader/tpf: Create a stub STAT section.
765       vkd3d-shader/tpf: Handle conversion instructions in STAT.
766       vkd3d-shader/tpf: Handle arithmetic instructions in STAT.
767       vkd3d-shader/tpf: Handle 'emit' and 'cut' in STAT.
768       vkd3d-shader/tpf: Handle 'movc' in STAT.
769       vkd3d-shader/tpf: Handle texture instructions in STAT.
770       vkd3d-shader/d3d-asm: Tweak some GS declaration names.
771       vkd3d-shader/tpf: Handle GS reflection fields in the STAT section.
772       vkd3d-shader/tpf: Handle bitwise instructions in STAT.
773       vkd3d-shader/tpf: Handle atomic instructions in STAT.
774       vkd3d-shader/tpf: Handle tessellation stage fields in STAT.
775       vkd3d-shader/tpf: Handle barrier instructions in STAT.
776       vkd3d-shader/tpf: Add a 'lod' counter to the STAT.
777       vkd3d-shader/tpf: Set 'gather' instructions counter in the STAT.
778       vkd3d-shader/tpf: Move STAT fields update to a separate helper.
779       vkd3d-shader/tpf: Set temps count in the STAT section.
780       vkd3d-shader: Explicitly set indices for the numeric type names array.
781       tests: Add some more tests for type name handling.
782       vkd3d-shader/hlsl: Remove the 'double' keyword.
783       vkd3d-shader/d3dbc: Add an option to treat doubles as floats.
784       tests: Add some tests for initial values in effects.
785       vkd3d-shader/fx: Handle the 'half' type in fx_4+.
786       vkd3d-shader/fx: Add initial support for writing default values for fx_2_0.
787       vkd3d-shader/fx: Add support for writing annotations for fx_2_0.
788       vkd3d-shader/hlsl: Move default values indexing fixup to the tpf writer stage.
789       tests: Add some tests for state value assignments.
790       vkd3d-shader/hlsl: Do not lower index expressions for effects.
791       vkd3d-shader/fx: Handle assignments with array RHS indexed with a constant or a single variable.
792       vkd3d-shader/fx: Implement writing fx_2_0 object initializer data sections.
793       vkd3d-shader/hlsl: Remove the type equality assertion for binary expression arguments.
794       tests: Add a test for uniform array indexing.
795       vkd3d-shader/fx: Introduce a parser/disassembler.
796       vkd3d-shader/fx: Add support for parsing constant buffer elements.
797       vkd3d-shader/fx: Add support for tracing string variables.
798       vkd3d-shader/hlsl: Implement the modf() intrinsic.
799       vkd3d-shader/fx: Add support for tracing annotations.
800       vkd3d-compiler: Add missing 'fx' source type to the CLI output.
801       vkd3d-shader/fx: Implement parsing groups and techniques.
802       vkd3d-shader/hlsl: Handle snorm/unorm types as resource formats.
803       vkd3d-shader/hlsl: Implement the f32tof16() intrinsic.
804       vkd3d-shader/hlsl: Handle SV_GroupIndex.
805       vkd3d-shader/hlsl: Use a more compact way to store object method configurations.
806       vkd3d-shader/hlsl: Add parser support for the RWByteAddressBuffer type.
807       tests: Add some more tests for RWByteAddressBuffer store methods.
808       vkd3d-shader/hlsl: Implement RWByteAddressBuffer.Store*() methods.
809       vkd3d-shader/fx: Implement parsing shader objects.
810       vkd3d-shader/fx: Implement parsing shader resources types.
811       vkd3d-shader/hlsl: Accept multiple colon-separated attributes.
812       vkd3d-shader/spriv: Only lookup resource symbols for UAVs in the ld_raw/ld_structured handler.
813       vkd3d-shader/hlsl: Add parser support for the ByteAddressBuffer type.
814       vkd3d-shader/hlsl: Implement the ByteAddressBuffer.Load*() methods.
815       vkd3d-shader/fx: Implement parsing the remaining fx_5_0 object types.
816       vkd3d-shader/fx: Implement parsing states objects.
818 Petrichor Park (2):
819       vkd3d-shader/hlsl: Implement the dst() intrinsic.
820       vkd3d-shader/hlsl: Implement the sincos() intrinsic.
822 Shaun Ren (36):
823       vkd3d-shader/hlsl: Check for duplicate attributes in function declaration.
824       tests: Test hull shader attributes.
825       tests: Test hull shader function overloads.
826       vkd3d-shader/hlsl: Introduce parse_entry_function_attributes() helper.
827       vkd3d-shader/hlsl: Parse the domain attribute.
828       vkd3d-shader/hlsl: Parse the outputcontrolpoints attribute.
829       vkd3d-shader/hlsl: Parse the outputtopology attribute.
830       vkd3d-shader/hlsl: Parse the partitioning attribute.
831       vkd3d-shader/hlsl: Parse the patchconstantfunc attribute.
832       vkd3d-shader/hlsl: Validate hull shader attributes.
833       vkd3d-shader/hlsl: Introduce process_entry_function() helper.
834       vkd3d-shader/hlsl: Clone static_initializers for each entry function.
835       vkd3d-shader/hlsl: Record semantic extern vars separately for each entry function.
836       vkd3d-shader/hlsl: Track whether a variable is read in any entry function.
837       vkd3d-shader/hlsl: Allocate temporary registers separately for each entry function.
838       vkd3d-shader/hlsl: Invoke prepend_uniform_copy() only once for global uniforms.
839       tests: Test struct single inheritance.
840       vkd3d-shader/hlsl: Implement struct single inheritance.
841       vkd3d-shader/tpf: Write hull shader declarations.
842       vkd3d-shader/tpf: Implement semantics for hull shaders.
843       tests: Test hull shader uniform input parameters.
844       vkd3d-shader/hlsl: Process the patch constant function in hlsl_emit_bytecode().
845       vkd3d-shader/tpf: Introduce tpf_write_shader_function().
846       vkd3d-shader/tpf: Determine SIV from SV and index in write_sm4_dcl_semantic().
847       tests: Test signature reflection for hull shaders.
848       vkd3d-shader/tpf: Write the patch constant function in hull shaders.
849       vkd3d-utils: Implement version reflection.
850       vkd3d-utils: Return correct use masks during reflection.
851       vkd3d-shader/ir: Validate control point counts correctly.
852       vkd3d-shader/tpf: Write the input signature of domain shaders as PCSG.
853       vkd3d-shader/tpf: Use vpc input registers for domain shaders.
854       vkd3d-shader/tpf: Write domain shader declarations.
855       vkd3d-shader/tpf: Implement semantics for domain shaders.
856       tests: Test signature reflection for domain shaders.
857       vkd3d-shader/hlsl: Support discard for SM1.
858       vkd3d-shader/hlsl: Store SM4 semantic declarations in the vsir program.
860 Victor Chiletto (3):
861       vkd3d-shader/hlsl: Fold logic AND and logic OR identities.
862       tests: Add a test for unused overlapping cbuffer reservations.
863       vkd3d-shader/hlsl: Allow cbuffer reservations to overlap if only one of them is allocated.