The Wine development release 9.22 is now available.
What's new in this release:
- Support for display mode virtualization.
- Locale data updated to Unicode CLDR 46.
- More support for network sessions in DirectPlay.
- Wayland driver enabled in default configuration.
- Various bug fixes.
The source is available at <https://dl.winehq.org/wine/source/9.x/wine-9.22.tar.xz>
Binary packages for various distributions will be available
from the respective [download sites][1].
You will find documentation [here][2].
Wine is available thanks to the work of many people.
See the file [AUTHORS][3] for the complete list.
[1]: https://gitlab.winehq.org/wine/wine/-/wikis/Download
[2]: https://gitlab.winehq.org/wine/wine/-/wikis/Documentation
[3]: https://gitlab.winehq.org/wine/wine/-/raw/wine-9.22/AUTHORS
----------------------------------------------------------------
### Bugs fixed in 9.22 (total 19):
- #42606 wine doesn't *fully* respect locale settings in some corner cases
- #52105 Cygwin setup hangs (handle to \Device\NamedPipe\ used as the RootDirectory for NtCreateNamedPipeFile)
- #53019 MusicBee: inconsistent CJK/non-Latin support with Tahoma, no support on any other font.
- #53321 snakeqr: Unhandled page fault on write access in A_SHAFinal (needs NtdllDefWindowProc_A)
- #56466 Dark souls remastered crashing with winewayland when trying to open "pc settings" in game
- #56790 wine binds dedicatedServer.exe to "lo" adapter
- #56833 Installer of LabOne 24.04 stops with error " ... setup wizard ended prematurely ..."
- #57072 Window is flashing when painting transluent effects
- #57277 Wine 9.19 fails to compile
- #57290 String Substitution not working
- #57325 MS Office 2007 and MS Office 2013 setup fails
- #57334 FL Studio - huge graphical glitch when moving windows inside the app
- #57341 Heidisql 7.0 crashes
- #57370 The Steam systray icon does not respond to mouse clicks.
- #57382 World Of Warcraft no longer start
- #57388 Major perf loss with blocking ReadFile() & OVERLAPPED
- #57391 FSCTL_DISMOUNT_VOLUME does not work on drives with spaces in path
- #57407 Windows Movie Maker hangs in Win7 mode (regression)
- #57423 Active window no longer receives keyboard input after losing and regaining focus (only in virtual desktop)
### Changes since 9.21:
```
Agustin Principe (1):
d2d1: Accept DXGI_FORMAT_R8G8B8A8_UNORM format for WIC targets.
Alexandre Julliard (63):
user32: Add an ANSI version of the desktop window proc.
user32: Add an ANSI version of the icon title window proc.
user32: Add an ANSI version of the menu window proc.
user32: All builtin window procs are now dual A/W.
ntdll/tests: Use the function pointer for NtWow64QueryInformationProcess64.
server: Fix a thread reference leak.
ntdll: Add support for the builtin window procs table.
user32: Use the ntdll definitions for builtin windows procs.
user32: Use the ntdll function table for builtin window procs.
user32: Make the builtin window procs table layout compatible with Windows.
ntdll/tests: Add tests for the builtin window procs table.
user32/tests: Add tests for ntdll builtin window procs.
user32/tests: Remove some obsolete winproc tests.
kernel32/tests: Add some tests for EnumSystemFirmwareTables().
ntdll: Implement BIOS table enumeration.
kernelbase: Implement EnumSystemFirmwareTables().
tools: Download all Unicode data files before generating anything.
nls: Update locale data to CLDR version 46.
mpg123: Import upstream release 1.32.9.
fluidsynth: Import upstream release 2.4.0.
rundll32: Don't bother cleaning up at process exit.
rundll32: Use crt allocation functions.
rundll32: Rewrite command line parsing.
rundll32: Restart itself if the dll is for a different architecture.
ntdll: Always return 0 length on failure in SystemFirmwareTableInformation.
ntdll/tests: Fix a test failure on 64-bit Windows.
server: Print a warning if page size isn't 4k.
server: Move the generated part of request.h to a separate header.
server: Move the generated part of trace.c to a separate header.
server: Simplify updating the protocol version.
server: Use an explicit union instead of a typedef for APC calls.
server: Use an explicit union instead of a typedef for APC results.
server: Use an explicit struct instead of a typedef for user APCs.
server: Use an explicit struct instead of a typedef for async I/O data.
server: Use an explicit union instead of a typedef for message data.
server: Use an explicit union instead of a typedef for hardware input.
server: Use an explicit union instead of a typedef for debug event data.
server: Use an explicit union instead of a typedef for IRP params.
server: Use an explicit union instead of a typedef for select operations.
win32u: Implement NtUserBuildPropList().
win32u: Implement NtUserBuildNameList().
user32: Move PostQuitMessage() implementation to win32u.
user32: Move support for posting a DDE message to win32u.
user32: Don't use server data types in clipboard.c.
win32u: Implement NtUserQueryWindow().
server: Use an explicit struct instead of a typedef for generic access mappings.
server: Use an explicit struct instead of a typedef for process startup info.
server: Use an explicit struct instead of a typedef for PE image info.
server: Use an explicit struct instead of a typedef for window property data.
server: Use an explicit struct instead of a typedef for cursor positions.
win32u: Implement the remaining arguments of NtUserBuildHwndList().
user32: Reimplement the enum window functions using NtUserBuildHwndList().
user32: Reimplement GetDlgItem() using NtUserBuildHwndList().
user32: Reimplement WIN_ListChildren() using NtUserBuildHwndList().
user32: Move GetLastActivePopup() implementation to win32u.
user32: Move GetLastInputInfo() implementation to win32u.
server: Add a new request to find sibling windows by class name.
win32u: Reimplement list_window_children() using NtUserBuildHwndList().
server: Use an explicit union instead of a typedef for TCP connections.
server: Use an explicit union instead of a typedef for UDP endpoints.
server: Use an explicit struct instead of a typedef for object locators.
server: Use an explicit struct instead of a typedef for register contexts.
server: Use an explicit struct instead of a typedef for rectangles.
Alistair Leslie-Hughes (1):
user32: Implement GetDpiAwarenessContextForProcess.
Anton Baskanov (27):
dplayx/tests: Add missing pragma pack directives.
dplayx/tests: Check that groups from SUPERENUMPLAYERSREPLY are added to the session.
dplayx: Add group to the parent group in DP_CreateGroup().
dplayx: Set group data in DP_CreateGroup().
dplayx: Return HRESULT from DP_CreateGroup().
dplayx: Inform the SP about group creation in DP_CreateGroup().
dplayx: Add groups from SUPERENUMPLAYERSREPLY to the session.
dplayx: Respect enumeration flags in EnumGroups().
dplayx: Always set the data size in GetGroupData().
dplayx: Factor out a function for adding player to a group.
dplayx: Add group players from SUPERENUMPLAYERSREPLY to the group.
dplayx/tests: Test client side of AddPlayerToGroup() separately.
dplayx: Queue DPSYS_ADDPLAYERTOGROUP in DP_AddPlayerToGroup().
dplayx: Send ADDPLAYERTOGROUP in AddPlayerToGroup().
dplayx/tests: Test that group data is updated from GROUPDATACHANGED.
dplayx: Enter the critical section when accessing the group list.
dplayx: Handle GROUPDATACHANGED, update the group data and queue DPSYS_SETPLAYERORGROUPDATA.
dplayx: Factor out a function for reading service providers.
dplayx: Convert connection name to UNICODE when enumerating through UNICODE interface.
dplayx/tests: Test UNICODE version of EnumSessions().
dplayx: Convert session name and password to UNICODE when enumerating through UNICODE interface.
dplayx: Forward IDirectPlay3A to IDirectPlay4A.
dplayx: Cache connections.
dplayx: Read connection name from descriptionW and descriptionA when available.
dplayx: Use DP_GetRegValueW() to read SP GUID.
dplayx: Reimplement DirectPlayEnumerateAW() using DP_GetConnections().
dplayx: Reimplement DP_LoadSP() using DP_GetConnections().
Aurimas Fišeras (1):
po: Update Lithuanian translation.
Bernhard Übelacker (4):
msvcrt: Do not create a separate heap in newer msvcrt versions.
kernel32/tests: Remove todo_wine from now succeeding heap test.
include: Add ucrt _sprintf_l declaration.
wineps.drv: Use locale aware variants _sprintf_l and _sscanf_l (ASan).
Billy Laws (1):
msi: Also set x64 properties for arm64 hosts.
Biswapriyo Nath (1):
include: Add UI Automation Annotation Type ID definitions.
Brendan McGrath (2):
mf: Retry PROCESSINPUTNOTIFY if TRANSFORM_TYPE_NOT_SET is returned.
mf: Send MEError when IMFStreamSink_ProcessSample fails.
Brendan Shanks (1):
Add .gitattributes file to mark generated files.
Charlotte Pabst (2):
jscript: Handle star and opt operators while matching global regex properly.
jscript/tests: Add tests for star and opt operators in global regex.
Connor McAdams (6):
d3dx9/tests: Include ddraw.h in surface.c for DDS header flag definitions.
d3dx9: Don't attempt to save palettized surfaces in D3DXSaveSurfaceToFileInMemory().
d3dx9/tests: Add more tests for saving surfaces as DDS files.
d3dx9: Improve save_dds_surface_to_memory().
d3dx9: Set the DDSCAPS_ALPHA flag when saving DDS files with a pixel format containing an alpha channel.
d3dx9: Add support for saving paletted surfaces to DDS files.
Daniel Lehman (2):
kernel32/tests: Add some tests for Thai and Mongolian codes.
nls: Set alpha bit on some Thai and Mongolian codes.
Elias Norberg (4):
wintrust: Implement CryptCATAdminAcquireContext2().
wintrust/tests: Add CryptCATAdminAcquireContext2() tests.
wintrust: Implement CryptCATAdminCalcHashFromFileHandle2().
wintrust/tests: Add CryptCATAdminCalcHashFromFileHandle2() tests.
Elizabeth Figura (17):
winevulkan: Use extend() instead of passing two separate roots to functions.
winevulkan: Use the correct logger method.
wined3d: Do not clamp fog in the VS.
wined3d: Calculate the texture matrix solely from the vertex declaration.
wined3d: Rewrite the comment in compute_texture_matrix().
wined3d: Clear caps to zero in shader caps query functions.
wined3d: Initialize max_blend_stages in the SPIRV fragment pipe.
wined3d: Move shader_trace().
wined3d: Move shader parsing to shader_set_function().
wined3d: Create stub FFP pixel shaders.
wined3d: Create stub FFP vertex shaders.
wined3d: Account for HLSL FFP shaders in find_ps_compile_args().
wined3d: Allow using the HLSL FFP replacement with GL.
wined3d: Use the FFP HLSL pipeline for pretransformed draws as well.
wined3d: Beginnings of an HLSL FFP vertex shader implementation.
include: Add dxvahd.idl.
dxva2: Stub DXVAHD_CreateDevice().
Eric Pouech (17):
kernel32/tests: Don't hardcode page size in buffer size.
advapi32/tests: Fix typo in manifest constant.
advapi32: Test some other cases of process access rights mapping.
server: Amend process rights mapping.
cmd/tests: Add tests about substring substitution in variable expansion.
cmd: Fix substring substitution in variable expansion.
cmd: Implement 'touch' equivalent in COPY builtin.
cmd/tests: Add test about IF EXIST.
cmd: Modifiers in tilde variable expansion are case insensitive.
cmd: Fix 'IF EXIST DIRECTORY' test condition evaluation.
dbghelp: Don't try to load PDB for a RSDS debug directory in .buildid section.
dbghelp: Only WARN on stripped PE images.
dbghelp/tests: Improve SymSrvGetFileIndexInfo tests.
dbghelp: Fill-in data in SymSrvGetFileIndexIndo if BAD_EXE_FORMAT.
dbghelp/tests: Add retry wrapper around SymRefreshModuleList().
dbghelp/tests: Add tests for SymRefreshModuleList().
dbghelp: Implement SymRefreshModuleList().
Etaash Mathamsetty (1):
explorer: Enable the Wayland driver.
Fabian Maurer (9):
net/tests: Add test for stopping non existing service.
net: Correct error code for stopping non existing service.
msi/tests: Add more tests for MsiSummaryInfoPersist.
msi: Make MsiGetSummaryInformationW open database as direct instead of transacted.
ieframe: Add IERefreshElevationPolicy stub.
comctl32/listbox: Close a few leaked window handles.
comctl32/combo: Add tests for keypresses showing search functionality.
comctl32/listbox: Add tests for keypresses showing search functionality.
msxml3: Undo removal of xmlThrDefTreeIndentString.
Floris Renaud (1):
po: Update Dutch translation.
Gabriel Ivăncescu (18):
mshtml: Reset builtin function props to their default values when deleted.
mshtml: Throw invalid action for IE8 window prop deletion.
jscript: Add basic semi-stub implementation of GetMemberProperties.
mshtml: Use BSTR to store global prop's name.
mshtml: Override window's element prop directly rather than using GLOBAL_DISPEXVAR.
mshtml: Check if window global prop still exists before returning its id.
mshtml: Forward deletion for GLOBAL_SCRIPTVAR to the script's object.
jscript: Delete external props before redefining them.
jscript: Make most builtin global objects configurable.
mshtml: Use actual referenced prop flags for window script props.
mshtml: Don't use cycle collection for nsChannel.
mshtml: Enumerate all own builtin props from host object's NextProperty.
mshtml/tests: Add initial tests for prototype chain props.
mshtml: Expose ownerDocument from NodePrototype.
mshtml: Don't expose removeNode from NodePrototype.
mshtml: Don't expose replaceNode from NodePrototype.
mshtml: Don't expose swapNode from NodePrototype.
mshtml: Set the name of the non-function constructors to the same as the object.
Georg Lehmann (1):
winevulkan: Update to VK spec version 1.3.302.
Gerald Pfeifer (3):
dpwsockx: Don't use true as a variable name.
msi: Don't use bool as a variable name.
jscript: Don't use bool as a variable name.
Hans Leidekker (3):
wininet: Accept UTC as the equivalent of GMT.
wininet: Use InternetTimeToSystemTimeW() to convert header values.
iphlpapi: Sort adapters by route metric in GetAdaptersAddresses().
Haoyang Chen (5):
winhttp/tests: Add some tests for WinHttpRequestOption_SslErrorIgnoreFlags in IWinHttpRequest_{put,get}_Option.
winhttp: Add support WinHttpRequestOption_SslErrorIgnoreFlags in IWinHttpRequest_put_Option.
winhttp: Add support WinHttpRequestOption_SslErrorIgnoreFlags in IWinHttpRequest_get_Option.
winex11: Fix URL encoding for non-ASCII characters.
wined3d: Fix a memory leak.
Jacek Caban (6):
configure: Use -ffunction-sections for PE targets.
winegcc: Pass -fms-hotpatch to the linker.
configure: Use -fms-hotpatch when available.
configure: Preserve original CFLAGS when adding LLVM flags.
ntdll: Use proper format string for ULONG type.
windowscodecs/tests: Always use a format string in winetest_push_context calls.
Jinoh Kang (2):
server: Don't crash when opening null path with a console handle as RootDirectory.
server: Don't crash when opening null path with a console server as RootDirectory.
John Chadwick (2):
wintab32: Align WTPACKET for 32/64-bit archs.
winex11: Remove stub tablet_get_packet wow64 thunk.
Marc-Aurel Zent (5):
winemac.drv: Allow symbol vkeys to match on Mac virtual key codes.
winemac.drv: Add Mac virtual key code information to the German layout.
winemac.drv: Add additional French symbol vkeys mappings.
include: Add Japanese IME virtual key codes to kbd.h.
winex11: Include kbd.h instead of ime.h.
Matteo Bruni (1):
wined3d: Allow reusing current GL context without a current RT.
Michael Müller (2):
ntdll: Implement HashLinks field in LDR module data.
ntdll: Use HashLinks when searching for a dll using the basename.
Mohamad Al-Jaf (3):
icmui: Add stub dll.
icmui: Add SetupColorMatchingW() stub.
icmui/tests: Add some SetupColorMatchingW() tests.
Nikolay Sivov (4):
dwrite/layout: Skip to the next typography range when current one has no features.
comctl32/listview: Initialize hot cursor handle.
comctl32/listview: Send LVN_HOTTRACK in response to mouse moves.
d2d1/tests: Add some tests for WIC target formats.
Paul Gofman (4):
kernel32/tests: Factor out is_old_loader_struct().
kernel32/tests: Add tests for module hash links.
server: Don't update cursor pos in set_window_pos() if window wasn't moved.
opengl: Avoid infinite recursion in bezier_approximate() in case of degraded curve.
Piotr Caban (2):
services: Sort services start order by start type.
wine.inf: Set MountMgr service start option to SERVICE_BOOT_START.
Pétur Runólfsson (1):
wtsapi32: Handle WTSSessionInfo class in WTSQuerySessionInformationW().
Rémi Bernon (63):
d3d9/tests: Avoid creating visible windows concurrently.
d3d9/tests: Use static class for the dummy window.
d3d8/tests: Avoid creating visible windows concurrently.
d3d8/tests: Use static class for the dummy window.
wined3d: Cast format_id when comparing it to the last format index.
winewayland: Fix surface scaling with HiDPI compositor.
win32u: Offset the new display modes relative to the primary source.
server: Use the monitor infos to map points from raw to virt.
win32u: Compute monitors raw DPI from the physical / current mode ratio.
win32u: Introduce a new registry setting to emulate modesetting.
desk.cpl: Expose the modesetting emulation registry setting.
winex11: Avoid requesting unnecessary _NET_WM_STATE changes.
winex11: Avoid requesting unnecessary window config changes.
winex11: Avoid updating _NET_WM_STATE on iconic windows.
winex11: Simplify the control flow in WM_STATE handlers.
winex11: Simplify the control flow in ConfigureNotify handlers.
winex11: Reset embedded window position to 0x0 before docking it.
winex11: Reset the window relative position when it gets reparented.
winex11: Introduce a new host_window_send_configure_events helper.
winex11: Retrieve the HWND for the host window's child window.
winex11: Avoid overriding previously received ConfigureNotify events.
winex11: Generate ConfigureNotify events for the children tree.
winex11: Always generate ConfigureNotify events for embedded windows.
winex11: Ignore focus changes during WM_STATE transitions.
winex11: Use the new window state tracker to get _NET_WM_STATE value.
winex11: Use the new window state tracker to get WM_STATE value.
winex11: Introduce a new window_update_client_state helper.
winex11: Introduce a new window_update_client_config helper.
winebus: Always return success from PID effect control.
winebus: Enable all PID effect types for wheel devices.
winebus: Build HID report descriptors on device creation.
winebus: Lookup device HID usage and usage page on the PE side.
winebus: Count HID buttons and pass it to is_hidraw_enabled.
winebus: Enable hidraw by default for various HOTAS controllers.
dinput: Assume that clipping the cursor uses the requested rectangle.
dinput: Only call SetCursorPos if ClipCursor fails.
winex11: Listen to PropertyNotify events on the virtual desktop window.
winex11: Don't expect WM_STATE events on override-redirect windows.
winex11: Wait for pending _NET_WM_STATE before updating the client state.
winex11: Wait for pending ConfigureNotify before updating the client state.
winex11: Update the window client config on window state changes.
winex11: Request window state updates asynchronously.
d3d9/tests: Flush events after minimizing and restoring focus window.
evr: Use D3DCREATE_MULTITHREADED device creation flag.
winex11: Use the state tracker to decide if changes can be made directly.
winex11: Update other window state properties within window_set_wm_state.
winex11: Call window_set_wm_state when unmapping embedded windows.
winex11: Get rid of the now unnecessary iconic field.
winex11: Get rid of the now unnecessary mapped field.
kernel32/tests: Check for the _SW_INVALID bit presence only.
gitlab: Wait for the fvwm process to start.
win32u: Check if parent is the desktop window in get_win_monitor_dpi.
win32u: Map cursor pos to raw DPI before calling drivers SysCommand.
secur32/tests: Update the tests to expect HTTP/2 headers.
urlmon/tests: Expect "Upgrade, Keep-Alive" connection string.
wininet: Parse multi-token Connection strings for Keep-Alive.
winex11: Introduce a new get_window_state_updates helper.
winex11: Generate GravityNotify events instead of ConfigureNotify.
winex11: Avoid sending WM_WINDOWPOSCHANGING when applying window manager config.
winex11: Delay window config request when restoring from fullscreen/maximized.
user32/tests: Workaround a FVWM maximized window state bug.
winex11: Update the Win32 window state outside of event handlers.
winex11: Remove now unnecessary WindowPosChanged re-entry guards.
Vibhav Pant (5):
setupapi: Add stub for SetupDiGetDevicePropertyKeys.
setupapi/tests: Add tests for SetupDiGetDevicePropertyKeys.
setupapi: Implement SetupDiGetDevicePropertyKeys.
threadpoolwinrt: Fix potential NULL dereference in QueryInterface for IAsyncAction.
threadpoolwinrt: Associate work items with the appropriate callback environment.
Vitor Ramos (2):
include: Add cpp header guard to the pathcch.h.
include: Use enum for PATHCCH_ options.
Yuxuan Shui (1):
dinput: Keep the module around while input thread is running.
Zhiyi Zhang (14):
urlmon: Support Uri_HOST_IDN.
urlmon: Support Uri_DISPLAY_NO_FRAGMENT.
urlmon: Support Uri_PUNYCODE_IDN_HOST.
urlmon: Support Uri_DISPLAY_IDN_HOST.
urlmon/tests: Test flags for getting properties.
ntdll/tests: Add NtSetIoCompletionEx() tests.
ntdll: Implement NtSetIoCompletionEx().
wintypes: Implement RoParseTypeName().
wintypes/tests: Add RoParseTypeName() tests.
win32u: Print the correct index when source_enum_display_settings() fails.
ntdll/tests: Remove a workaround for older systems.
ntdll/tests: Add more NtSetInformationFile() tests.
server: Set overlapped fd to signaled after setting completion information.
kernel32: Add GetCurrentPackageInfo() stub.
Ziqing Hui (6):
propsys: Add PropVariantToBSTR stub.
propsys/tests: Test PropVariantToBSTR.
propsys/tests: Test truncating for PropVariantToString.
propsys: Implement PropVariantToBSTR.
propsys: Use debugstr_variant for the trace in VariantToPropVariant.
propsys: Support converting to BSTR for PropVariantToVariant.
```
The vkd3d team is proud to announce that release 1.14 of vkd3d, the Direct3D
to Vulkan translation library, is now available.
This release contains improvements that are listed in the release notes below.
The main highlights are:
- Disassembler support for binary effects.
- Initial support for Metal Shading Language output.
- Miscellaneous bug fixes.
The source is available from the following location:
<https://dl.winehq.org/vkd3d/source/vkd3d-1.14.tar.xz>
The current source can also be pulled directly from the git repository:
<https://gitlab.winehq.org/wine/vkd3d.git>
Vkd3d is available thanks to the work of multiple people. See the file AUTHORS
for the complete list.
# What's new in vkd3d 1.14
### libvkd3d
- Depth bounds can be changed dynamically using the OMSetDepthBounds() method
of the ID3D12GraphicsCommandList1 interface.
- The new VKD3D_CAPS_OVERRIDE environment variable can be used to override the
value of capabilities like the maximum feature level and resource binding
tier reported to applications.
### libvkd3d-shader
- New features for the HLSL source type:
- Interstage I/O variable packing matches d3dcompiler/fxc more closely.
- The following intrinsic functions are supported:
- dst()
- f32tof16()
- mad()
- modf()
- sincos()
- ‘discard’ support for shader model 1-3 target profiles.
- The ‘SV_SampleIndex’ input semantic for fragment shaders.
- The ‘SV_GroupIndex’ input semantic for compute shaders.
- The ‘earlydepthstencil’ function attribute.
- Constant folding of expressions like ‘x && c’ and ‘x || c’, where ‘c’ is a
constant.
- Preprocessor support for namespaces in macro identifiers. I.e., syntax
like ‘#define NAME1::NAME2::NAME3 1’ works as intended now.
- Structure inheritance. Multiple inheritance is not supported.
- Register assignments for unused constant buffers are allowed to overlap
register assignments for used constant buffers.
- Instruction count reflection data for shader model 4+ target profiles.
This data is contained in the ‘STAT’ DXBC section, and can be queried with
the GetDesc() method of the ID3D11ShaderReflection and
ID3D12ShaderReflection interfaces. Note that the ID3D12ShaderReflection
implementation provided by vkd3d-utils does not currently correctly report
this information.
- ‘unorm’ and ‘snorm’ resource format modifiers. For example,
‘Texture2D<unorm float4> t;’
- Parser support for ‘ByteAddressBuffer’ resources, as well as their
Load()/Load2()/Load3()/Load4() methods.
- Parser support for ‘RWByteAddressBuffer’ resources, as well as their
Store()/Store2()/Store3()/Store4() methods.
- Parser support for the ‘compile’ keyword, as well as the CompileShader()
and ConstructGSWithSO() intrinsic functions. Actual compilation of
embedded shaders is not implemented yet, but parser support is sufficient
for allowing compilation of HLSL sources containing this syntax to succeed
when targetting shader target profiles like ‘vs_5_0’ or ‘ps_5_0’.
- Initial support for tessellation shaders. Only the most trivial shaders
are supported in this release. Perhaps most notably, both ‘InputPatch’ and
‘OutputPatch’ are not implemented yet.
- The new ‘fx’ source type can be used in combination with the ‘d3d-asm’
target type to disassemble binary effects.
- More complete support for fx_2_0 binary effect output, including support for
annotations, default values, as well as object initialiser data used for e.g.
string, texture, and shader objects.
- A significant number of instructions have been implemented for the
experimental GLSL target. The GLSL output currently targets version 4.40
without extensions, but the intention is to make this configurable in a
future release of vkd3d.
- Experimental support for Metal Shading Language (MSL) output, enabled by
building vkd3d with the ‘-DVKD3D_SHADER_UNSUPPORTED_MSL’ preprocessor
option. The current release is only able to compile the most basic shaders
when targetting MSL. Being an experimental feature, both the ABI and API may
change in future releases; the feature may even go away completely.
Nevertheless, we hope our users find this feature useful, and welcome
feedback and contributions.
- Shader code generation for various legacy fixed-function features, including
clip planes, point sizes, and point sprites. This is mainly relevant for
executing shader model 1-3 sources in modern target environments like
Vulkan, because those target environments do not implement equivalent
fixed-function features.
- The amount of shader validation done by the internal validator has been
greatly extended. The validator is enabled by the ‘force_validation’ option,
specified through the VKD3D_SHADER_CONFIG environment variable.
- New interfaces:
- The VKD3D_SHADER_COMPILE_OPTION_DOUBLE_AS_FLOAT_ALIAS flag specifies that
the ‘double’ type behaves as an alias for the ‘float’ type in HLSL sources
with shader model 1-3 target profiles.
- The VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32_VEC4 enumeration value
specifies that a shader parameter contains a 4-dimensional vector of
32-bit floating-point data.
- The VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_MASK shader parameter specifies
which clip planes are enabled.
- The VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_[0-7] shader parameters specify
the corresponding clip planes.
- The VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE shader parameter specifies the
point size to output when the source shader does not explicitly output a
point size.
- The VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MIN shader parameter specifies
the minimum point size to clamp point size outputs to.
- The VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MAX shader parameter specifies
the maximum point size to clamp point size outputs to.
- The VKD3D_SHADER_PARAMETER_NAME_POINT_SPRITE shader parameter specifies
whether texture coordinate inputs in fragment shaders should be replaced
with point coordinates.
- The VKD3D_SHADER_SOURCE_FX source type specifies binary Direct3D effects.
- The VKD3D_SHADER_TARGET_MSL target type specifies Metal Shading Language
shaders.
### libvkd3d-utils
- The GetDesc() method of the ID3D12ShaderReflection interface returned by
D3DReflect() returns shader version information.
- New interfaces:
- D3DCompile2VKD3D() is a variant of D3DCompile2() that allows targeting the
behaviour of a specific d3dcompiler version.
### vkd3d-compiler
- The ‘--alias-double-as-float’ option specifies that the ‘double’ type
behaves as an alias for the ‘float’ type in HLSL sources with shader model
1-3 target profiles.
- The ‘fx’ source type specifies binary Direct3D effects.
- The ‘msl’ target type specifies Metal Shading Language shaders.
### Changes since vkd3d 1.13:
```
Andrey Gusev (3):
vkd3d: Recognise VK_QUEUE_VIDEO_ENCODE_BIT_KHR in debug_vk_queue_flags().
vkd3d-utils: Store the actual serialisation return value in get_blob_part().
vkd3d-utils: Store the actual serialisation return value in D3DStripShader().
Anna (navi) Figueiredo Gomes (14):
vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_emit_resource_declaration().
vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_emit_cbv_declaration().
vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_emit_sampler_declaration().
vkd3d-shader/spirv: Pass a vkd3d_shader_descriptor_info1 structure to spirv_compiler_build_descriptor_variable().
vkd3d-shader/spirv: Break long assembly lines.
vkd3d/state: Replace ERR with WARN in vkd3d_validate_descriptor_set_count().
tests/shader_runner: Extract a pipeline creation function from d3d12_runner_draw().
tests/shader_runner: Use ID3D12Device2_CreatePipelineState() when available.
tests/shader_runner: Introduce a 'depth-bounds' test option.
tests/shader_runner: Introduce a "d3d12" tag.
tests: Test depth bounds.
vkd3d: Implement d3d12_command_list_OMSetDepthBounds().
tests/shader_runner: Test the "earlydepthstencil" attribute.
vkd3d-shader/hlsl: Implement the "earlydepthstencil" attribute.
Arkadiusz Hiler (1):
vkd3d-shader/preproc: Support namespaces in macro identifiers.
Atharva Nimbalkar (7):
vkd3d-shader/glsl: Implement VKD3DSIH_ADD.
vkd3d-shader/glsl: Implement support for VKD3DSPR_IMMCONST registers.
vkd3d-shader/glsl: Implement VKD3DSIH_AND.
vkd3d-shader/glsl: Implement support for VSIR_DIMENSION_VEC4 immediate constants.
vkd3d-shader/glsl: Implement VKD3DSIH_MOVC.
vkd3d-shader/glsl: Implement VKD3DSIH_ITOF.
vkd3d-shader/glsl: Implement VKD3DSIH_UTOF.
Conor McCarthy (21):
vkd3d-shader/ir: Free the semantic names of deleted signature elements in shader_signature_merge(). (Valgrind)
tests/d3d12: Test a bounded range at the same offset as an unbounded one in test_unbounded_resource_arrays().
vkd3d: Sort bounded descriptor ranges after unbounded ones of equal offset.
tests/d3d12: Test invalid bytecode in test_root_signature_byte_code().
vkd3d: Clear the output pointer on failure in vkd3d_create_versioned_root_signature_deserializer().
vkd3d-shader/dxil: Load forward-referenced comparands as value/type pairs in sm6_parser_emit_cmpxchg().
vkd3d-shader/dxil: Load forward-referenced sources as value/type pairs in sm6_parser_emit_store().
tests: Move the dxc compilation helpers to utils.h.
tests/shader_runner: Introduce struct vulkan_test_context for the Vulkan runner.
tests/shader-runner: Move struct vulkan_test_context to vulkan_utils.h.
tests/shader-runner: Move the Vulkan helper functions to vulkan_utils.h.
tests/d3d12: Test buffer and texture SRVs in test_unbounded_resource_arrays().
vkd3d: Access the current range via the declared pointer in d3d12_root_signature_init_root_descriptor_tables().
vkd3d: Introduce a separate structure for storing Vulkan descriptor binding arrays.
vkd3d: Create a separate Vulkan descriptor binding array for each descriptor set.
vkd3d: Lay out virtual descriptor heap buffer and image bindings consecutively instead of interleaving them.
vkd3d: Zero the pipeline state UAV counter view array when the state is invalidated. (Valgrind)
tests: Use state RESOLVE_SOURCE for readback from multisampled textures.
vkd3d: Check the IASetVertexBuffers() view count against the device limits.
vkd3d-shader/ir: Add a secondary sort by sysval for signature element register merges.
vkd3d-shader/dxil: Implement DX intrinsic SampleIndex.
Elizabeth Figura (92):
vkd3d-utils: Add a D3DCompile2VKD3D() that allows configuring DLL version.
vkd3d-utils: Do not emit implicit truncation warnings from D3DCompile2VKD3D() before version 42.
build: Do not warn on incomplete documentation.
vkd3d-shader: Mention the structure name when referring to a struct field.
vkd3d-shader: Escape a hash in Doxygen documentation.
vkd3d-shader: Do not use \ref for parameters.
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in write_atan_or_atan2().
vkd3d-shader/hlsl: Use elementwise_intrinsic_convert_args() in intrinsic_dst().
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in intrinsic_faceforward().
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in intrinsic_smoothstep().
vkd3d-shader/hlsl: Preserve halves in intrinsic_step().
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in refract().
vkd3d-shader/hlsl: Use intrinsic_float_convert_arg() in write_acos_or_asin().
vkd3d-shader/hlsl: Use expr_common_base_type() in intrinsic_cross().
vkd3d-shader/hlsl: Preserve doubles in intrinsic_float_convert_arg().
vkd3d-shader/hlsl: Preserve doubles in elementwise_intrinsic_float_convert_args().
vkd3d-shader/hlsl: Preserve doubles in intrinsic_cross().
vkd3d-shader/hlsl: Preserve doubles in intrinsic_determinant().
vkd3d-shader/hlsl: Store a pointer to the block's "value" instruction in the block.
vkd3d-shader/hlsl: Return bool from add_assignment().
vkd3d-shader/hlsl: Do not create a copy in add_assignment().
vkd3d-shader/hlsl: Do not handle HLSL_CLASS_CONSTANT_BUFFER in copy_propagation_transform_load().
vkd3d-shader/hlsl: Clarify a comment.
vkd3d-shader/hlsl: Introduce the "error" type.
vkd3d-shader/hlsl: Return an "error" expression when constructing an arithmetic expression from incompatible types.
vkd3d-shader/hlsl: Handle error expressions in unary expressions.
vkd3d-shader/hlsl: Use add_cast() in append_conditional_break().
vkd3d-shader/hlsl: Fix a corner case in ternary type conversion.
vkd3d-shader/ir: Remove newlines from some vkd3d_shader_error() calls.
vkd3d-shader: Allow controlling clip planes through vkd3d-shader parameters.
tests: Test clip planes.
vkd3d-shader/hlsl: Free static initializers after functions.
vkd3d-shader/hlsl: Return an "error" expression when using an undeclared variable.
vkd3d-shader/hlsl: Handle error expressions in function calls.
vkd3d-shader/hlsl: Handle error expressions in binary expressions.
vkd3d-shader/hlsl: Handle error expressions in assignments.
vkd3d-shader/hlsl: Handle error expressions in method calls.
vkd3d-shader/preproc: Store argument values per expansion, not per macro.
vkd3d-shader/hlsl: Introduce an add_explicit_conversion() helper.
vkd3d-shader/hlsl: Handle error expressions in explicit casts.
vkd3d-shader/hlsl: Handle error expressions in array indexes.
vkd3d-shader/hlsl: Handle error expressions in subscripts.
vkd3d-shader/hlsl: Handle error expressions in increments.
vkd3d-shader/spirv: Always write the point size in vertex shaders.
tests: Add a test for shader point size output.
vkd3d-shader/spirv: Implement shader point size.
vkd3d-shader/ir: Allow controlling FFP point size through a vkd3d-shader parameter.
tests: Test FFP point size.
vkd3d-shader/ir: Allow controlling FFP point size clamping through vkd3d-shader parameters.
tests: Test FFP point size clamping.
vkd3d-shader/hlsl: Factor out an initialize_var() helper.
vkd3d-shader/hlsl: Store the initializer location in struct parse_initializer.
vkd3d-shader/hlsl: Factor the component count check into initialize_var().
vkd3d-shader/hlsl: Handle error expressions in initializers.
vkd3d-shader/hlsl: Handle error expressions in ternary expressions.
vkd3d-shader/ir: Allow controlling point sprite through a parameter.
tests: Test point sprite.
vkd3d-shader: Factor out a vsir_parse() helper.
vkd3d-shader: Validate the parsed shader in vsir_parse().
vkd3d-shader/hlsl: Handle error expressions in conditions.
vkd3d-shader/hlsl: Handle error expressions in return statements.
vkd3d-shader/hlsl: Handle error expressions in array sizes.
vkd3d-shader/hlsl: Return an error expression when an invalid subscript is used.
vkd3d-shader/hlsl: Avoid leaking the block in the subscript rule.
tests/shader_runner: Store shader caps using an array.
tests/shader_runner: Get rid of the "dxbc_ptr" parameter to create_shader_stage().
tests/shader_runner: Store shader sources as an array.
tests/shader_runner: Store the dxc_compiler in the shader_runner.
tests/shader_runner: Centralize the compile_hlsl() helper in shader_runner.c.
tests/shader_runner: Split HLSL and SPIRV compilation in the Vulkan shader runner.
tests/shader_runner: Compile HLSL for all stages before compiling SPIRV.
tests/shader_runner: Build a varying map in the Vulkan runner.
tests: Add a test for sm1 inter-stage interface matching.
vkd3d: Initialize vk_extensions in vk_init_device_caps().
vkd3d-shader/fx: Remove an unnecessary hlsl_is_numeric_type().
vkd3d-shader: Make an assert into an explicit check.
vkd3d-shader/hlsl: Use early return in allocate_register().
tests: Silence a bogus -Wmaybe-uninitialized.
tests: Add a test for uninitialized varyings.
vkd3d-shader: Always ensure a RET at the end of a program.
vkd3d-shader: Reduce masks to only read components in vsir_program_remap_output_signature().
vkd3d-shader: Write uninitialized components of COLOR0 as 1.
vkd3d-shader: Write zeroes for uninitialized outputs in vsir_program_remap_output_signature().
vkd3d-shader/fx: Fix checking for a GS with stream output.
tests: Add some tests for FOG and PSIZE writemask restrictions.
vkd3d-shader/hlsl: Enforce PSIZE component count for sm1 VS output.
vkd3d-shader/hlsl: Enforce FOG component count for sm1 VS output.
vkd3d-shader/ir: Force fog and point size to 1 component when normalizing I/O.
vkd3d-shader/hlsl: Write all writemask components for PSIZE and FOG outputs.
vkd3d-shader/ir: Add an is_pre_rasterization_shader() helper.
vkd3d-shader/hlsl: Silence a spurious -Wmaybe-uninitialized in sm4_generate_vsir_instr_dcl_semantic().
vkd3d-shader: Silence a spurious -Wmaybe-uninitialized in vsir_program_insert_alpha_test().
Evan Tang (4):
vkd3d-shader/ir: Remove an unnecessary typecast in shader_instruction_eliminate_phase_instance_id().
vkd3d-shader/ir: Don't shift register write masks by the component index in shader_dst_param_io_normalise().
tests: Add a test for shader interstage register packing.
tests: Add a test for writing patch constants during tessellation.
Feifan He (30):
vkd3d-shader: Introduce VKD3D_SHADER_TARGET_MSL.
vkd3d-shader/msl: Generate comments for unhandled instructions.
vkd3d-shader/msl: Call vsir_program_transform() before generating code.
vkd3d-shader/msl: Keep track of the current indentation level
vkd3d-shader/msl: Add vkd3d-shader version information to the generated shader.
vkd3d-shader/msl: Implement VKD3DSIH_NOP.
vkd3d-shader/msl: Implement VKD3DSIH_MOV.
vkd3d-shader/msl: Implement VKD3DSIH_RET.
vkd3d-shader/msl: Implement support for VKD3DSPR_TEMP registers.
vkd3d-shader/msl: Generate shader output structure declarations.
vkd3d-shader/msl: Generate shader input structure declarations.
vkd3d-shader/msl: Generate the shader entry point.
vkd3d-shader/msl: Generate the shader entry point epilogue.
vkd3d-shader/msl: Generate the shader entry point prologue.
vkd3d-shader/msl: Handle signature element masks in the prologue and epilogue.
vkd3d-shader/msl: Generate shader descriptor structure declarations.
vkd3d-shader/msl: Implement support for VKD3DSPR_CONSTBUFFER registers.
vkd3d-shader/msl: Implement support for VKD3DSPR_INPUT registers.
vkd3d-shader/msl: Implement support for VKD3DSPR_OUTPUT registers.
tests/shader_runner: Introduce a Metal shader runner.
vkd3d-shader/msl: Add the missing output register index in msl_generate_entrypoint_epilogue().
vkd3d-shader/msl: Use pointers for constant buffer descriptors.
tests/shader_runner_metal: Implement graphics shader compilation.
vkd3d-shader/msl: Output the generated shader code.
tests/shader_runner_metal: Create vertex descriptors.
tests/shader_runner_metal: Create Metal render targets.
tests/shader_runner_metal: Create Metal vertex buffers.
tests/shader_runner_metal: Implement render target readback.
tests/shader_runner_metal: Create Metal constant buffers.
tests/shader_runner_metal: Implement draws.
Francisco Casas (77):
vkd3d-shader/hlsl: Introduce hlsl_ir_vsir_instruction_ref.
vkd3d-shader/hlsl: Store SM1 constant dcls on the vsir_program.
vkd3d-shader/hlsl: Store SM1 sampler dcls on the vsir_program.
vkd3d-shader/hlsl: Save hlsl_ir_constants in the vsir_program for SM1.
vkd3d-shader/hlsl: Save hlsl_ir_loads in the vsir_program for SM1.
vkd3d-shader/hlsl: Save hlsl_ir_stores in the vsir_program for SM1.
vkd3d-shader/hlsl: Save hlsl_ir_swizzles in the vsir_program for SM1.
vkd3d-shader/hlsl: Parse the shader 'compile' syntax.
vkd3d-shader/hlsl: Parse the CompileShader() syntax.
vkd3d-shader/hlsl: Save simple hlsl_ir_exprs in the vsir_program for SM1.
vkd3d-shader/hlsl: Save per-component hlsl_ir_exprs in the vsir_program for SM1.
vkd3d-shader/hlsl: Save DOT hlsl_ir_exprs in the vsir_program for SM1.
vkd3d-shader/hlsl: Save COS_REDUCED and SIN_REDUCED in the vsir_program for SM1.
vkd3d-shader/hlsl: Save DP2ADD hlsl_ir_exprs in the vsir_program for SM1.
vkd3d-shader/hlsl: Save REINTERPRET hlsl_ir_exprs as vsir_program MOVs for SM1.
vkd3d-shader/hlsl: Save CAST hlsl_ir_exprs in the vsir_program for SM1.
vkd3d-shader/hlsl: Save hlsl_ir_resource_load in the vsir_program for SM1.
vkd3d-shader/hlsl: Save hlsl_ir_jump in the vsir_program for SM1.
vkd3d-shader/hlsl: Introduce enum hlsl_compile_type.
tests: Test ConstructGSWithSO() parsing.
vkd3d-shader/hlsl: Process GeometryShader as a valid stateblock lhs.
vkd3d-shader/hlsl: Parse ConstructGSWithSO().
vkd3d-shader/hlsl: Allow effect calls on default value initializers.
vkd3d-shader/hlsl: Save hlsl_ir_if in the vsir_program for SM1.
vkd3d-shader/hlsl: Remove hlsl_ir_vsir_instruction_ref.
vkd3d-shader/d3dbc: Remove ctx and entry_func args in d3dbc_compile().
tests/shader_runner: Skip the GLSL tests when GLSL support is not enabled.
tests/shader_runner: Skip the DXIL tests when DXIL support is not enabled.
tests/shader_runner: Use skip() when the d3d12 device doesn't support shader model 6.
tests/shader_runner: Query for GLSL target support instead of checking VKD3D_SHADER_UNSUPPORTED_GLSL.
tests/shader-runner: Query for SM6 support instead of checking VKD3D_SHADER_UNSUPPORTED_DXIL.
tests: Test sampler_state keyword syntax.
vkd3d-shader/hlsl: Process 'texture' as a valid stateblock lhs.
vkd3d-shader/hlsl: Parse sampler_state.
vkd3d-shader/hlsl: Fix the conditions to discard default values.
vkd3d-shader/tpf: Write sysval semantic consistently.
vkd3d-shader/tpf: Use dcl_input_ps_sgv for sv_isfrontface.
tests: Test interstage signature optimizations.
tests: Test interstage signature with arrays.
vkd3d-shader/d3dbc: Remove the "hlsl_" prefix from external functions.
vkd3d-shader/hlsl: Split hlsl_sm4_write().
vkd3d-shader/tpf: Rename "tpf_writer" to "tpf_compiler".
vkd3d-shader/tpf: Pass a tpf_compiler structure to tpf_compile() callees.
vkd3d-shader/tpf: Use the I/O signatures from the vsir program in tpf_write_signature().
vkd3d-shader/tpf: Replace uses of ctx->profile with tpf->program->shader_version.
vkd3d-shader/tpf: Make sysval_semantic_from_hlsl() independent of HLSL IR.
vkd3d-shader/tpf: Make hlsl_sm4_register_from_semantic() independent of HLSL IR.
tests: Add signature reflection test with structs.
vkd3d-shader/hlsl: Add mode field to register_allocator allocations.
vkd3d-shader/hlsl: Use a register_allocator to allocate semantic registers.
vkd3d-shader/hlsl: Also pass field storage modifiers to output signature elements.
vkd3d-shader/hlsl: Allow accounting for interpolation mode when allocating semantics.
vkd3d-shader/hlsl: Allow to force alignment on some semantic vars.
vkd3d-shader/hlsl: Allow prioritizing smaller writemasks when allocating signature elements.
vkd3d-shader/hlsl: Optimize interstage signatures.
vkd3d-shader/hlsl: Sort signature elements by register id.
vkd3d-shader/hlsl: Store the thread group size in the vsir program.
vkd3d-shader/hlsl: Introduce hlsl_ir_vsir_instruction_ref, again.
vkd3d-shader/hlsl: Store temp declarations in the vsir program.
vkd3d-shader/hlsl: Make allocation functions static again.
vkd3d-shader/tpf: Use instr.extra_bits for IF.
vkd3d-shader/hlsl: Store SM4 swizzles in the vsir program.
vkd3d-shader/hlsl: Introduce vsir_src_from_hlsl_node().
vkd3d-shader/hlsl: Store SM4 ABS instructions in the vsir program.
vkd3d-shader/hlsl: Run sm4_generate_vsir_block() recursively.
vkd3d-shader/tpf: Remove HLSL IR ABS handling.
vkd3d-shader/hlsl: Store simple SM4 expressions in the vsir program.
vkd3d-shader/hlsl: Store RASTERIZER_SAMPLE_COUNT in the vsir program.
vkd3d-shader/tpf: Use SCALAR swizzle dimension for RASTERIZER registers.
vkd3d-shader/hlsl: Store SM4 casts in the vsir program.
vkd3d-shader/hlsl: Store SM4 SIN and COS in the vsir program.
vkd3d-shader/hlsl: Store SM4 RCP in the vsir program.
vkd3d-shader/hlsl: Store SM4 SAT in the vsir program.
vkd3d-shader/hlsl: Store SM4 MUL in the vsir program.
vkd3d-shader/hlsl: Store SM4 DIV in the vsir program.
vkd3d-shader/hlsl: Store SM4 DOT in the vsir program.
vkd3d-shader/hlsl: Store SM4 MOD in the vsir program.
Giovanni Mascellani (203):
vkd3d-shader: Use a hash to build the filename when dumping shaders.
vkd3d-shader: Dump the converted shader too.
vkd3d-shader/ir: Emit a warning instead of an error on validation failures.
vkd3d-shader/ir: Do not decide the control flow type on NOPs.
vkd3d-shader/ir: Run validation after lowering instructions.
vkd3d-shader/ir: Run validation after materializing PHI SSAs to TEMPs.
vkd3d-shader/ir: Run validation after lowering switches to selection ladders.
vkd3d-shader/ir: Run validation after structurization.
vkd3d-shader/ir: Run validation after flattening control flow constructs.
vkd3d-shader/ir: Run validation after materializing undominated SSAs to TEMPs.
vkd3d-shader/ir: Assume that Hull Shaders have a control point phase in vsir_program_normalise_io_registers().
vkd3d-shader/ir: Run validation after remapping the output signature.
vkd3d-shader/ir: Run validation after flattening hull shader phases.
vkd3d-shader/ir: Run validation after normalising Hull Shader control points I/O registers.
vkd3d-shader/ir: Run validation after normalising I/O registers.
vkd3d-shader/ir: Run validation after normalising flat constants.
vkd3d: Directly call the function to update descriptors.
vkd3d: Do not keep track of descriptor heaps when using virtual heaps.
vkd3d-shader/ir: Run validation after removing dead code.
vkd3d-shader/ir: Run validation after normalising combined samplers.
vkd3d-shader/ir: Run validation after flattening control flow constructs.
vkd3d-shader/ir: Run validation after inserting the alpha test.
vkd3d-shader/ir: Rename vsir_program_normalise() to vsir_program_transform().
vkd3d-shader/ir: Print results as signed numbers.
vkd3d-shader/ir: Move the control flow type enumeration to vkd3d_shader_private.h.
vkd3d-shader/ir: Record the control flow type in the program.
vkd3d-shader/ir: Introduce a helper for validating DCL_TEMPS.
vkd3d-shader/ir: Introduce a helper for validating IF.
vkd3d-shader/ir: Introduce a helper for validating IFC.
vkd3d-shader/ir: Introduce a helper for validating ELSE.
vkd3d-shader/ir: Introduce a helper for validating ENDIF.
vkd3d-shader/ir: Introduce a helper for validating LOOP.
vkd3d-shader/ir: Introduce a helper for validating ENDLOOP.
vkd3d-shader/ir: Introduce a helper for validating REP.
vkd3d-shader/ir: Introduce a helper for validating ENDREP.
vkd3d-shader/ir: Introduce a helper for validating SWITCH.
vkd3d-shader/ir: Introduce a helper for validating ENDSWITCH.
vkd3d-shader/ir: Introduce a helper for validating RET.
vkd3d-shader/ir: Introduce a helper for validating LABEL.
vkd3d-shader/ir: Introduce a helper for validating BRANCH.
vkd3d-shader/ir: Introduce a helper for validating SWITCH_MONOLITHIC.
vkd3d-shader/ir: Introduce a helper for validating PHI.
vkd3d-shader/ir: Do not access a missing destination register when validating PHI.
vkd3d-shader/ir: Validate NOP instructions.
vkd3d-shader/ir: Record leaving a block in the relevant validation handlers.
vkd3d-shader/ir: Record entering a block in the LABEL validation handler.
vkd3d-shader/ir: Introduce a helper for validating DCL_HS_MAX_TESSFACTOR.
vkd3d-shader/ir: Introduce a helper for validating DCL_INPUT_PRIMITIVE.
vkd3d-shader/ir: Introduce a helper for validating DCL_VERTICES_OUT.
vkd3d-shader/ir: Introduce a helper for validating DCL_OUTPUT_TOPOLOGY.
vkd3d-shader/ir: Introduce a helper for validating DCL_GL_INSTANCES.
vkd3d-shader/ir: Introduce a helper for validating DCL_OUTPUT_CONTROL_POINT_COUNT.
vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_DOMAIN.
vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_OUTPUT_PRIMITIVE.
vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_PARTITIONING.
vkd3d-shader/ir: Introduce a helper for validating Hull Shader phases.
vkd3d-shader/ir: Allow failure in shader_signature_find_element_for_reg().
vkd3d-shader/spirv: Propagate errors from vkd3d_spirv_stream_append().
vkd3d-shader/spirv: Do not reallocate the SPIR-V program.
vkd3d-shader/spirv: Rewrite vkd3d_spirv_get_type_id_for_data_type() in terms of vkd3d_spirv_get_type_id().
vkd3d-shader/spirv: Cache numeric types without through the general declaration cache.
vkd3d-shader/spirv: Do not specify depth for SPIR-V images.
vkd3d-shader/dxil: Release memory on exceptional paths in sm6_parser_read_signature(). (Valgrind)
vkd3d-shader/dxil: Release memory on exceptional paths when parsing DXIL code. (Valgrind)
vkd3d-shader: Get rid of the SAMPLER data type.
vkd3d-shader: Get rid of the UAV data type.
vkd3d-shader: Get rid of the RESOURCE data type.
vkd3d-shader/ir: Do not allow NULL registers in source parameters.
vkd3d-shader/ir: Disallow SAMPLER registers in destination parameters.
vkd3d-shader/ir: Disallow RESOURCE registers in destination parameters.
vkd3d-shader/dxil: Emit RESOURCE and UAV registers with data type UNUSED.
vkd3d-shader/ir: Validate SAMPLER registers.
vkd3d-shader/ir: Validate RESOURCE registers.
vkd3d-shader/ir: Validate UAV registers.
vkd3d-shader/d3d-asm: Dump all indices when tracing VSIR code.
vkd3d-shader/tpf: Propagate validation errors after parsing.
vkd3d-shader/d3dbc: Trace the program when validation fails after parsing.
vkd3d-shader/dxil: Trace the program when validation fails after parsing.
vkd3d-shader/d3dbc: Do not emit indices for DEPTHOUT registers.
vkd3d-shader/ir: Validate index count for DEPTHOUT registers.
vkd3d-shader/ir: Validate index count for DEPTHOUTGE registers.
vkd3d-shader/ir: Validate index count for DEPTHOUTLE registers.
vkd3d-shader/ir: Validate index count for RASTOUT registers.
vkd3d-shader/ir: Validate index count for MISCTYPE registers.
readme: Move the "Developing vkd3d" section upwards.
readme: Document some preprocessor definitions used by vkd3d.
vkd3d-shader/spirv: Handle all possible destination modifiers.
vkd3d-shader/dxil: Emit SAMPLER, UAV and RESOURCE registers with only 2 indices.
vkd3d-shader/ir: Validate indices for SAMPLER registers.
vkd3d-shader/ir: Validate indices for RESOURCE registers.
vkd3d-shader/ir: Validate indices for UAV registers.
tests/shader-runner: Print the WARP driver version.
vkd3d-shader/dxil: Emit double arithmetic operations when appropriate.
vkd3d-shader/d3d-asm: Rename vkd3d_shader_trace() to vsir_program_trace().
vkd3d-shader/d3d-asm: Rename dump_signature() to dump_dxbc_signature().
vkd3d-shader/d3d-asm: Rename dump_signatures() to dump_dxbc_signatures().
vkd3d-shader/d3d-asm: Dump signatures when tracing a VSIR program.
vkd3d-shader/ir: Set the signature sort indices in shader_signature_merge().
vkd3d-shader: Ignore the patch constant signature when it doesn't make sense.
vkd3d-shader/ir: Allow a patch constant signature only for Hull and Domain Shaders.
vkd3d-shader/ir: Validate register counts in input signatures.
vkd3d-shader/ir: Validate register counts in output signatures.
vkd3d-shader/ir: Validate register counts in patch constant signatures.
vkd3d-shader/ir: Validate masks in shader signatures.
vkd3d-shader/spirv: Write spirv_compiler_emit_variable() in terms of spirv_compiler_emit_array_variable().
tests: Only destroy the device if the context has one in vulkan_test_context_destroy().
vkd3d-shader/ir: Do not emit an instruction number before starting validating instructions.
vkd3d-shader/ir: Validate usage masks in shader signatures.
vkd3d-shader/ir: Validate system value semantics in shader signatures.
vkd3d-shader/ir: Validate component types in shader signatures.
vkd3d-shader/ir: Validate minimum precision in shader signatures.
vkd3d-shader/ir: Validate interpolation mode in shader signatures.
vkd3d-shader/ir: Validate that constant interpolation is used with integer types.
vkd3d-shader/ir: Do not search for signature elements using a scalar write mask.
vkd3d-shader/ir: Disallow INPUT registers in destination parameters.
vkd3d-shader/ir: Disallow OUTPUT registers in source parameters.
vkd3d-shader/ir: Only allow PATCHCONST registers as source parameteres in Hull and Domain Shaders.
vkd3d-shader/ir: Only allow PATCHCONST registers as destination parameteres in Hull Shaders.
vkd3d-shader/ir: Introduce a helper for validating TEMP registers.
vkd3d-shader/ir: Introduce a helper for validating SSA registers.
vkd3d-shader/ir: Introduce a helper for validating LABEL registers.
vkd3d-shader/ir: Introduce a helper for validating registers without indices.
vkd3d-shader/ir: Introduce a helper for validating SAMPLER registers.
vkd3d-shader/ir: Introduce a helper for validating RESOURCE registers.
vkd3d-shader/ir: Introduce a helper for validating UAV registers.
vkd3d-shader/ir: Introduce a helper for validating RASTOUT registers.
vkd3d-shader/ir: Introduce a helper for validating MISCTYPE registers.
vkd3d-shader/ir: Validate the allowed signatures and stages for SV_Position.
vkd3d-shader/ir: Validate the allowed data type and component count for SV_Position.
vkd3d-shader/ir: Validate the allowed signatures and stages for SV_ClipDistance.
vkd3d-shader/ir: Validate the allowed data type and component count for SV_ClipDistance.
vkd3d-shader/ir: Validate the allowed signatures and stages for SV_CullDistance.
vkd3d-shader/ir: Validate the allowed data type and component count for SV_CullDistance.
vkd3d-shader/ir: Validate the input control point count.
vkd3d-shader/ir: Validate the output control point count.
vkd3d-shader/ir: Validate that signatures are sensible for shader type.
tests/shader-runner: Make geometry shaders optional.
vkd3d-shader/ir: Validate SV_TessFactor signature elements for quad domains.
vkd3d-shader/ir: Validate SV_InsideTessFactor signature elements for quad domains.
vkd3d-shader/ir: Validate SV_TessFactor signature elements for tri domains.
vkd3d-shader/ir: Validate SV_InsideTessFactor signature elements for tri domains.
vkd3d-shader/ir: Validate the line detail SV_TessFactor signature element for isolines domains.
vkd3d-shader/ir: Validate the line density SV_TessFactor signature element for isolines domains.
ci: Use the macOS image from the master vkd3d repository.
vkd3d: Introduce a helper function to add bindings to struct vk_binding_array.
vkd3d: Use vk_binding_array_add_binding() in d3d12_root_signature_init_static_samplers().
vkd3d: Use vk_binding_array_add_binding() in d3d12_root_signature_init_root_descriptors().
vkd3d: Create Vulkan bindings in d3d12_root_signature_append_vk_binding().
vkd3d-shader/d3dbc: Make signature masks contiguous.
vkd3d-shader/ir: Check that signature masks are contiguous.
tests: Test discontiguous signature masks with SM<4 shaders.
ci: Remove the tart username and password environment variables.
ci: Use widl from the mingw-w64 brew package on macOS.
ci: Stop building widl for the macOS image.
ci: Build the DirectX shader compiler for macOS.
ci: Test DXIL shaders on macOS.
vkd3d-shader: Keep track of whether programs have normalised I/O.
vkd3d-shader: Keep track of whether programs have normalised hull shader control point I/O.
vkd3d-shader/ir: Validate INPUT registers.
vkd3d-shader/ir: Validate OUTPUT registers.
vkd3d-shader/ir: Validate PATCHCONST registers.
vkd3d-shader/ir: Validate INCONTROLPOINT registers.
vkd3d-shader/ir: Validate OUTCONTROLPOINT registers.
vkd3d: Allow overriding the device capabilities.
tests: Mark a sampling test as buggy on llvmpipe.
tests: Mark creating an 8x MSAA render target as buggy on llvmpipe.
tests: Mark latching the predicated value as todo on llvmpipe.
vkd3d-shader/ir: Represent the normalisation level with an enumeration.
vkd3d/device: Trace which descriptor heap implementation is being used.
vkd3d: Disable push descriptors when that's helpful to stay within 8 descriptor sets.
tests: Compute the correct value for condition conjunctions.
tests: Use appropriate RTV formats in max-min.shader_test.
tests: Use the appropriate RTV format in minimum-precision.shader_test.
tests: Mark interface packing pipeline creation as todo on MoltenVK.
ci: Build DXC for release.
tests: Test mismatching RTV and pixel shader output types.
vkd3d: Introduce an enumerant for the mutable descriptor set.
vkd3d: Move descriptor sets backing the SRV-UAV-CBV heap at the end.
vkd3d: Only put the mutable descriptor set once in the pipeline layout.
vkd3d: Incorporate mutable descriptors in the push descriptor disabling logic.
vkd3d-shader: Do not dump the target shader if compilation failed.
vkd3d-shader: Warn instead of erroring out when failing to dump a shader.
tests: Consider LOD miscalculation a todo rather than a driver bug.
tests: Use the appropriate RTV format in bitwise.shader_test.
tests: Dispatch just four invocations when testing for wave reconvergence.
tests: Mark geometry.shader_test as todo on MoltenVK.
tests: Mark tessellation.shader_test as todo on MoltenVK.
ci: Update the DXC version used on the CI to 1.8.2407.
tests: Mark tessellation-patch-vars.shader_test as todo on MoltenVK.
ci: Error out on Objective-C warnings.
tests: Mark fog.shader_test as todo with MSL.
tests: Use the appropriate RTV format in f32tof16.shader_test.
tests: Mark some tests in wave-reconvergence.shader_test as buggy on MoltenVK.
tests: Work around a Metal bug in switch.shader_test.
tests: Mark a couple of tests in register-reservations-numeric.shader_test as todo with MSL.
tests/shader_runner_vulkan: Avoid using ok() for shader compilation failues in create_graphics_pipeline().
tests: Remove some todo markings on MoltenVK in interface-packing.shader_test.
vkd3d-shader/spirv: Get rid of the "offset_component_count" field of struct vkd3d_spirv_resource_type.
tests: Mark a conditional rendering test as buggy on llvmpipe.
ci: Update Mesa to version 24.2.4.
vkd3d: Use WARN rather than ERR in vkd3d_instance_init().
vkd3d-shader/ir: Move applying flat interpolation to a dedicated pass.
vkd3d-shader/ir: Return an error when the FLAT_INTERPOLATION parameter is invalid.
Henri Verbeet (130):
vkd3d-shader/tpf: Return a vkd3d_shader_sysval_semantic from hlsl_sm4_usage_from_semantic().
vkd3d-shader/d3dbc: Return a vkd3d_decl_usage from hlsl_sm1_usage_from_semantic().
vkd3d-shader/tpf: Use enum vkd3d_shader_component_type in write_sm4_signature().
vkd3d-shader/tpf: Use enum vkd3d_sm4_data_type in sm4_resource_format().
vkd3d-shader/d3dbc: Store a enum vkd3d_sm1_opcode in struct sm1_instruction.
vkd3d-shader/d3dbc: Use VKD3D_SM1_INSTRUCTION_LENGTH_SHIFT instead of D3DSI_INSTLENGTH_SHIFT.
vkd3d-shader/d3dbc: Avoid D3DVS_VERSION and D3DPS_VERSION.
vkd3d-shader/d3dbc: Use VKD3D_SM1_REGISTER_TYPE_SHIFT and related constants in sm1_encode_register_type().
vkd3d-shader/d3dbc: Use enum vkd3d_shader_dst_modifier in struct sm1_dst_register.
vkd3d-shader/d3dbc: Use enum vkd3d_shader_src_modifier in struct sm1_src_register.
vkd3d-shader/d3dbc: Use VKD3D_SM1_DCL_USAGE_SHIFT and VKD3D_SM1_DCL_USAGE_INDEX_SHIFT in d3dbc_write_semantic_dcl().
vkd3d-shader/tpf: Include vkd3d_d3dcommon.h only from tpf.c.
vkd3d-shader/ir: Move the source parameter helpers up.
vkd3d-shader/ir: Move the destination parameter helpers up.
vkd3d-shader/ir: Move the instruction helpers together.
vkd3d-shader/ir: Introduce vsir_src_param_init_resource().
vkd3d-shader/ir: Introduce vsir_src_param_init_sampler().
vkd3d-shader/ir: Merge vsir_program_normalise_combined_samplers() into vsir_program_lower_instructions().
vkd3d-shader/glsl: Implement support for VKD3DSPR_INPUT registers.
vkd3d-shader/glsl: Implement support for VKD3DSPR_OUTPUT registers.
build: Use a tab to indent the "tests/hlsl/constructgswithso.shader_test" line in Makefile.am.
vkd3d-shader/d3dbc: Introduce enum vkd3d_sm1_misc_register.
vkd3d-shader/glsl: Handle SV_TARGET outputs.
vkd3d-shader/glsl: Implement support for VKD3DSPR_CONSTBUFFER registers.
vkd3d-shader/glsl: Implement support for VKD3DSPSM_ABS modifiers.
vkd3d-shader/d3dbc: Introduce enum vkd3d_sm1_rastout_register.
vkd3d-shader/glsl: Implement VKD3DSIH_NEU.
vkd3d-shader/glsl: Implement VKD3DSIH_MUL.
vkd3d-shader/glsl: Implement VKD3DSIH_INE.
vkd3d-shader/glsl: Implement VKD3DSIH_OR.
vkd3d-utils: Make D3D12CreateDevice a variadic macro, if possible.
vkd3d-shader/glsl: Implement VKD3DSIH_DIV.
vkd3d-shader/glsl: Implement support for VKD3DSPSM_NEG modifiers.
vkd3d-shader/glsl: Implement VKD3DSIH_GEO.
vkd3d-shader/glsl: Implement VKD3DSIH_FRC.
vkd3d-shader/d3dbc: Write the actual constant info offset in write_sm1_uniforms().
vkd3d-shader/glsl: Implement VKD3DSIH_FTOI.
vkd3d-shader/glsl: Implement VKD3DSIH_FTOU.
vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_PI.
vkd3d-shader/ir: Properly check the register bounds in shader_signature_find_element_for_reg().
vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_Z.
vkd3d-shader/glsl: Implement support for the VKD3DSPR_DEPTHOUT register.
vkd3d-shader/glsl: Implement VKD3DSIH_DP3.
vkd3d-shader/glsl: Implement VKD3DSIH_DP4.
vkd3d-shader/glsl: Implement VKD3DSIH_DP2.
vkd3d-shader/glsl: Implement VKD3DSIH_SQRT.
vkd3d-shader/glsl: Implement VKD3DSIH_DCL_INPUT_PS.
vkd3d-shader/glsl: Implement VKD3DSIH_IEQ.
vkd3d-shader/glsl: Implement VKD3DSIH_EXP.
vkd3d-shader/glsl: Implement VKD3DSIH_LTO.
vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_NI.
vkd3d-shader/glsl: Implement VKD3DSIH_IF and VKD3DSIH_ENDIF.
vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_NE.
vkd3d-shader/glsl: Handle SV_IS_FRONT_FACE inputs.
vkd3d-shader/glsl: Implement VKD3DSIH_LOG.
vkd3d-shader/glsl: Implement VKD3DSIH_MAX.
vkd3d-shader/glsl: Implement VKD3DSIH_MIN.
vkd3d-shader/glsl: Implement VKD3DSIH_RSQ.
vkd3d-shader/glsl: Implement VKD3DSIH_NOT.
vkd3d-shader/glsl: Implement VKD3DSIH_ELSE.
vkd3d-shader/glsl: Implement support for VKD3DSPDM_SATURATE modifiers.
vkd3d-shader/glsl: Implement VKD3DSIH_MAD.
vkd3d-shader/glsl: Implement VKD3DSIH_ISHL.
vkd3d-shader/glsl: Implement VKD3DSIH_ISHR.
vkd3d-shader/glsl: Implement VKD3DSIH_USHR.
vkd3d-shader/glsl: Implement VKD3DSIH_LD.
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE.
vkd3d-shader/glsl: Implement VKD3DSIH_IGE.
vkd3d-shader/glsl: Implement VKD3DSIH_ILT.
vkd3d-shader/glsl: Implement VKD3DSIH_IMUL.
vkd3d-shader/glsl: Implement VKD3DSIH_EQO.
vkd3d-shader/glsl: Handle SV_VERTEX_ID inputs.
vkd3d-shader/glsl: Add interpolation modifiers to interstage inputs and outputs.
vkd3d-shader/glsl: Implement VKD3DSIH_IADD.
vkd3d-shader/glsl: Implement support for VKD3DSPR_IDXTEMP registers.
vkd3d-shader/glsl: Handle SV_POSITION inputs in fragment shaders.
vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_UINT outputs.
vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_UINT inputs.
vkd3d-shader/glsl: Implement VKD3DSIH_INEG.
vkd3d-shader/glsl: Implement VKD3DSIH_IMAX.
vkd3d-shader/ir: Store the thread group size in struct vsir_program.
vkd3d-shader/glsl: vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_INT inputs.
vkd3d-shader/glsl: Implement loops.
vkd3d-shader/glsl: Implement switches.
vkd3d-shader/glsl: Implement VKD3DSIH_ULT.
vkd3d-shader/glsl: Implement VKD3DSIH_CONTINUE.
vkd3d-shader/ir: Remove VKD3DSIH_DCL_UAV_TYPED instructions.
vkd3d-shader/glsl: Use VKD3D_SHADER_ERROR_GLSL_UNSUPPORTED for unsupported CBV descriptor arrays.
vkd3d-shader/glsl: Use the semantic index for shader_out_* declarations.
vkd3d-shader/glsl: Implement VKD3DSIH_STORE_UAV_TYPED.
vkd3d-shader/glsl: Implement support for compute shaders.
tests/shader_runner: Trace the "clip-planes" cap.
build: Actually run interface-packing.shader_test and tessellation-patch-vars.shader_test.
tests: Add a basic shader model 6 interface packing test as well.
vkd3d-shader/dxil: Shift register write masks by the component index in sm6_parser_emit_dx_store_output().
vkd3d-shader/d3dbc: Avoid D3DXSHADER_CONSTANTTABLE.
vkd3d: Slightly simplify the SRV/UAV logic in vk_write_descriptor_set_from_d3d12_desc().
vkd3d-shader/glsl: Implement VKD3DSIH_LD_UAV_TYPED.
vkd3d-shader/glsl: Implement support for the VKD3DSPR_THREADID register.
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_B.
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_C.
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_C_LZ.
vkd3d-shader/ir: Store the global flags in struct vsir_program.
vkd3d-shader/glsl: Implement VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL.
vkd3d-shader/glsl: Implement VKD3DSIH_UMAX and VKD3DSIH_UMIN.
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_LOD.
vkd3d-shader/glsl: Implement VKD3DSIH_SAMPLE_GRAD.
vkd3d-shader/glsl: Implement VKD3DSIH_GATHER4.
tests/shader_runner: Print the test context in fatal_error().
vkd3d-shader/d3d-asm: Implement support for VKD3DSPR_PARAMETER registers.
vkd3d-shader/spirv: Handle oPts in spirv_compiler_get_register_name().
tests/shader_runner: Handle render target sizes other than 640x480.
tests/shader_runner_d3d12: Introduce a helper to get the default resource state for a resource.
tests: Add a test for actual multisample loads.
tests/shader_runner: Set "properties2.sType" in get_physical_device_info() in the Vulkan runner.
tests/shader_runner: Print "(none)" for an empty caps list in trace_shader_caps().
tests/shader_runner: Check whether copy/dispatch/draw succeeded in parse_test_directive().
vkd3d-shader/ir: Specifically search for SV_POSITION0 in vsir_program_insert_clip_planes().
vkd3d-shader/ir: Search for SV_TARGET0 vsir_program_insert_alpha_test().
vkd3d-shader/glsl: Implement support for VKD3D_SHADER_COMPONENT_INT outputs.
vkd3d-shader/glsl: Implement VKD3DSIH_GATHER4_PO.
vkd3d-shader/glsl: Implement support for static texel offsets in shader_glsl_sample().
vkd3d-shader/glsl: Handle SV_SAMPLE_INDEX inputs.
vkd3d-shader/glsl: Implement VKD3DSIH_LD2DMS.
tests/shader_runner: Slightly simplify dxc handling.
tests/shader_runner_metal: Get rid of some stray semicolons.
vkd3d-shader/msl: Implement VKD3DSIH_DCL_INPUT.
vkd3d-shader/msl: Implement VKD3DSIH_DCL_OUTPUT_SIV.
vkd3d-shader/msl: Implement VKD3DSIH_DCL_OUTPUT.
include: Document the binary effect transformations supported by vkd3d_shader_compile().
Nikolay Sivov (61):
vkd3d-shader/fx: Set structure field offsets in bytes.
vkd3d-shader/fx: Only add numeric variables when writing buffers.
vkd3d-shader/fx: Expand BlendState array fields for fx_4_1 as well.
vkd3d-shader/fx: Fix the unpacked size and stride fields of the fx_4_0 types.
vkd3d-shader/tpf: Fix a typo when adding the SFI0 section.
vkd3d-shader: Handle the SV_SampleIndex semantic.
vkd3d-shader/hlsl: Implement the mad() intrinsic.
vkd3d-shader/fx: Check modifiers when reusing types.
vkd3d-shader/tpf: Create a stub STAT section.
vkd3d-shader/tpf: Handle conversion instructions in STAT.
vkd3d-shader/tpf: Handle arithmetic instructions in STAT.
vkd3d-shader/tpf: Handle 'emit' and 'cut' in STAT.
vkd3d-shader/tpf: Handle 'movc' in STAT.
vkd3d-shader/tpf: Handle texture instructions in STAT.
vkd3d-shader/d3d-asm: Tweak some GS declaration names.
vkd3d-shader/tpf: Handle GS reflection fields in the STAT section.
vkd3d-shader/tpf: Handle bitwise instructions in STAT.
vkd3d-shader/tpf: Handle atomic instructions in STAT.
vkd3d-shader/tpf: Handle tessellation stage fields in STAT.
vkd3d-shader/tpf: Handle barrier instructions in STAT.
vkd3d-shader/tpf: Add a 'lod' counter to the STAT.
vkd3d-shader/tpf: Set 'gather' instructions counter in the STAT.
vkd3d-shader/tpf: Move STAT fields update to a separate helper.
vkd3d-shader/tpf: Set temps count in the STAT section.
vkd3d-shader: Explicitly set indices for the numeric type names array.
tests: Add some more tests for type name handling.
vkd3d-shader/hlsl: Remove the 'double' keyword.
vkd3d-shader/d3dbc: Add an option to treat doubles as floats.
tests: Add some tests for initial values in effects.
vkd3d-shader/fx: Handle the 'half' type in fx_4+.
vkd3d-shader/fx: Add initial support for writing default values for fx_2_0.
vkd3d-shader/fx: Add support for writing annotations for fx_2_0.
vkd3d-shader/hlsl: Move default values indexing fixup to the tpf writer stage.
tests: Add some tests for state value assignments.
vkd3d-shader/hlsl: Do not lower index expressions for effects.
vkd3d-shader/fx: Handle assignments with array RHS indexed with a constant or a single variable.
vkd3d-shader/fx: Implement writing fx_2_0 object initializer data sections.
vkd3d-shader/hlsl: Remove the type equality assertion for binary expression arguments.
tests: Add a test for uniform array indexing.
vkd3d-shader/fx: Introduce a parser/disassembler.
vkd3d-shader/fx: Add support for parsing constant buffer elements.
vkd3d-shader/fx: Add support for tracing string variables.
vkd3d-shader/hlsl: Implement the modf() intrinsic.
vkd3d-shader/fx: Add support for tracing annotations.
vkd3d-compiler: Add missing 'fx' source type to the CLI output.
vkd3d-shader/fx: Implement parsing groups and techniques.
vkd3d-shader/hlsl: Handle snorm/unorm types as resource formats.
vkd3d-shader/hlsl: Implement the f32tof16() intrinsic.
vkd3d-shader/hlsl: Handle SV_GroupIndex.
vkd3d-shader/hlsl: Use a more compact way to store object method configurations.
vkd3d-shader/hlsl: Add parser support for the RWByteAddressBuffer type.
tests: Add some more tests for RWByteAddressBuffer store methods.
vkd3d-shader/hlsl: Implement RWByteAddressBuffer.Store*() methods.
vkd3d-shader/fx: Implement parsing shader objects.
vkd3d-shader/fx: Implement parsing shader resources types.
vkd3d-shader/hlsl: Accept multiple colon-separated attributes.
vkd3d-shader/spriv: Only lookup resource symbols for UAVs in the ld_raw/ld_structured handler.
vkd3d-shader/hlsl: Add parser support for the ByteAddressBuffer type.
vkd3d-shader/hlsl: Implement the ByteAddressBuffer.Load*() methods.
vkd3d-shader/fx: Implement parsing the remaining fx_5_0 object types.
vkd3d-shader/fx: Implement parsing states objects.
Petrichor Park (2):
vkd3d-shader/hlsl: Implement the dst() intrinsic.
vkd3d-shader/hlsl: Implement the sincos() intrinsic.
Shaun Ren (36):
vkd3d-shader/hlsl: Check for duplicate attributes in function declaration.
tests: Test hull shader attributes.
tests: Test hull shader function overloads.
vkd3d-shader/hlsl: Introduce parse_entry_function_attributes() helper.
vkd3d-shader/hlsl: Parse the domain attribute.
vkd3d-shader/hlsl: Parse the outputcontrolpoints attribute.
vkd3d-shader/hlsl: Parse the outputtopology attribute.
vkd3d-shader/hlsl: Parse the partitioning attribute.
vkd3d-shader/hlsl: Parse the patchconstantfunc attribute.
vkd3d-shader/hlsl: Validate hull shader attributes.
vkd3d-shader/hlsl: Introduce process_entry_function() helper.
vkd3d-shader/hlsl: Clone static_initializers for each entry function.
vkd3d-shader/hlsl: Record semantic extern vars separately for each entry function.
vkd3d-shader/hlsl: Track whether a variable is read in any entry function.
vkd3d-shader/hlsl: Allocate temporary registers separately for each entry function.
vkd3d-shader/hlsl: Invoke prepend_uniform_copy() only once for global uniforms.
tests: Test struct single inheritance.
vkd3d-shader/hlsl: Implement struct single inheritance.
vkd3d-shader/tpf: Write hull shader declarations.
vkd3d-shader/tpf: Implement semantics for hull shaders.
tests: Test hull shader uniform input parameters.
vkd3d-shader/hlsl: Process the patch constant function in hlsl_emit_bytecode().
vkd3d-shader/tpf: Introduce tpf_write_shader_function().
vkd3d-shader/tpf: Determine SIV from SV and index in write_sm4_dcl_semantic().
tests: Test signature reflection for hull shaders.
vkd3d-shader/tpf: Write the patch constant function in hull shaders.
vkd3d-utils: Implement version reflection.
vkd3d-utils: Return correct use masks during reflection.
vkd3d-shader/ir: Validate control point counts correctly.
vkd3d-shader/tpf: Write the input signature of domain shaders as PCSG.
vkd3d-shader/tpf: Use vpc input registers for domain shaders.
vkd3d-shader/tpf: Write domain shader declarations.
vkd3d-shader/tpf: Implement semantics for domain shaders.
tests: Test signature reflection for domain shaders.
vkd3d-shader/hlsl: Support discard for SM1.
vkd3d-shader/hlsl: Store SM4 semantic declarations in the vsir program.
Victor Chiletto (3):
vkd3d-shader/hlsl: Fold logic AND and logic OR identities.
tests: Add a test for unused overlapping cbuffer reservations.
vkd3d-shader/hlsl: Allow cbuffer reservations to overlap if only one of them is allocated.
```
The Wine development release 9.21 is now available.
What's new in this release:
- More support for network sessions in DirectPlay.
- Header fixes for C++ compilation.
- I/O completion fixes.
- More formats supported in D3DX9.
- Various bug fixes.
The source is available at <https://dl.winehq.org/wine/source/9.x/wine-9.21.tar.xz>
Binary packages for various distributions will be available
from the respective [download sites][1].
You will find documentation [here][2].
Wine is available thanks to the work of many people.
See the file [AUTHORS][3] for the complete list.
[1]: https://gitlab.winehq.org/wine/wine/-/wikis/Download
[2]: https://gitlab.winehq.org/wine/wine/-/wikis/Documentation
[3]: https://gitlab.winehq.org/wine/wine/-/raw/wine-9.21/AUTHORS
----------------------------------------------------------------
### Bugs fixed in 9.21 (total 16):
- #27933 Implement sort.exe command
- #47776 Multiple games crash on unimplemented function D3DXOptimizeVertices (Timeshift, Call of Duty 2 modding tools, Rise of Nations: Rise of Legends 2010)
- #48235 Multiple applications need 'ntdll.NtWow64QueryInformationProcess64' (IP Camera Viewer 4.x)
- #48796 Saints Row 2 needs GUID_WICPixelFormat48bppRGB
- #52078 MusicBee: exception when attempting to drag tabs ( (QueryInterface for the interface with IID '{83E07D0D-0C5F-4163-BF1A-60B274051E40}' gives Exception E_NOINTERFACE))
- #54295 Touhou Puppet Dance Performance: Shard of Dreams Can't Locate Base Game Data After Installation
- #54623 MediRoutes crashes on unimplemented function websocket.dll.WebSocketCreateClientHandle
- #56219 Paint Shop Pro 9.01, printing function doesn't work
- #57164 Can't start RtlpWaitForCriticalSection
- #57183 9.17-devel: Drag and Drop no longer works on Ubuntu 24.04 Noble
- #57275 Black screen when using full-screen mode from version 9.18
- #57292 unimplemented function apphelp.dll.SdbSetPermLayerKeys
- #57296 WineHQ-devel-9.19: Renders Distorted Radio Buttons on WinXP Solitaire
- #57314 Metal Gear Solid V gametrainer needs wmi Win32_Process executablepath property
- #57355 Window-resize won't refresh controls on mainform
- #57392 AnyRail msi crashes
### Changes since 9.20:
```
Alex Henrie (2):
ntdll: Implement NtWow64QueryInformationProcess64.
include: Annotate PFN_CMSG_ALLOC with __WINE_ALLOC_SIZE.
Alexandre Julliard (22):
winetest: Remove strmake() len argument for consistency with other modules.
winetest: Get default tag and URL from Gitlab CI variables.
capstone: Allow callers to specify their memory allocators.
capstone: Comment out error printfs.
opengl32: Cache downloaded files in make_opengl.
opencl: Cache downloaded files in make_opencl.
winevulkan: Cache downloaded files in make_vulkan.
include: Use __attribute__ in preference to __declspec.
wow64: Fix handle conversion in NtWow64QueryInformationProcess64.
wow64: Move NtWow64QueryInformationProcess64 to process.c.
user32: Add some new entry points and ordinals.
gdi32: Add some new entry points and ordinals.
win32u: Add some new stub entry points.
ntdll/tests: Skip the syscall relocation test if the file on disk is not updated.
kernel32/tests: Search the current directory for newly-created dlls.
netstat: Use wide character string literals.
notepad: Use wide character string literals.
oleview: Use wide character string literals.
services: Use wide character string literals.
taskmgr: Use wide character string literals.
winefile: Use wide character string literals.
wordpad: Use wide character string literals.
Alexey Prokhin (1):
kernelbase: Set the proper error code in GetQueuedCompletionStatus{Ex} when the handle is closed.
Alistair Leslie-Hughes (11):
include: Add rstscr.idl.
include: Add rstxsc.idl.
include: Add rstfnd.idl.
include: Add rstidn.idl.
include: Add DBGUID_DBSQL define.
include: Add DB_S_ROWLIMITEXCEEDED define.
include: Dbs.idl: Added DBVECTOR/DB_VARNUMERIC types.
include: Move ISAXXMLFilter interface to after base ISAXXMLReader.
dplayx: Use a single reference count for IDirectPlay interfaces.
dplayx: Remove numIfaces variable in IDirectPlayLobby.
dplayx: Use default DllCanUnloadNow implementation.
Anton Baskanov (31):
dplayx: Inline logic from CreatePlayer() functions into DP_IF_CreatePlayer().
dplayx: Allow storing group SP data.
dpwsockx: Get player address from SP header and use it in SendEx().
dpwsockx: Add partial SendToGroupEx() implementation.
dplayx: Send CREATEPLAYER instead of ADDFORWARDREQUEST in CreatePlayer().
dplayx: Queue DPSYS_CREATEPLAYERORGROUP on player creation.
dplayx: Remove received message from the queue.
dplayx: Set message sender and receiver IDs in Receive().
dplayx: Make a deep copy of the message.
dplayx: Set message data size in Receive().
dplayx: Set flags correctly in CreatePlayer().
dplayx: Always set the data size in GetPlayerData().
dplayx/tests: Test that player from CREATEPLAYER is added to the session.
dplay: Handle CREATEPLAYER and add player to the session.
dplayx/tests: Use the correct system player ID in sendSuperEnumPlayersReply().
dplayx/tests: Test client side of Send() separately.
dplayx: Queue the message for local players in SendEx().
dplayx: Remove the separate branch for DPID_ALLPLAYERS in SendEx().
dplayx: Send the message in SendEx().
dplayx/tests: Test client side of Receive() separately.
dplayx: Handle game messages.
dplayx: Check the buffer size in Receive().
dplayx: Return DPERR_BUFFERTOOSMALL from Receive() if data is NULL.
dplayx: Handle DPRECEIVE_TOPLAYER and DPRECEIVE_FROMPLAYER in Receive().
dplayx: Enter the critical section in DP_IF_Receive().
dplayx/tests: Test non-guaranteed Send().
dpwsockx: Support non-guaranteed delivery.
dplayx/tests: Test receiving UDP messages.
dpwsockx: Receive UDP messages.
dplayx/tests: Test that PINGREPLY is sent in reply to PING.
dplayx: Handle PING and send PINGREPLY.
Aurimas Fišeras (1):
po: Update Lithuanian translation.
Bartosz Kosiorek (2):
gdiplus: Add GdipGetEffectParameterSize stub and fix GdipDeleteEffect.
gdiplus/tests: Add GdipGetEffectParameterSize test.
Biswapriyo Nath (2):
include: Add new property keys in propkey.h.
include: Add windows.applicationmodel.datatransfer.idl.
Brendan Shanks (2):
ntdll/tests: Add test for direct syscalls on x86_64.
ntdll: Add SIGSYS handler to support syscall emulation on macOS Sonoma and later.
Christian Costa (1):
d3dx9: Add semi-stub for D3DXOptimizeVertices().
Connor McAdams (10):
d3dx9: Introduce d3dx_pixel_format_id enumeration.
d3dx9: Use the d3dx_pixel_format_id enumeration inside of the d3dx_image structure.
d3dx9: Use the d3dx_pixel_format_id enumeration inside of the DDS pixel format lookup structure.
d3dx9: Use the d3dx_pixel_format_id enumeration inside of the WIC pixel format lookup structure.
d3dx9/tests: Add more tests for handling JPG/PNG files.
d3dx9: Report 24bpp RGB as 32bpp XRGB for JPG and PNG files.
d3dx9: Add support for decoding 64bpp RGBA PNG files.
d3dx9: Add support for decoding 48bpp RGB PNG files.
d3dx9: Add support for loading surfaces from 48bpp RGB PNG files.
d3dx9: Add support for loading volumes from 48bpp RGB PNG files.
Elizabeth Figura (7):
win32u: Normalize inverted rectangles in dibdrv_RoundRect().
win32u: Correctly handle transforms which flip in get_arc_points().
win32u: Do not convert back to integer before finding intersections.
win32u: Forward to Rectangle() if the ellipse width or height is zero.
wmilib.sys: Add stub DLL.
ntoskrnl: Stub PoRequestPowerIrp().
ntdll: Do not queue completion for a synchronous file.
Eric Pouech (2):
midiseq: Reduce race window when closing sequencer.
kernelbase: Add undocumented EXTENDED_FLAGS to process attribute list.
Fabian Maurer (13):
comdlg32/tests: Fix compilation for gcc 4.7.
mf/tests: Fix compilation for gcc 4.7.
wbemprox/tests: Add test for Win32_Process querying "ExecutablePath" propery.
wbemprox: Add property "ExecutablePath" to Win32_Process.
userenv/tests: Add another test for GetProfilesDirectoryA.
ntdll/tests: Add more tests for RtlExpandEnvironmentStrings/_U.
kernel32/tests: Add tests for ExpandEnvironmentStringsW.
kernel32/tests: Add more tests for ExpandEnvironmentStringsA.
kernel32/tests: Add ExpandEnvironmentStringsA tests for japanese.
ntdll: Rework RtlExpandEnvironmentStrings/_U to account for corner cases.
kernel32: Rework ExpandEnvironmentStringsW error handling.
kernel32: Rework ExpandEnvironmentStringsA to return ansi size and fix corner cases.
userenv: Fix GetProfilesDirectoryA return value.
Hans Leidekker (2):
fc: Support /c option.
wintypes/tests: Add tests for RoResolveNamespace().
Jacek Caban (2):
winecrt0: Use version 2 of CHPE metadata.
winegcc: Skip --no-default-config in find_libgcc.
Jactry Zeng (11):
msvcrt/tests: Test tolower() with DBCS.
msvcrt: Improve DBCS support for _tolower_l().
msvcrt/tests: Test _tolower_l() with DBCS.
msvcrt: Correct the result of non-ASCII characters for _strnicmp_l().
msvcrt/tests: Test _stricmp() with multiple bytes characters.
include: Add _strnicmp_l() declaration.
msvcrt/tests: Add tests of _strnicmp_l().
msvcrt/tests: Test toupper() with DBCS.
msvcrt: Improve DBCS support for _toupper_l().
msvcrt/tests: Add tests for locale information.
msvcrt: Try to generate CTYPE data according to the given codepage.
Jinoh Kang (2):
server: Allow creating named pipes using \Device\NamedPipe\ as RootDirectory.
server: Implement more FSCTLs on \Device\NamedPipe and \Device\NamedPipe\.
Matteo Bruni (2):
d3dx9/tests: Disable test sometimes crashing on Windows.
winegstreamer: Split large WMA samples.
Maxim Karasev (1):
klist: Migrate to KerbQueryTicketCacheExMessage.
Michael Lelli (1):
ntdll: Use __wine_unix_spawnvp() to invoke unmount command.
Paul Gofman (7):
ntdll: Introduce a separate per-thread object for internal completion waits.
ntdll: Assign completion to thread when wait for completion is satisfied.
ntdll: Handle user APCs explicitly in NtRemoveIoCompletionEx().
server: Signal completion port waits on handle close.
ntdll/tests: Add tests for completion port signaling.
server: Sync cursor position on window position change.
mountmgr.sys: Stub StorageDeviceSeekPenaltyProperty query.
Piotr Caban (1):
kernelbase: Support backslashes when parsing relative URL in UrlCombine.
Rémi Bernon (59):
win32u: Do not adjust old valid rect when moving child window bits.
winex11: Introduce a new struct host_window for host-only windows.
winex11: Create host windows recursively up to root_window.
winex11: Keep track of the host window children of interest.
winex11: Keep track of the host windows relative rects.
winex11: Keep track of the host windows children window rects.
winex11: Use the new host windows to register foreign window events.
winex11: Generate relative ConfigureNotify on parent ConfigureNotify events.
winex11: Get rid of the now unnecessary foreign windows.
windows.gaming.input: Invoke event handlers outside of the critical section.
windows.devices.enumeration: Invoke event handlers outside of the critical section.
windows.media.speech: Invoke event handlers outside of the critical section.
winex11: Avoid processing RRNotify events in xrandr14_get_id.
winemac: Merge DND structures and rename constants / functions.
winemac: Introduce a new QUERY_DRAG_DROP_ENTER query.
winemac: Use the new win32u drag'n'drop interface.
winex11: Set configure_serial when resizing on display mode change.
winex11: Rename read_net_wm_state to get_window_net_wm_state.
winex11: Move ConfigureNotify checks after computing visible rect.
winex11: Move embedded check in update_net_wm_states / sync_window_style.
winex11: Register PropertyChangeMask for unmanaged windows.
win32u: Clear display device before refreshing the registry cache.
win32u: Allocate device manager context gpu dynamically.
win32u: Keep the source registry key on the source struct.
win32u: Allocate device manager context source dynamically.
win32u: Allocate device manager context monitors dynamically.
winex11: Track WM_STATE window property requests and updates.
winex11: Track _XEMBED_INFO window property changes.
winex11: Introduce a new window_set_wm_state helper.
winex11: Introduce a new window_set_net_wm_state helper.
winex11: Track _NET_WM_STATE window property requests and updates.
winex11: Introduce a new window_set_config helper.
winex11: Track window config requests and updates.
win32u: Introduce a NTGDI_RGN_MONITOR_DPI flag for NtGdiGetRandomRgn.
winex11: Compute absolute rect using the window data window rects.
winex11: Use the toplevel window drawable to create DCs.
winex11: Remove now unused child_window_from_point helper.
win32u: Compute the owner window hint on behalf of the drivers.
include: Add __pctype_func declaration.
include: Add some localized ctype.h function declarations.
include: Add some struct timespec definitions.
include: Add some ___mb_cur_max_func declarations.
include: Add some __sys_nerr declaration.
include: Fix _strtod_l/strtold/_strtold_l declarations.
include: Remove non-existing _atold definition.
include: Add math.h _(l|f)dtest function declarations.
include: Add wcscat_s C++ wrapper definitions.
include: Add abs C++ wrapper definitions.
include: Add atan2l inline definition.
include: Add max_align_t definition.
include: Add CaptureStackBackTrace macro definition.
include: Add SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag.
include: Fix IMAGE_IMPORT_BY_NAME declaration.
win32u: Implement get_win_monitor_dpi.
win32u: Use MDT_RAW_DPI monitor DPI type in the drivers.
win32u: Move some monitor info getter code around.
win32u: Inform wineserver about the winstation monitors.
server: Use the monitor infos to compute the virtual screen rect.
winex11: Skip faking ConfigureNotify if state/config change is expected.
Sebastian Krzyszkowiak (1):
mciseq: Don't seek to the end of the root chunk in RMID files.
Semenov Herman (Семенов Герман) (1):
ole32: Fixed copy paste error with OFFSET_PS_MTIMEHIGH in UpdateRawDirEntry.
Vijay Kiran Kamuju (11):
gdiplus: Add GdipCreateEffect implementation.
gdiplus: Partial implementation of GdipGetEffectParameterSize.
apphelp: Add stub SdbSetPermLayerKeys().
apphelp: Add stub SdbGetPermLayerKeys().
apphelp: Add stub SetPermLayerState().
include: Add missing defines and enums for IDragSourceHelper2.
websocket: Add stub for WebCreateClientHandle.
websocket: Add stub for WebSocketAbortHandle.
websocket: Add stub for WebSocketDeleteHandle.
taskschd: Implement IDailyTrigger_put_EndBoundary.
taskschd: Implement IDailyTrigger_get_EndBoundary.
Zhiyi Zhang (30):
include: Add Windows.Foundation.PropertyValue runtime class.
wintypes: Use DEFINE_IINSPECTABLE.
wintypes: Add IPropertyValueStatics stub.
wintypes: Support IPropertyValue primitive objects.
wintypes: Support IPropertyValue primitive array objects.
wintypes: Implement IReference<boolean>.
wintypes: Implement IReference<HSTRING>.
wintypes: Implement IReference<DOUBLE>.
wintypes: Add IPropertyValueStatics tests.
include: Add windows.applicationmodel.datatransfer.dragdrop.idl.
include: Add windows.applicationmodel.datatransfer.dragdrop.core.idl.
include: Add dragdropinterop.idl.
dataexchange: Add initial dll.
dataexchange: Add ICoreDragDropManagerStatics stub.
dataexchange: Add IDragDropManagerInterop stub.
dataexchange: Implement dragdrop_manager_interop_GetForWindow().
dataexchange/tests: Add ICoreDragDropManagerStatics tests.
dataexchange/tests: Add ICoreDragDropManager tests.
dataexchange: Make core_dragdrop_manager_add_TargetRequested() return S_OK.
iertutil: Add IUriRuntimeClassFactory stub.
iertutil: Implement uri_factory_CreateUri().
iertutil: Implement uri_RawUri().
iertutil: Add uri_AbsoluteUri() semi-stub.
iertutil/tests: Add IUriRuntimeClassFactory tests.
iertutil/tests: Add IUriRuntimeClass tests.
user32: Add EnableMouseInPointerForThread() stub.
user32: Add RegisterTouchPadCapable() stub.
include: Add IAgileReference and INoMarshal.
combase: Implement RoGetAgileReference().
combase/tests: Add RoGetAgileReference() tests.
```