Pages

Showing posts with label vulkan. Show all posts
Showing posts with label vulkan. Show all posts

Monday, October 18, 2021

vkd3d-proton version 2.5 has been released

VKD3D-Proton is a fork of VKD3D, which aims to implement the full Direct3D 12 API on top of Vulkan. The project serves as the development effort for Direct3D 12 support in Proton.

 


This is a release with a little bit of everything!

Features

DXR progress

DXR has seen significant work in the background.

  • DXR 1.1 is now experimentally exposed. It can be enabled with VKD3D_CONFIG=dxr11.
    Note that DXR 1.1 cannot be fully implemented in VK_KHR_ray_tracing's current form, in particular
    DispatchRays() indirect is not compatible yet,
    although we have not observed a game which requires this API feature.
  • DXR 1.1 inline raytracing support is fully implemented.
  • DXR 1.0 support is more or less feature complete.
    Some weird edge cases remain, but will likely not be implemented unless required by a game.
    VKD3D_CONFIG=dxr will eventually be dropped when it matures.

Some new DXR games are starting to come alive, especially with DXR 1.1 enabled,
but there are significant bugs as well that we currently cannot easily debug.
Some experimental results on NVIDIA:

  • Control - already worked
  • DEATHLOOP - appears to work correctly
  • Cyberpunk 2077 - DXR can be enabled, but GPU timeouts
  • World of Warcraft - according to a user, it works, but we have not confirmed ourselves
  • Metro Exodus: Enhanced Edition -
    gets ingame and appears to work? Not sure if it looks correct.
    Heavy CPU stutter for some reason ...
  • Metro Exodus (original release) - GPU timeouts when enabling DXR
  • Resident Evil: Village - Appears to work, but the visual difference is subtle.

It's worth experimenting with these and others.
DXR is incredibly complicated, so expect bugs.
From here, DXR support is mostly a case of stamping out issues one by one.

NVIDIA DLSS

NVIDIA contributed integration APIs in vkd3d-proton which enables DLSS support in D3D12 titles in Proton.
See Proton documentation for how to enable NvAPI support.

Shader models

A fair bit of work went into DXIL translation support to catch up with native drivers.

  • Shader model 6.5 is exposed.
    Shader model 6.6 should be straight forward once that becomes relevant.
  • Shader model 6.4 implementation takes advantage of VK_KHR_shader_integer_dot_product when supported.
  • Proper fallback for FP16 math on GPUs which do not expose native FP16 support (Polaris, Pascal).
    Notably fixes AMD FSR shaders in Resident Evil: Village (and others).
  • Shader model 6.1 SV_Barycentric support implemented (NVIDIA only for now).
  • Support shader model 6.2 FP32 denorm control.

Performance

Resizable BAR can improve GPU performance about 10-15% in the best case, depends a lot on the game.
Horizon Zero Dawn and Death Stranding in particular improve massively with this change.

By default, vkd3d-proton will now take advantage of PCI-e BAR memory types through heuristics
as D3D12 does not expose direct support for resizable BAR, and native D3D12 drivers are known to use heuristics as well.
Without resizable BAR enabled in BIOS/vBIOS, we only get 256 MiB which can help performance,
but many games will improve performance even more
when we are allowed to use more than that.
There is an upper limit for how much VRAM is dedicated to this purpose.
We also added VKD3D_CONFIG=no_upload_hvv to disable all uses of PCI-e BAR memory.

Other performance improvements:

  • Avoid redundant descriptor update work in certain scenarios (NVIDIA contribution).
  • Minor tweaks here and there to reduce CPU overhead.

