The Wine team just announced the release of vkd3d version 1.7, their Direct3D 12 to Vulkan translation layer. Not to be confused with VKD3D-Proton, Valve's own fork of it with a focus on gaming with Proton.
Here's the main highlights of vkd3d 1.7:
- Support for many more HLSL features and intrinsics.
- Much improved support for the Direct3D shader model 1/2/3 HLSL profiles.
- Public vkd3d-shader API for parsing and serialising DXBC blobs.
- Miscellaneous bug fixes.
The full changes:
*** libvkd3d-shader
- New features for the HLSL source type:
- Support for calling user-defined functions.
- Support for array parameters to user-defined functions.
- Much improved support for the Direct3D shader model 1/2/3 profiles.
- Support for the SV_DispatchThreadID, SV_GroupID, and SV_GroupThreadID
compute shader system-value semantics.
- Support for the optional "offset" parameter of the texture object Load()
method.
- Support for the all() intrinsic function.
- Support for the distance() intrinsic function.
- Support for the exp() and exp2() intrinsic functions.
- Support for the frac() intrinsic function.
- Support for the lit() intrinsic function.
- Support for the reflect() intrinsic function.
- Support for the sin() and cos() intrinsic functions.
- Support for the smoothstep() intrinsic function.
- Support for the sqrt() and rsqrt() intrinsic functions.
- Support for the step() intrinsic function.
- Support for the transpose() intrinsic function.
- Support for the case-insensitive variants of the "float" and "dword" data
types.
- Partial support for minimum precision data types like "min16float". These
are currently interpreted as their regular counterparts.
- Improved constant propagation support, in particular to constant
propagation through swizzles.
- HLSL static variables are now properly zero-initialised.
- The Direct3D shader model 4 and 5 disassembler outputs sample counts for
multi-sampled resource declarations.
- New interfaces:
- vkd3d_shader_parse_dxbc() provides support for parsing DXBC blobs.
- vkd3d_shader_serialize_dxbc() provides support for serialising DXBC blobs.
- vkd3d_shader_free_dxbc() is used to free vkd3d_shader_dxbc_desc
structures, as returned by vkd3d_shader_parse_dxbc().
- The VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE compile option
can be used to specify whether SPIR-V shaders targeting Vulkan
environments should write point sizes for geometry and tessellation
shaders. If left unspecified, point sizes will be written.
Want help managing Wine on Linux? You can try Bottles, Lutris and the Heroic Launcher.
Quoting: PikoloWTF is a case-insensitive float? Case sensitiveness would normally be a feature for text data types, not numbershttps://gitlab.winehq.org/wine/vkd3d/-/commit/dd36215a00174a1db560021562bad84cd37e3071
AIUI, essentially it allows for declaring a variable using "float" or "FLOAT"?
Quoting: whizseDidn't expect that! So it means some shaders are wrongly cased, DirectX's HLSL parser does not care and Wine will just have to work with it for compatibility.Quoting: PikoloWTF is a case-insensitive float? Case sensitiveness would normally be a feature for text data types, not numbershttps://gitlab.winehq.org/wine/vkd3d/-/commit/dd36215a00174a1db560021562bad84cd37e3071
AIUI, essentially it allows for declaring a variable using "float" or "FLOAT"?
Thank you for indulging my curiosity.
Last edited by Pikolo on 27 March 2023 at 11:40 am UTC
See more from me