Skip to content
Pre-release

@Joshua-Ashton Joshua-Ashton released this Dec 15, 2019

Of course @tannisroot finds a hidden bug via. The Sims 2 that's existed since forever and is mildly significant...

Please don't do it again! 🐸🐸🐸🐸🐸🐸🐸🐸🐸🐸


Bug Fixes

  • Fixed the default value for COLOR0 in vertex shaders to be vec4(1)
  • Fixed a bug where the slot bits for default shader outputs were being incorrectly applied and therefore incorrectly patched by the backend causing them to be replaced with vec4(0)

Notes

Please do not use wine's d3d9x or d3dcompiler with d9vk. They make invalid API calls and generate bad shaders. I cannot stress this enough.

If you are compiling with MinGW, please use the dwarf2 exception patch to improve performance.

Acknowledgements

  • ドイツ人 (doitsujin): for creating the base of the project, DXVK
  • Rhedox and CME: for helping with debugging
  • VKx and Frog Family Discords: for helping with testing
  • You: for your love and support and helping me get to where I am today!

Thank you and Enjoy! <3

- Josh 🐸 ❤️ ~

Assets 3
Pre-release

@Joshua-Ashton Joshua-Ashton released this Dec 14, 2019

Ah, refreshing. Much better than the ripoff by that 🐕 called 'Bepis'.


Features

  • Implemented the ability to use more than 4GB VRAM on 32-bit applications.
    • Helps greatly in modded Skyrim/Oblivion, etc.
  • Enabled async presentation across all vendors
  • Removed an unncecessary CS sync point in query data retrieval
  • Minor query flushing improvements
  • Improve internal time measurement (use new platform-specific clock)
    • Works around MinGW's high_resolution_clock being absolutely terrible.
  • Deferred MANAGED + SYSTEMMEM buffers upload until PrepareDraw time
    • Fixes performance in Risen and Legend of the Heroes: Trails of the Sky.
  • Implemented D3DTA_CONSTANT
    • Fixes bloom rendering in SpinTyres/Mudrunner
  • Improved D3D9Ex compatibility/specifics
    • Handled ResetEx vs. Reset nuance.
  • Misc. code cleanup/refactoring
  • Made WRITEONLY buffers mapped directly
    • May improve performance, but also works around a game bug in CS:GO where it was still writing to the buffer after it was unlocked.
  • Implemented SetDialogBoxMode
  • Implemented vertex blending
  • Implemented indexed vertex blending (including for SWVP)
  • Remade the sampler count HUD to use the new more extensible HUD system
  • Minor performance improvements wrt. binding shaders, binding input layouts and constant uploading
  • Added option d3d9.dialogBoxMode, which can be enabled to disable D9VK taking exclusive fullscreen

Bug Fixes

  • Correctly handled a w == 0 quirk for POSITION_T
    • Fixed Sun Flares in GTA: SA.
  • Fixed NaN/INF light attentations rendering incorrectly (@CME42)
    • Fixes Virtual Vodka demo by Fairlight.
  • Fixed ending TIMESTAMPDISJOINT queries
  • Removed exposing VCACHE for Nvidia (matches native) and updated the values to what modern cards expose.
  • Fixed memory tracking behaviour for D3D9Ex
  • Fixed Vampire: The Masquerade Bloodlines launching on machines with high amounts of VRAM
    • Worked around a game bug, it was creating textures until it couldn't anymore to measure VRAM amount.
  • Fixed mirrors in Max Payne 2.
    • Implicitly saturated some fixed function operations
  • Fixed user videos on TVs in The Sims 2.
    • Worked around a game bug where they would display black if X4R4G4B4 was exposed as a potential RT format.
  • Fixed Silent Hunter 3 rendering.
    • Fixed function texture transform paddings now behave as 1 in range of the actual input to what the rasterizer texcoord, and 0 outside of that.
  • Fixed aspect ratio in Senran Kagura Shinovi Versus
    • Worked around a game bug where if any ultra-wide modes were exposed (even though the game is 16:9 only) it would chose them by disabling non 16:9 modes for that game.
  • Fix width/height for "partial presentations" that we do.
  • Fixed Dungeons and Dragons: Dragonshard rendering as black
    • It was writing to FOG but it didn't have FOG enabled which we weren't treating properly.
  • Fixed shadows in Crysis rendering incorrectly
    • The Microsoft documentation for the TEXKILL op is incorrect, all 4 components are used when the shader is SM2 or above.
  • Fixed a potential race that could happen in ProcessVertices
  • Fixed Metal Slug X crash to startup
    • A bug in this old version of ANGLE lists D3DFMT_D32 as a possible depth format but then proceeds to not handle it in the OpenGL conversion, causing an UNREACHABLE to occur and thus a crash.
    • Disabled D3DFMT_D32 for this game.
  • Fixed autosculpt in Need for Speed: Carbon
    • Mark MANAGED as needing an upload in Lock rather than Unlock, the game relies on this quirk as it doesnt unlock it until after the frame but still expects you to see the preview by locking it.
  • Carried over the The Sims 2 app profiles over to the spinoff titles (@nelsonjchen)
  • Fixed black trees in Risen 1
    • Position needed to be marked as invariant.