Fixes and workarounds

  • Fix behavior for swap chain presentation latency HANDLE. Fixes spurious deadlocks in some cases.
  • Fix many issues related to depth-stencil handling, which fixed various issues in DEATHLOOP, F1 2021, WRC 10.
  • Fix DIRT 5 rendering issues and crashes. Should be fully playable now.
  • Fix some Diablo II Resurrected rendering issues.
  • Workaround shader bugs in Psychonauts 2.
  • Workaround some Unreal Engine 4 shader bugs which multiple titles trigger.
  • Fix some stability issues when VRAM is exhausted on NVIDIA.
  • Fix CPU crash in boot-up sequence of Far Cry 6 (game is still kinda buggy though, but gets in-game).
  • Fix various bugs with host visible images. Fixes DEATHLOOP.
  • Fix various DXIL conversion bugs.
  • Add Invariant geometry workarounds for specific games which require it.
  • Fix how d3d12.dll exports symbols to be more in line with MSVC.
  • Fix some edge cases in bitfield instructions.
  • Work around extreme CPU memory bloat on the specific NVIDIA driver versions which had this bug.
  • Fix regression in Evil Genius 2: World Domination.
  • Fix crashes in Hitman 3.
  • Fix terrain rendering in Anno 1800.
  • Various correctness and crash fixes.

 Link to source code

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

 

Thursday, July 8, 2021

vkd3d-proton version 2.4 has been released

VKD3D-Proton is a fork of VKD3D, which aims to implement the full Direct3D 12 API on top of Vulkan. The project serves as the development effort for Direct3D 12 support in Proton.

 


This is a release which focuses on performance and bug-fixes.

Performance

  • Improve swapchain latency and frame pacing by up to one frame.
  • Optimize lookup of format info.
  • Avoid potential pipeline compilation stutter in certain scenarios.
  • Rewrite how we handle image layouts for color and depth-stencil targets.
    Allows us to remove a lot of dumb
    barriers giving significant GPU-bound performance improvements.
    ~15%-20% GPU bound uplift in Horizon Zero Dawn,
    ~10% in Death Stranding,
    and 5%-10% improvements in many other titles.

Features

  • Enable support for sparse 3D textures (tiled resources tier 3).

