1 The vkd3d team is proud to announce that release 1.13 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 - Basic loop unrolling support in the HLSL compiler.
8 - Effects compiler support for several version 4.0+ state objects.
9 - Miscellaneous bug fixes.
11 The source is available from the following location:
13 <https://dl.winehq.org/vkd3d/source/vkd3d-1.13.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.13
26 - The ID3D12CommandList6 interface is supported.
28 - Block-compressed textures can be created with unaligned dimensions. This
30 D3D12_FEATURE_D3D12_OPTIONS8.UnalignedBlockTexturesSupported.
32 - Some minor issues pointed out by the Vulkan validation layers have been
33 addressed. These are not known to affect applications in practice, but
34 should make libvkd3d slightly more well-behaved.
38 - New features for the HLSL source type:
39 - Basic loop unrolling support. Some of the more complicated cases like
40 loops containing conditional jumps are still unsupported.
41 - Initialisation values for global variables, function parameters, and
42 annotation variables are parsed and stored in output formats supporting
44 - Shader model 5.1 register spaces are supported when using the
45 corresponding target profiles, as well as shader model 5.1 reflection
47 - Register reservations support expressions as offsets. For example:
48 ‘float f : register(c0[1 + 1 * 2]);’
49 - The tex1D(), tex2D(), tex3D(), and texCUBE() intrinsic function variants
50 with explicit derivatives are supported.
51 - The following intrinsic functions are supported:
55 - GetRenderTargetSampleCount()
58 - tex1Dgrad(), tex2Dgrad(), tex3Dgrad(), and texCUBEgrad()
59 - The sin() and cos() intrinsic functions are supported in shader model
60 1-3 profiles. These were already supported in shader model 4+ profiles.
61 - The following features specific to effects target profiles:
62 - Types supported in version 4.0+:
64 - ComputeShader, DomainShader, GeometryShader, and HullShader
67 - State application functions implemented for version 4.0+ effects:
68 - OMSetRenderTargets()
70 - SetComputeShader(), SetDomainShader(), SetGeometryShader(),
71 SetHullShader(), SetPixelShader(), and SetVertexShader()
72 - SetDepthStencilState()
73 - SetRasterizerState()
74 - String types. These are mainly used for annotations.
75 - Annotations on global variables.
76 - Support for the ‘Texture’ field of the ‘SamplerState’ type.
77 - Support for NULL values.
78 - Stores to swizzled matrix variables.
79 - The ‘unsigned’ type modifier is supported. (For example,
80 ‘unsigned int’.) Note that ‘uint’ and related types were already
82 - ‘ConstantBuffer<>’ types.
83 - The ‘SV_Coverage’ output semantic for fragment shaders.
85 - The experimental DXIL source type supports quad group operations.
87 - The Direct3D shader model 2-3 ‘texldb’ instruction is correctly disassembled
88 when outputting Direct3D shader assembly.
91 - The vkd3d_shader_parameter_info structure extends the
92 vkd3d_shader_compile_info structure, and can be used to specify shader
93 parameters. This is a more generic version of the shader parameter
94 interface for SPIR-V targets in struct vkd3d_shader_spirv_target_info.
95 - The VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32 enumeration value specifies
96 that a shader parameter contains 32-bit floating-point data.
97 - The VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC shader parameter
98 specifies the alpha test function.
99 - The VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF shader parameter
100 specifies the alpha test reference value.
101 - The VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION shader parameter
102 specifies the interpolation mode for colour inputs in Direct3D shader
103 model 1-3 fragment shaders.
104 - The VKD3D_SHADER_PARAMETER_TYPE_BUFFER enumeration value specifies that
105 the value of a shader parameter is provided at run-time through a buffer
108 ### Changes since vkd3d 1.12:
110 Anna (navi) Figueiredo Gomes (6):
111 vkd3d-shader/ir: Periodically flush buffers when tracing blocks.
112 Add a .editorconfig file.
113 vkd3d: Use D3D12_SHADER_VISIBILITY_ALL for 32-bit root constants when using vk_heaps.
114 vkd3d-shader/spirv: Avoid decorating variables multiple times with NonReadable.
115 vkd3d-shader/spirv: Use unique SPIR-V variables for descriptors where visibility differs.
116 vkd3d-shader/spirv: Avoid decorating variables multiple times with Coherent.
118 Atharva Nimbalkar (2):
119 vkd3d-shader/glsl: Implement VKD3DSIH_MOV.
120 vkd3d-shader/glsl: Implement support for VKD3DSPR_TEMP registers.
123 vkd3d-shader/dxil: Implement DX intrinsic QuadOp.
124 vkd3d-shader/spirv: Implement the QUAD_READ_ACROSS_* instructions.
125 vkd3d-shader/dxil: Implement DX intrinsic QuadReadLaneAt.
126 vkd3d-shader/spirv: Implement the QUAD_READ_LANE_AT instruction.
127 tests/d3d12: Check for unaligned block texture support in test_create_committed_resource().
128 vkd3d: Allow block compressed textures to have unaligned width and height.
129 tests/d3d12: Test a null vertex buffer 'views' pointer on multiple slots.
130 vkd3d: Interpret a null vertex buffer 'views' pointer as a null buffer.
131 tests/shader-runner: Set the correct flag and format for raw UAVs.
132 tests/shader-runner: Create a new runner object for the shader model 6 tests.
133 vkd3d: Create a descriptor pool for static samplers when Vulkan-backed heaps are used.
134 tests: Add a test for clearing a large buffer UAV.
135 vkd3d: Limit the workgroup X count for buffer UAV clears to the supported max.
136 vkd3d: Add support for the ID3D12CommandList6 interface.
137 vkd3d-shader/spirv: Free the spirv parameter info.
138 vkd3d: Free descriptor range information on error paths in d3d12_root_signature_info_from_desc(). (Valgrind)
140 Elizabeth Figura (39):
141 vkd3d-shader/hlsl: Add a hlsl_fixme() for 5.1 resource arrays.
142 vkd3d-shader/hlsl: Put constant buffers into the extern_resources struct.
143 vkd3d-shader: Write SM5.1 register indices.
144 vkd3d-shader/hlsl: Allocate register spaces for constant buffers.
145 vkd3d-shader/hlsl: Allocate register spaces for objects.
146 vkd3d-shader: Write SM5.1 register spaces.
147 vkd3d-shader/hlsl: Write SM5.1 binding reflection data.
148 tests: Add reflection tests for register space.
149 vkd3d-shader/hlsl: Always initialize $$ when parsing modifiers from an arbitrary string.
150 tests: Stop probing all pixels when drawing a uniform colour.
151 tests: Run combined-samplers.shader_test on sm1 as well.
152 tests: Add another combined sampler test.
153 vkd3d-shader/hlsl: Respect the coords writemask in write_sm1_resource_load().
154 vkd3d-shader/hlsl: Only allocate the aligned size for uniforms.
155 vkd3d-shader/hlsl: Separate an "array" rule.
156 vkd3d-shader/d3dbc: Use enum vkd3d_shader_register_type in struct sm1_instruction.
157 tests/shader_runner: Use resource->width instead of resource->size for buffer width.
158 tests/shader_runner: Factor out a resource_desc structure.
159 tests: Implement multisampling in the Vulkan renderer.
160 tests: Implement multisampling in the GL renderer.
161 vkd3d-shader/hlsl: Implement the GetRenderTargetSampleCount() intrinsic.
162 vkd3d-shader/hlsl: Implement output SV_Coverage.
163 vkd3d-shader: Introduce struct vkd3d_shader_parameter_info and struct vkd3d_shader_parameter1.
164 include: Document shader parameters.
165 vkd3d-shader/spirv: Support passing shader parameters through uniform buffers.
166 tests: Add a test for the vkd3d_shader_parameter APIs.
167 vkd3d-shader/spirv: Respect VKD3D_SHADER_CONDITIONAL_OP_Z when discard has a bool argument.
168 vkd3d-shader: Allow controlling alpha test through vkd3d-shader parameters.
169 tests: Offset the viewport by 0.5 when running d3dbc shaders.
170 tests: Factor out a set_default_target() helper.
171 tests: Test alpha test.
172 vkd3d-shader/spirv: Allocate output_info after normalization.
173 vkd3d-shader: Factor out a vsir_program_get_parameter() helper.
174 vkd3d-shader/spirv: Pass a vkd3d_data_type to spirv_compiler_emit_shader_parameter().
175 vkd3d-shader: Do not make the alpha test ref parameter VSIR_DIMENSION_VEC4.
176 vkd3d-shader: Use the program parameters in spirv_compiler_alloc_spec_constant_id().
177 vkd3d-shader: Allow controlling d3d color shade mode through vkd3d-shader parameters.
178 tests: Test shade mode.
179 vkd3d-shader: Use an extended version of vkd3d_shader_immediate_constant in vkd3d_shader_parameter1.
181 Francisco Casas (52):
182 vkd3d-shader/hlsl: Record default values for uniforms and constant buffers.
183 vkd3d-shader/hlsl: Initialize default values with braceless initializers.
184 tests: Test default values using reflection.
185 vkd3d-shader/tpf: Write default values for SM4.
186 vkd3d-shader/d3dbc: Write default values for SM1.
187 tests: Test matrix default value initializers.
188 vkd3d-shader/hlsl: Fix numeric register offset for matrix components.
189 vkd3d-shader/hlsl: Reorder default values for matrices for SM4.
190 tests: Test register reservations on unused variables.
191 vkd3d-shader/hlsl: Only error out on bind_count register reservation overlaps for SM1.
192 vkd3d-shader/d3dbc: Split hlsl_sm1_write().
193 vkd3d-shader/hlsl: Generate CTAB outside d3dbc_compile().
194 vkd3d-shader/d3dbc: Introduce struct d3dbc_compiler.
195 vkd3d-shader/d3dbc: Use program->shader_version instead of ctx->profile.
196 vkd3d-shader/d3dbc: Don't require a hlsl_semantic to get register and usage.
197 vkd3d-shader/d3dbc: Use vsir_program I/O signatures to write dcls.
198 vkd3d-shader/d3dbc: Don't write inconsequential MOVs.
199 vkd3d-shader/hlsl: Free array sizes on function parameters (Valgrind).
200 tests: Separate the valid stateblock function names test from the string arg test.
201 vkd3d-shader/hlsl: Parse function call syntax on state blocks.
202 tests: Test whether valid state block function names are case-sensitive.
203 vkd3d-shader/hlsl: Validate state block function calls.
204 vkd3d-shader/hlsl: Add missing src1 and src2 constants to sincos on SM2.
205 tests: Test string escape sequences.
206 vkd3d-shader/hlsl: Parse string constants.
207 vkd3d-shader/hlsl: Parse string escape sequences.
208 vkd3d-shader/hlsl: Parse string type.
209 tests: Add missing double precission require directives.
210 tests: Report tests skipped because of missing capabilities.
211 tests/shader-runner: Add missing trace for wave_ops caps.
212 tests: Introduce VKD3D_TEST_DETAILED for the test driver.
213 vkd3d-shader/hlsl: Avoid dereferencing rel_offset if it is NULL.
214 tests: Add additional non-constant array indexing tests.
215 vkd3d-shader/hlsl: Lower non-constant array loads for SM1.
216 vkd3d-shader/hlsl: Remove SM1 fixme for matrix writemasks.
217 vkd3d-shader/hlsl: Lower non-constant row_major matrix loads for SM1.
218 tests: Add additional string tests.
219 vkd3d-shader/hlsl: Parse string default values.
220 vkd3d-shader/hlsl: Skip writing string default values.
221 vkd3d-shader/hlsl: Always work with the extern resource's component type.
222 vkd3d-shader: Avoid div by zero on assert in vkd3d_calloc() (ubsan).
223 tests: Add additional tests for function calls in state block rhs.
224 tests: Test shader compilation within function definitions.
225 tests: Test compile syntax on effects.
226 tests: Test shader compilation within braces.
227 tests: Test shader compilation with default values.
228 tests/shader_runner: Require explicit formats for UAV resources.
229 tests/shader_runner: Move parse_format() up.
230 tests/shader_runner: Replace spaces with dashes in format names.
231 tests/shader_runner: Don't skip shader compilation on missing caps.
232 tests/shader_runner: Explicitly require UAV load support.
233 tests/test-driver: Avoid double space when printing details.
235 Giovanni Mascellani (57):
236 tests: Mark some root signature unbounded range failures as todo on MoltenVK.
237 vkd3d: Do not request VK_EXT_debug_marker if debug is disabled.
238 vkd3d: Enable VK_KHR_portability_subset if available.
239 vkd3d: Do not synchronize with the geometry shader stage if it's not enabled.
240 ci: Assume an Apple Silicon-based environment for the macOS CI job.
241 tests: Skip sampling cube textures on Qualcomm.
242 tests: Transition resources to PIXEL_SHADER_RESOURCE in test_sample_c_lz().
243 tests: Check that depth/stencil formats are supported before using them.
244 vkd3d: Do not synchronize with the tessellation shader stages if they're not enabled.
245 tests: Improve feedback when enabling d3d12 debug layers.
246 tests: Enable the d3d12 debug layer message callbacks.
247 tests: Support using the Agility SDK in the crosstests.
248 vkd3d: Propagate a failure in d3d12_descriptor_heap_init().
249 tests: Define WIDL macros in utils.h.
250 vkd3d: Allocate temporary arrays on the stack in d3d12_command_list_update_push_descriptors().
251 tests: Pad the constant buffer in test_update_compute_descriptor_tables() to 256 bytes.
252 tests: Terminate the Agility SDK path with a slash.
253 vkd3d: Document how to install "Graphics Tools" to use the Agility SDK.
254 vkd3d: Rebuild the vkd3d_physical_device_info chain before creating the device.
255 vkd3d: Remove the temporary pointers in vkd3d_physical_device_info_init().
256 vkd3d: Propagate errors out of d3d12_root_signature_append_vk_binding().
257 vkd3d: Disable WARN_ON() when VKD3D_NO_DEBUG_MESSAGES is defined.
258 vkd3d: Disable FIXME_ONCE() when VKD3D_NO_DEBUG_MESSAGES is defined.
259 vkd3d: Allow disabling ERR() by defining VKD3D_NO_ERROR_MESSAGES.
260 vkd3d: Introduce debug severity MESSAGE.
261 vkd3d: Introduce a softer form of assertion.
262 vkd3d: Allow aborting on ERR().
263 vkd3d: Emit an ERR() when reaching unreachable code.
264 ci: Abort on assertions on the CI.
265 tests: Test register conflicts in a root signature.
266 vkd3d: Replace assert() with VKD3D_ASSERT() in command.c.
267 vkd3d: Replace assert() with VKD3D_ASSERT() in resource.c.
268 vkd3d: Replace assert() with VKD3D_ASSERT() in state.c.
269 vkd3d: Replace assert() with VKD3D_ASSERT() in utils.c.
270 vkd3d: Replace assert() with VKD3D_ASSERT() in vkd3d_private.h.
271 vkd3d-common: Remove an assertion in vkd3d_dbg_printf().
272 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in checksum.c.
273 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in d3d_asm.c.
274 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in d3dbc.c
275 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in dxbc.c.
276 tests: Mark a couple of tests as working on recent NVIDIA GPUs.
277 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in dxil.c.
278 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in fx.c.
279 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl_codegen.c.
280 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl_constant_ops.c.
281 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl.c.
282 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl.h.
283 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl.y.
284 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in ir.c.
285 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in preproc.h.
286 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in preproc.l.
287 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in preproc.y.
288 vkd3d: Check the entire root signature for register conflicts.
289 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in spirv.c.
290 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in tpf.c.
291 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in vkd3d_shader_main.c.
292 vkd3d-shader: Replace assert() with VKD3D_ASSERT() in vkd3d_shader_private.h.
295 vkd3d-shader/ir: Rename the "handler_idx" field of struct vkd3d_shader_instruction to "opcode".
296 vkd3d: Always use UINT views to clear UAVs with integer formats.
297 vkd3d-shader/ir: Remove VKD3DSIH_DCL instructions.
298 vkd3d-shader/ir: Remove VKD3DSIH_DCL_SAMPLER instructions.
299 vkd3d-common: Replace assert() with VKD3D_ASSERT().
300 vkd3d-shader/fx: Replace assert() with VKD3D_ASSERT().
301 vkd3d: Do not include assert.h.
302 build: Actually run bitwise-assignment.shader_test.
303 vkd3d-shader/spirv: Decorate non-array descriptor variables as well.
306 vkd3d-shader/hlsl: Handle "unsigned int" type.
307 tests: Add some basic tests for ConstantBuffer type.
308 tests: Add a few tests for the NULL value.
309 vkd3d-shader/fx: Do not write shared buffers block when not compiling as a child effect.
310 vkd3d-shader/hlsl: Implement tex2Dbias().
311 vkd3d-shader/asm: Output 'bias' flag for 'texld'.
312 vkd3d-shader/d3dbc: Write load instruction for tex2Dbias().
313 vkd3d-shader/hlsl: Store original semantic name.
314 vkd3d-shader/fx: Use original full semantic name.
315 vkd3d-shader/fx: Set EXPLICIT_BIND_POINT flag for packoffset() reservations as well.
316 vkd3d-shader/fx: Fix variable buffer offset value.
317 vkd3d-shader/hlsl: Add support for ConstantBuffer<> type.
318 vkd3d-shader/fx: Cast state block field values to target type.
319 vkd3d-shader/fx: Add support for writing DepthStencilState objects.
320 vkd3d-shader/hlsl: Add RasterizerState type.
321 vkd3d-shader/fx: Add support for writing RasterizerState objects.
322 vkd3d-shader: Implement tex*() functions variants with gradient arguments.
323 vkd3d-shader/hlsl: Implement tex*grad() functions.
324 vkd3d-shader/fx: Fix structure type data written for fx_4.
325 vkd3d-shader/fx: Write default numeric values.
326 vkd3d-shader/fx: Fix packed size for fx_4+ types.
327 vkd3d-shader/fx: Preserve parsing order of initializer components.
328 vkd3d-shader/fx: Add missing fields for structure types on fx_5_0.
329 vkd3d-shader/hlsl: Do not crash on initialization of a redefined variable.
330 vkd3d-shader/hlsl: Set default values for annotations variables.
331 vkd3d-shader/fx: Write annotations for fx_4+ profiles.
332 tests: Add some fx profiles tests for structure types containing objects.
333 vkd3d-shader: Disallow object structure fields for fx profiles.
334 vkd3d-shader/fx: Do not output empty strings for missing semantics for fx_2_0.
335 vkd3d-shader/hlsl: Allow annotations on global variables.
336 vkd3d-shader/fx: Correct empty pass check.
337 vkd3d-shader/fx: Set total pass count for fx_2_0.
338 vkd3d-shader/fx: Correct one of the object counters in the fx_2_0 header.
339 vkd3d-shader/fx: Decompose function-style state assignments to individual states.
340 vkd3d-shader/fx: Handle SetRasterizerState().
341 vkd3d-shader/hlsl: Add parser support for ComputeShader, DomainShader, and HullShader types.
342 vkd3d-shader/fx: Fix state block entry array shifting when decomposing.
343 vkd3d-shader/fx: Add support for SetDomainShader(), SetComputeShader(), and SetHullShader() states.
344 vkd3d-shader/fx: Handle "Texture" field of the sampler state objects.
345 vkd3d-shader/fx: Use more descriptive names for FX-specific types.
346 vkd3d-shader/fx: Add an array size field to the states description table.
347 vkd3d-shader/fx: Add support for the OMSetRenderTargets() state.
348 vkd3d-shader/hlsl: Add parser support for GeometryShader type.
349 vkd3d-shader/fx: Check destination array index when checking for duplicate state entries.
350 vkd3d-shader/hlsl: Add parser support for BlendState type.
351 vkd3d-shader/fx: Enable writing BlendState variables.
352 vkd3d-shader/fx: Run full set of constants passes on state block entries values.
353 vkd3d-shader/fx: Handle states of a BlendState object.
354 vkd3d-shader/fx: Explicitly handle bool values in state entries.
355 vkd3d-shader/fx: Turn assignments to arrays to element assignments for certain states.
356 vkd3d-shader/hlsl: Check MS texture declaration without sample count only for used variables.
357 vkd3d-shader/hlsl: Handle NULL constants.
358 vkd3d-shader/hlsl: Add a test for assigning to DSV and RTV variables.
359 vkd3d-shader/hlsl: Tokenize 'String' the same as 'string'.
360 vkd3d-shader/hlsl: Treat "string" type name as case-insensitive.
361 vkd3d-shader/fx: Enable writing string objects for fx_4+.
362 vkd3d-shader/fx: Support string annotations for fx_4+.
363 vkd3d-shader/fx: Handle SetBlendState().
364 vkd3d-shader/fx: Handle SetPixelShader() and SetVertexShader().
365 vkd3d-shader/hlsl: Adjust NULL type properties to make it usable in transformations.
366 vkd3d-shader/fx: Support NULL constants for object fields.
367 vkd3d-shader/fx: Resolve NULL values for SamplerState.Texture field.
368 vkd3d: Fix a few typos in the comments.
369 vkd3d-shader/glsl: Fix a typo in a few messages.
370 include: Fix a few typos in the IDL files.
371 vkd3d-shader/fx: Fix the matrix type class for fx_2_0.
374 vkd3d-shader/hlsl: Implement the faceforward() intrinsic.
375 vkd3d-shader/hlsl: Implement tests for the rcp() intrinsic.
376 vkd3d-shader/hlsl: Implement the rcp() intrinisic.
377 vkd3d-shader/tpf: Implmenent HLSL_OP1_RCP.
378 vkd3d-shader/hlsl: Factor out add_binary_expr() and use it for assignment operators.
381 vkd3d-shader/ir: Lower SM1 SINCOS to SM4 SINCOS.
382 vkd3d-shader/hlsl: Implement sin/cos for SM1.
383 vkd3d-shader/d3dbc: Implement HLSL_OP3_MAD for SM1.
384 vkd3d-shader/hlsl: Allocate registers for HLSL_OP1_{COS,SIN}_REDUCED with the required writemasks.
385 vkd3d-shader/d3dbc: Implement HLSL_OP1_{COS,SIN}_REDUCED for SM1.
386 vkd3d-shader/hlsl: Support default values for function parameters.
389 include: Get rid of the RB_FOR_EACH* macros.
390 vkd3d: Pass a proper struct shader_cache_key * to rb_put() in vkd3d_shader_cache_add_entry().
392 Victor Chiletto (20):
393 tests: Add more register reservations tests.
394 vkd3d-shader/hlsl: Support expressions as register offsets.
395 vkd3d-shader/hlsl: Pass a pointer to struct hlsl_reg_reservation in parse_reservation_index.
396 vkd3d-shader/hlsl: Ignore bracket offsets for 'b' register types prior to SM 5.1.
397 vkd3d-shader/hlsl: Do not immediately fail parsing for malformed 'b' register reservations.
398 vkd3d-shader/hlsl: Validate cbuffer register allocations.
399 vkd3d-shader/hlsl: Reserve register slots for unused buffers.
400 tests: Add reflection tests for register expressions.
401 vkd3d-shader/d3dbc: Fix implicit enum conversion warning.
402 tests/hlsl: Add a test for dynamically indexed multisampled texture loads.
403 vkd3d-shader/hlsl: Use a switch in validate_static_object_references().
404 vkd3d-shader/hlsl: Defer bounds checks to after copy propagation.
405 vkd3d-shader/hlsl: Pull evaluate_static_expression_as_uint() upwards.
406 vkd3d-shader/hlsl: Parse loop and unroll loop attributes.
407 vkd3d-shader/hlsl: Allow cloned blocks to contain external references.
408 vkd3d-shader/hlsl: Implement loop unrolling.
409 tests/hlsl: Test loop unrolling edge cases.
410 vkd3d-shader/hlsl: Implement the asint() intrinsic.
411 vkd3d-shader/hlsl: Push a new scope when compiling internal functions.
412 vkd3d-shader/hlsl: Implement f16tof32 intrinsic.
415 tests: Pass the correct buffer size to vsnprintf() in vkd3d_test_push_context().
416 vkd3d-shader/hlsl: Implement storing to a swizzled matrix.