Notes

Please do not use wine's d3d9x or d3dcompiler with d9vk. They make invalid API calls and generate bad shaders. I cannot stress this enough.

If you are compiling with MinGW, please use the dwarf2 exception patch to improve performance.

Acknowledgements

  • ドイツ人 (doitsujin): for creating the base of the project, DXVK
  • Rhedox and CME: for helping with debugging
  • VKx and Frog Family Discords: for helping with testing
  • You: for your love and support and helping me get to where I am today!

Thank you and Enjoy! <3

- Josh 🐸 ❤️ ~

Assets 3
Pre-release

@Joshua-Ashton Joshua-Ashton released this Oct 28, 2019

Smol frogs be like: ᵣᵢᵦᵦᵢₜ ᵣᵢᵦᵦᵢₜ 🐸🍼


Features

  • Rebased upon latest DXVK 1.4.4! 🐸🎉
  • Improved performance when locking D3DPOOL_DEFAULT textures via. dirty tracking to avoid unnecessary waiting and copies.
  • Improved performance by avoiding throwing out D3DUSAGE_DYNAMIC buffers on unlock.
  • Allow DISCARD on non-D3DUSAGE_DYNAMIC resources, which may improve perf in some cases (mirrors native behaviour.)
  • Other misc. locking changes.
  • Implemented D3DRS_POINTSIZE, D3DRS_POINTSIZE_MIN, D3DRS_POINTSIZE_MAX, D3DRS_POINTSCALE_A, D3DRS_POINTSCALE_B, D3DRS_POINTSCALE_C, D3DRS_POINTSCALEENABLE and D3DRS_POINTSPRITEENABLE.
  • Implemented D3DRS_SHADEMODE.
    • Fixes some GameMaker titles.
  • Implemented shader predication (experimental).
  • Compressed down and improved normalization of fixed function shader keys.
  • Implemented a new, more efficient method of hazard tracking enabled for all titles.
    • Removes the now-redundant d3d9.hasHazards option.
  • Improved perf. by respecting access type across all of WaitForResource.
  • Improved perf. by checking for resource usage before before syncing with the thread in WaitForResource. (mirrors D3D11 change)
  • Faked AMD for CS:GO to bypass NVAPI
    • Note: You still cannot play CS:GO with D9VK or Proton w/ VAC due to signature checks! (You will be dumped into -insecure on launch.)
  • Improve perf by removing duplicate blend state sent to the CS.
  • Generate adapter LUIDs when Vulkan does not provide them.
  • Spoof device/vendor for Halo 2
    • Fixes it falling into an invalid render path on some systems where it'd render degenerate tris for fullscreen passes.
    • Fixes it showing annoying unsupported driver/device messages on startup.

Bug Fixes

  • Implemented d3d9.invariantPosition option.
    • Enabled this for Halo 2, as otherwise imprecision messes up depth test on NV.
  • Disabled D3DLOCK_DISCARD and D3DLOCK_NOOVERWRITE for anything other than D3DPOOL_DEFAULT pool
    • Fixes flickering in Halo CE.
  • Retry setting display mode without frequency if it fails.
    • Fixes Battlefield 2 CTD.
  • Respected projection texture stage flag in PS 1.x
    • Fixes Psychonauts' video projections and shadows in some older titles.
  • Apply given swizzle to texture sample ops.
    • Affects a lot of games, pretty silly oversight on my behalf.
  • Disabled alpha test if alpha to coverage is active.
    • Fixes the spoopy ghosty people in Alan Wake 2.
  • Zero-initialized output registers that get used
    • The Sims 2 sometimes only writes to .x of them, but reads .yzw and expects 0.
  • Fixed a bug where StretchRect would fail if the dst sample count was != 1.
    • Fixes Anno 1404 and Halo 2's player customizer notably.
  • Fixed handling of Z extent with POSITION_T, notably wrt. depth testing being enabled.
    • Fixes Manhunt.
  • Use VK_BLEND_FACTOR_ONE when with an X8 render target and wanting to get DESTALPHA/INVDESTALPHA.
  • Try-catch all of Present, not just the presentation.
    • Fixes a bug where if recreation failed the application would crash.
  • Fixed the return value for failed presentations.
  • Set the driver version to INT64_MAX rather than UINT64_MAX.
    • Some games, such as Halo 2, interpret this as signed data.
  • Fixed a bug where multiple mips were exposed in RT views causing validation errors.
  • Fixed the wrong view being used in the generateMipMaps call.
  • Default invalid/OOR blend factors to ZERO rather than ONE
    • Fixes lighting in Payday 2.

Notes

Please do not use wine's d3d9x or d3dcompiler with d9vk. They make invalid API calls and generate bad shaders. I cannot stress this enough.

If you are compiling with MinGW, please use the dwarf2 exception patch to improve performance.

