Skip to content

Conversation

misyltoad
Copy link
Collaborator

@misyltoad misyltoad commented Dec 16, 2019

It's finally here!~

This PR merges D9VK into DXVK, which is a Direct3D9 implementation using the DXVK backend.

The reason being is D9VK is usable and mostly feature complete now, even having some additional features not exposed by other implementations, and it would be nice to have all our D3D implementations in one place/project! 😄

It's finally time to merge!

What's next?

Once this gets merged, the d3d9 frontend will then be developed inside this repository.
What's to-do feature wise to be properly complete as of this PR:

  • Fixed function bumpmapping
  • Fixed function premodulation
  • Software cursor (hardware cursor is currently implemented)
  • ComposeRects (from D3D9Ex, however I have no test case for this)
  • Custom Border Color (needs ext)
  • Depth Bias Fixes (needs ext)

and of course...

Lots of bug fixing!

Have fun!

Love from Josh 🐸❤~

misyltoad and others added 30 commits December 16, 2019 02:03
However, SetGammaRamp does persist between device reset and will be automatically applied if we do go into fullscreen based on testing.
Fixes Haswell not working as it doesn't support vertexPipelineStoresAndAtomics.
Required for fixed function -- might change this solution later on however
Fixes a soft-ctd in A Hat in Time
This fixes a rendering issue in fr-030 candytron.
Fixes the minimap border aliasing in GTA IV.
Matches OpenGL/Gallium behaviour when not using vertices in window space.

Found by @K0bin (Robin Kertels <robin.kertels@gmail.com>)
Fixes The Witcher 2, which calls CreatePixelShader and then CreateVertexShader with the same result ptr and uses the result of whatever call succeeds

Supersedes doitsujin#361
The new method returns a value instead of a pointer.
This allows us to do two things:
- Easily implement range checks for relative indexing
- Return defs directly rather than through a variable
Instead, use the constant IDs directly. Simplifies some code.
Fixes decompilation/recompilation in RenderDoc
Fixes recompilation/decompilation in RenderDoc
Avoids passing a bunch of refs manually
Counts the number of sampler pairs (color + depth) we create.
Enable this option to disable exclusive fullscreen by default.

Closes doitsujin#475
Cleans up some messy lambda stuff we were doing.
Adds a fast path for when we aren't doing SWVP.

Eliminate std::array from the constant set structures.
Pretty silly oversight on my behalf.
Matches documentation and test behaviour
…eblocks

Fixes and matches ref-counting for device child resources to native d3d9.
Fixes memory and resource leaks in stateblocks, deletion and device resetting.
Copy link
Contributor

@Margen67 Margen67 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐸

@doitsujin
Copy link
Owner

🐸

@Valmar33
Copy link

My prayers have been answered! Praise the frog! 🐸

@doitsujin doitsujin merged commit 54ed8f0 into doitsujin:master Dec 16, 2019
Fincer added a commit to Fincer/dxvk-wine-autobuilder that referenced this pull request Dec 16, 2019
@rado84-github
Copy link

Do you know what would be even nicer? To have a D12VK, so that we can play DX12 game in Linux.

@ZachBacon
Copy link

@IvoAndonov well... Technically there's vkd3d for that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.