Bug fixes and workarounds

  • Various bug fixes in DXIL.
  • Fix weird bug where sun would pop through walls in RE: Village.
  • Workaround game bug in Cyberpunk 2077 where certain locales would render a black screen.
  • Fix various bugs (in benchmark and in vkd3d-proton) allowing GravityMark to run.
  • Improve robustness against certain app bugs related to NULL descriptors.
  • Fix bug with constant FP64 vector handling in DXBC.
  • Fix bug where Cyberpunk 2077 inventory screen could spuriously hang GPU on RADV.
  • Add workaround for Necromunda: Hired Gun where character models would render random garbage on RADV.
  • Fix bug in Necromunda: Hired Gun causing random screen flicker.
  • Fix windowed mode tracking when leaving fullscreen. Fix Alt-Tab handling in Horizon Zero Dawn.
  • Temporary workaround for SRV ResourceMinLODClamp. Fix black ground rendering in DIRT 5.
    The overbright HDR rendering in DIRT 5 sadly persists however :(
  • Implement fallback maximum swapchain latency correctly.

Development features

Various features which are useful for developers were added to aid debugging.

  • Descriptor QA can instrument shaders in runtime for GPU-assisted validation.
    Performance is good enough (> 40 FPS) that games are actually playable in this mode.
    See README for details.
  • Allow forcing off CONCURRENT queue, and using EXCLUSIVE queue.
    Not valid, but can be useful as a speed hack on Polaris when single_queue is not an option
    and for testing driver behavior differences.

Link to source code

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

 

Tuesday, April 27, 2021

vkd3d-proton version 2.3.1 has been released

VKD3D-Proton is a fork of VKD3D, which aims to implement the full Direct3D 12 API on top of Vulkan. The project serves as the development effort for Direct3D 12 support in Proton.

 


 This is a minor bugfix release to address some issues solved shortly after the last release.

Fixes

  • Improved support for older Wine and Vulkan Loader versions.
  • Fix blocky shadows in Horizon Zero Dawn.
  • Fix the install script failing on Wine installs not built with upstream vkd3d.
  • Fix minor dxil translation issues.

Link to source code

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

 

Saturday, February 20, 2021

vkd3d-proton version 2.2 has been released

VKD3D-Proton is a fork of VKD3D, which aims to implement the full Direct3D 12 API on top of Vulkan. The project serves as the development effort for Direct3D 12 support in Proton.

 


This release is mostly a maintenance release which fixes bugs and regressions.
It also unblocks significant future feature development.

Workaround removals

  • Replace old force_bindless_texel_buffer workaround with
    a more correct and performant implementation.
    Death Stranding and Cyberpunk 2077 (and probably other games as well) do the right thing by default without the hack now.
  • Remove old workaround disable_query_optimization for occlusion queries which was enabled for AC: Valhalla,
    and is now replaced by a correct and efficient implementation.

Cyberpunk 2077 status

From recent testing on our end, it is unknown at this time if VK_VALVE_mutable_descriptor_type is still required for
Cyberpunk 2077. Manual testing hasn't been able to trigger a GPU hang.
The memory allocation rewrite in 2.2 can plausibly work around some of the bugs that VK_VALVE_mutable_descriptor_type fixed by accident.
The bugs in question could also have been fixed since release day, but we cannot prove this since the bug is completely random in nature.

Regression fixes

  • Fix regression in Horizon Zero Dawn for screen space reflections on water surfaces.

Stability fixes

  • Greatly improve stability on Polaris or older cards for certain titles.
    Crashes which used to happen in Horizon Zero Dawn and Death Stranding seem to have disappeared
    after the memory allocation rewrite.
    GPU memory usage should decrease on these cards as well.
  • DIRT 5 can get in-game now due to DXIL fixes, but is not yet playable.

New features

  • Add support for Variable Rate Shading tier 1.

Future development

DXR is not yet supported, but has seen a fair bit of background work.

  • Basic DXR pipelines can be created successfully.
  • Memory allocation rewrite in 2.2 unblocks further DXR development.

Link to source code

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

 

Monday, April 1, 2019

How Proton helped improve Wine 4.2

On Tuesday (March 26, 2019), Valve released Proton 4.2, a new update to their Steam Play compatibility layer based on Wine 4.2. The previous major version of Proton was based on Wine 3.16.



As with CodeWeavers's own projects, the strong preference for work going into Proton is to also get the changes into upstream Wine. There are many benefits to this. First, all Wine users will benefit from these fixes, whether they are end users of Wine itself, CrossOver users, or users of any other Wine fork. There are also benefits for the maintainers of Proton. For example, upstreaming patches helps prevent regressions, thanks to Wine's extensive test suite; it lowers the maintenance burden, as there are fewer changes to move between Wine versions; it ensures code quality, since patches to Wine are reviewed by the Wine community; and it widens the pool of users to test, since Wine is used in many, many places other than Proton.

Proton 3.16-8 has 380 commits on top of Wine 3.16. After rebasing onto Wine 4.2, there are 214 commits. That means that 166 patches from the 3.16 branch have either been upstreamed, or are otherwise no longer needed going forward. In addition, a lot of work we have done for Wine 4.2 never got pulled back into Proton 3.16.

Let's take a look at how upstream Wine has improved thanks to Valve's sponsored work on Wine. Below is a list of changes to upstream Wine that were made in order to improve games running in Proton.

Full Article
 

Wednesday, May 23, 2018

Vkd3d 1.0 Released the Direct3D 12 to Vulkan translation library

The Wine team is proud to announce that release 1.0 of vkd3d, the Direct3D 12 to Vulkan translation library, is now available.

This is the first release of vkd3d. A lot of Direct3D 12 features are still missing and bugs are expected. The current version was tested mainly with demo applications. A number of features that are being worked on have been deferred to the next development cycle. This includes in particular geometry and tessellation shaders support, various shader translation improvements, as well as various improvements for core Direct3D 12 methods.



The source is available here.

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

Sunday, April 15, 2018

The WineHQ Wine development release 3.6 is now available for Linux and Mac

The WineHQ Wine development release 3.6 is now available for Linux and Mac

What's new in this release:
  • Support for PNG format icons.
  • Support for 1D textures.
  • More infrastructure for high DPI support.
  • OLE data cache improvements.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.


Bugs fixed in 3.6 (total 53):

  19241  winemenubuilder crashes during extraction of high-res Windows Vista+ 256x256 PNG compressed icon resources
  24011  Trackmania Nations Forever graphics test does not work
  27151  Mafia Vizheneo (Мафия) bug
  28520  Surface flips ignore vsync flags in ddraw (Claw, Diablo II, Imperium Galactica II, Incoming, Panzer General II, Unreal)
  29999  Bloodrayne 2: text in the menus misplaced
  30103  Static controls with bitmap do not display correct background.
  33312  QQ International 1.6 can't load Bulletin
  38147  Batman: Arkham Asylum (non-steam) Demo launcher (.NET 2.0 app) missing text
  38496  Greek Holy Bible 13.0 crashes with System.TimeZoneNotFoundException when using Wine-Mono
  38959  Microsoft .NET Framework 4.6 web installer fails silently (unable to load series of compressed PNG icon images from ICO files)
  39011  Sierra Chart hangs when drawing polygon fill line type: gdi32.Polygon()
  39452  mpr.WNetGetUniversalName() return value (causes Intel MPI to fail)
  40156  AutoWikiBrowser database scanner fails with "no access to memory location"
  40305  AutoWikiBrowser 5.8 (.NET app) needs riched20 ITextRange::ScrollIntoView
  40976  Multiple games need d3d11_device_CreateTexture1D implementation
  41279  Sonos Desktop Controller 6.x (.NET 4.x app) crashes with System.NotImplementedException (needs hnetcfg INetFwPolicy2::get_Rules)
  41377  Windows 10 DISM fails to find its resources (kernel32 SetThreadUILanguage must return non-zero/best fit language identifier if zero is passed)
  41398  Starcraft 2 Editor: Crashes when Battle.net login dialog is presented
  42267  Rogue-Killer installer crashes on unimplemented function ntdll.dll._aulldvrm
  42446  Native Instruments 'Native Access' 1.1.x fails to start, reports 'You cannot start Native Access from the mounted disk'
  43051  Rise of the Tomb Raider needs unimplemented function msvcr110.dll.__crtCapturePreviousContext
  43096  rtpMidi cannot install.
  43468  The game StarCraft2 hang when I click on the "exit game" button. I have to kill the process.
  43831  Cuphead (Steam) crashes on startup (needs setupapi.CM_Get_Parent stub to return CR_NO_SUCH_DEVNODE)
  43863  Rollcage Redux needs correct include handling in D3DXCreateEffectFromFileExW()
  43872  The Witcher 3: some monsters are completely invisible
  43930  iCopy 1.6.x (.NET 2.0 app) crashes on startup (IWiaDevMgr::SelectDeviceDlg DeviceID pointer parameter can be NULL, needs be declared 'unique' for RPC marshalling)
  43994  page fault when running droid4x-0-9-0.exe
  44001  Empire of the Ants (french version "les fourmis") - game crashed
  44135  Olive Tree Bible Software BibleStudySetup_6.0.23.exe fails to install
  44404  Several .Net apps (e.g. Remembear) throw errors/crash,caused by msctf stubs TextStoreACPSink_{OnTextChange,OnSelectionChange,OnLayoutChange}
  44500  BattlEye 'BEDaisy' kernel service crashes on unimplemented fltmgr.sys functions (FltRegisterFilter, FltStartFiltering, FltUnregisterFilter)
  44530  64-bit Sentinel HASP hardlock.sys kernel driver tries to access to DR7 (not handled in ntoskrnl emulate_instruction)
  44580  Outlook 2007 cannot read MSG files anymore
  44645  Black border around tray icon
  44680  Support for DTM_GETIDEALSIZE not implemented
  44692  64-bit .NET apps crash on startup with Wine-Mono (Medieval Engineers, Dashware 1.9)
  44818  ntdll.NtClose (kernel32.CloseHandle) should throw invalid handle exception (EXCEPTION_INVALID_HANDLE) for invalid handles when run under debugger
  44837  BattlEye 'BEDaisy' kernel service fails in driver entry point due to missing 'ntoskrnl.exe.Ps{Acquire,Release}ProcessExitSynchronization'
  44857  Visio 2003 - property dialogs buttons appear broken
  44864  Incoming crashes after the intro video
  44874  Phonetools 9.x crashes on unimplemented function KERNEL32.dll.RequestDeviceWakeup
  44881  MidRadio Player doesn't send SysEx messages to the MIDI device.
  44904  winebus blocks auto start up of scheduler service
  44906  BattlEye 'BEDaisy' kernel service fails in driver entry point due to missing 'ntoskrnl.exe.ExfUnblockPushLock'
  44907  BattlEye 'BEDaisy' kernel service crashes on unimplemented function 'fltmgr.sys.FltGetRoutineAddress'
  44908  BattlEye 'BEDaisy' kernel service wants 'ntoskrnl.exe.ObGetObjectType'
  44910  BattlEye 'BEDaisy' kernel service fails in driver entry point due to 'ntoskrnl.exe.ObReferenceObjectByHandle' stub (needs STATUS_SUCCESS)
  44911  BattlEye 'BEDaisy' kernel service crashes on unimplemented function ntoskrnl.exe.PsGetProcessId
  44923  Failing kernel driver services can stall WINEPREFIX bootstrapping/startup for a considerable time when configured as autostart
  44924  StarForce v3 kernel drivers need ntoskrnl.IoCreateSynchronizationEvent to return a non-NULL handle
  44932  limited list of available printer's paper/page size
  44944  Adobe Premiere Elements 14 fails to install: ERROR: Third party payload installer pxengine5_08_13a.exe failed with exit code: -1

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

Saturday, March 17, 2018

The WineHQ Wine development release 3.4 is now available for Linux and Mac

The WineHQ Wine development release 3.4 is now available for Linux and Mac

What's new in this release:
  • More Vulkan support, including integration with the X11 driver.
  • Better handling of privileged instructions on x86-64.
  • Hex edit dialog improvements in RegEdit.
  • Assortment of patches merged from wine-staging.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.


Bugs fixed in 3.4 (total 45):

  10744  Robot Arena main menu is extremely slow
  24436  the ping command with a wine cmd does nothing
  25138  Black and White 2 demo crashes on startup (ID3DXEffect interface changes between d3dx9_xx versions)
  29774  Texture filtering doesn't work in nGlide
  32104  KwMusic: crashes during installing
  32699  Add StartupWMClass to .desktop files.
  35910  TuneUp Utilities 2014 installer crashes (API signature mismatch for NtAllocateUuids)
  37809  C runtime dlls can't link with uclibc (bessel functions missing)
  38352  Multiple games need d3dx9_36.dll.D3DXComputeNormalMap (Foresight, Gamestudio Venice, GOG King Arthur Collection)
  38626  Word 2010 image text mode wrapping menu hides after a few seconds
  38919  HyperStudio 5 (.NET 4.0 app) hangs at splash screen ('PngDecoder_Frame_GetMetadataQueryReader' is a stub)
  39209  Smart Diary Suite 4 crashes when updating options ('CLSID_AudioCompressorCategory', '{33D9A761-90C8-11d0-BD43-00A0C911CE86}' must be treated as special category)
  40539  Fail to start HPDiagnosticCoreUI.exe
  40943  System Shock demo (DX 11): loads to a white screen then switches to a black screen
  41096  ResEdit Resources treeview has rendered wrongly positioned first branch
  41911  Multiple Microsoft applications need kernel32.FindNLSStringEx (Studio One 3, Microsoft Office 2016, PowerShell 6)
  42768  Ys: The Ark of Napishtim (Ys 6) silently crashes playing in-game videos
  43357  Stars in Shadow crashes on startup
  43656  64-bit World of Warcraft client reports 'Game Initialization Failed!' or crashes on startup with stack overflow due to improper mapping of exception code
  43828  The Witcher 3: some monsters have distorted surfaces sticking out
  44053  MobilePASS application quits with an error, needs unimplemented function bcrypt.dll.BCryptImportKey
  44071  SPFLite Editor crashes on nullpointer
  44482  x64dbg crashes during exit on unimplemented function msvcp120.dll.??0_Runtime_object@details@Concurrency@@QEAA@XZ
  44499  BattlEye 'BEDaisy' kernel service crashes on unimplemented function ntoskrnl.exe.PsSetCreateProcessNotifyRoutineEx
  44515  assert from wxpython
  44550  ReactOS ftp.exe: enters endless loop on CTRL-Z
  44565  Forgotten Realms: Demon Stone has rendering issue
  44570  explorer.exe crashes when opening relative paths
  44616  Multiple Blizzard games need 'ntdll.NtCreateThreadEx' implementation (Diablo III v2. 6. 1. 49286+, World of Warcraft, Overwatch)
  44617  Multiple Blizzard games need Win7+ 'user32.GetWindowDisplayAffinity' and 'user32.SetWindowDisplayAffinity' stubs (Diablo III v2. 6. 1. 49286+)
  44619  Multiple 64-bit applications need various Win7+ user-mode scheduling (UMS) API stubs (x64dbg, ACDSee Pro 9.0)
  44626  AvP Classic 2000 (Steam) launcher crashes when attempting to start the game
  44641  Sentinel HASP 'hardlock.sys' kernel driver crashes on unimplemented function ntoskrnl.exe.RtlCreateRegistryKey
  44643  akai midimix editor application crashes on start
  44647  Smart Diary Suite 4 just segfaults
  44654  EDIdEv Framework EDI Runtime installer fails due to 'sfc.SfcGetNextProtectedFile' not setting last-error code
  44657  Wine-3.3 no longer compiles when configured without kerberos (--without-krb5)
  44659  TeamViewer crashes on start
  44668  Intel Asteroids DirectX 12 Sample requires NInput.dll
  44676  Two Worlds crashes (hangs) when saving the game (anti-aliasing enabled)
  44701  xinput console spam with steam
  44707  Sigcheck v2.60 crashes on unimplemented function CRYPT32.dll.CryptSIPRetrieveSubjectGuidForCatalogFile
  44717  Bermuda (Steam, Indie game) crashes due to 'msscript.ocx' 'ScriptControl_put_AllowUI' being a stub
  44736  incorrect module loading order
  44749  Sentinel HASP 'hardlock.sys' kernel driver expects ntdll.RtlCheckRegistryKey to return STATUS_SUCCESS on empty path

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

Saturday, March 19, 2016

Vulkan Support Is Being Worked On For Wine

Support for running Vulkan Windows programs and games under Wine is currently being developed.

There's been this bug report for the past month suggesting that Wine utilize Vulkan for its Direct3D/HLSL translations. However, that idea really is unlikely to work out as explained by Wine developer Gabríel Arthúr Pétursson. "Translating DirectX 9/10/11 or OpenGL to Vulkan commands is unlikely to bring any performance improvements over existing solutions. OpenGL and DirectX 9/10/11 drivers are already employing highly tuned heuristics and tricks to bring out the best possible performance given the limitations of these APIs."



However, Gabríel did mention in his bug comment this week that he is working on the wrapper support to allow Vulkan programs to run on Wine. "I'm currently working on implementing Vulkan support, to allow running Vulkan programs under Wine. Hopefully I should have patches available for you all to play with soon."

Full Article

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.