Acknowledgements

  • ドイツ人 (doitsujin): for creating the base of the project, DXVK
  • Rhedox and CME: for helping with debugging
  • VKx and Frog Family Discords: for helping with testing
  • You: for your love and support and helping me get to where I am today!

Thank you and Enjoy! <3

- Josh 🐸 ❤️ ~

Assets 3
Pre-release

@Joshua-Ashton Joshua-Ashton released this Sep 29, 2019

Ribbit 🐸

A smaller bug fixy release (frogs eat bugs) with some important performance improvements.


Features

  • Implemented Set/GetSoftwareVertexProcessing
  • Worked around a game bug in The Sims 2 where it would try to render shadows to a A8 texture and completely mess everything up

Bug Fixes

  • Fixed a regression where full constant uploads were happening all the time
  • Fixed some games complaining about drivers being too old to run
  • Return D3DERR_INVALIDCALL when trying to create textures with unsupported formats

Notes

Please do not use wine's d3d9x or d3dcompiler with d9vk. They make invalid API calls and generate bad shaders. I cannot stress this enough.

If you are compiling with MinGW, please use the dwarf2 exception patch to improve performance.

Acknowledgements

  • ドイツ人 (doitsujin): for creating the base of the project, DXVK
  • Rhedox and CME: for helping with debugging
  • VKx and Frog Family Discords: for helping with testing

Thank you and Enjoy! <3

- Josh 🐸 ❤️ ~

Assets 3
Pre-release

@Joshua-Ashton Joshua-Ashton released this Sep 24, 2019

I know, the pun really sucks 🍭🐸


Features

D3D9

  • Implemented D3DBLEND_BOTHSRCALPHA
  • Implemented D3DBLEND_BOTHINVSRCALPHA
  • Implemented locking of MSAA images with intermediate resolve (invalid behaviour in d3d9 docs, but everyone supports this)
  • Implemented locking of depth stencil images (and MSAA depth stencil images)
  • Implemented video formats YUV2 and YUVY via. compute shader
  • Implemented extended constant set when software vertex processing is enabled
  • Minor performance improvements

DXSO

  • Implemented TexM3x3Spec
  • Implemented TexM3x3VSpec
  • Implemented constant bounds checking (fixes vert. explosions in The Witcher 2) by @doitsujin

Fixed Function

  • Implemented D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
  • Implemented D3DTSS_TCI_SPHEREMAP
  • Use unresolved arguments for fastpath decision, may improve performance

Bug Fixes

D3D9

  • Made ProcessVertices support optional (fixes D9VK on Haswell)
  • Fixed texture offsets and alignments when locking block compressed textures
  • Fixed a bug in UpdateSurface where block compressed textures had incorrect copy offsets
  • Fixed a crash when calling SetLOD on a D3DPOOL_SYSTEMMEM image
  • Handle degenerate present regions (fixes a crash when playing a recent version of A Hat in Time)
  • Set scissor to viewport (fixes minimap in GTA IV)
  • Removed pointer initialization in CreateVertexShader (matches native behaviour, fixes a crash in The Witcher)
  • Fixed the texture (and not the mip) extent being used in ColorFill on full surfaces
  • Fixed src/dst subresource being confused in GetRenderTargetData (fixes cars in GRID)
  • Report NOTAVAILABLE rather than INVALIDCALL for unavailable sample counts
  • Fixed uploads of partial locking of buffers -- some games go OOB
  • Removed unbinding for mismatching rt/ds extents (introduces regressions)
  • Fully wait in GetRenderTargetData for it to complete (fixes rthdribl 2.0 demo)
  • Fixed black walls in Serious Sam 2 (improved border color normalization)

DXSO

  • Always export COLOR0 and COLOR1 in vertex shaders (fixes rendering errors in some fixed func. games)

Fixed Function

  • Ensured normalize(0) -> 0 in fixed function (@CME42 fixes a bug in fr-030 demo)
  • Fixed a bug where fixed function shaders were generating incorrect keys
  • Handled color/alpha write special case behaviour for D3DTOP_DOTPRODUCT3
  • Fixed some minor validation errors and a bug where some fixed function shaders were using features not exposed in GLSL
  • Ignore texcoord count given to API when special transform flags are used.
  • Respect count for texture projection, rather than use the image count
  • Workaround for an Nvidia bug where they were using the incorrect value for projection
  • Fixed bias in D3DTOP_DOTPRODUCT3

Notes

Please do not use wine's d3d9x or d3dcompiler with d9vk. They make invalid API calls and generate bad shaders. I cannot stress this enough.

If you are compiling with MinGW, please use the dwarf2 exception patch to improve performance.

Acknowledgements

  • ドイツ人 (doitsujin): for creating the base of the project, DXVK
  • Rhedox and CME: for helping with debugging
  • VKx and Frog Family Discords: for helping with testing

Thank you and Enjoy! <3

- Josh 🐸 ❤️ ~

Assets 3
Sep 7, 2019
[dxso] Project shadow textures in PS 1.x