Commit Graph

3142 Commits

Author SHA1 Message Date
Joshua Ashton d8381dab8d [d3d9] Fix a typo when unmarking autogen mips 2020-05-26 18:57:28 +01:00
Joshua Ashton 1a920f44ea [d3d9] Rename GenerateMips to EmitGenerateMips 2020-05-26 18:50:34 +01:00
Joshua Ashton fabe7b5d59 [d3d9] Check if needs mip gen in GenerateTextureMips
There could be duplicate indices!
2020-05-26 18:49:17 +01:00
Joshua Ashton 6c030afc95 [d3d9] Update device tracking when manually autogenning mips
Avoids some needless generations potentially.
2020-05-26 18:48:42 +01:00
Joshua Ashton e57aea5749 [d3d9] Track and defer mipmap generations
Turns out we need to track this crap and generate at draw time and handle a bunch of other wacky cases for it...

Bah.

Fixes #1642
(The funky water.)
2020-05-26 18:42:53 +01:00
Joshua Ashton b958473cc9 [d3d9] Move pLockedBox/Rect checks to subresource 2020-05-26 13:14:58 +01:00
Joshua Ashton 4c1deabcd3 [d3d9] Don't expose surfaces for autogenned mips 2020-05-26 13:11:24 +01:00
Joshua Ashton a35df1c3b1 [d3d9] Fix AUTOGENMIPMAP not working in some instances
Closes #1642
2020-05-26 12:46:55 +01:00
Christopher Egert 67b1ee4f9b [d3d9] Only allow ColorFill on surfaces in D3DPOOL_DEFAULT
Both nine and native nvidia d3d9 seems to do this,
this fixes a crash in spacemail by xplsv.
2020-05-25 13:33:12 +01:00
Joshua Ashton 4d70d59ea4 [d3d9] Use base texture for subresource refs
Fixes a crash when running d3d9-triangle
2020-05-25 13:29:56 +01:00
Joshua Ashton 9ee4add77e [dxso] Forbid FETCH4 for 3D and not Cube
SPIR-V spec contradicts itself as to what is allowed here, and SPIR-V val doesn't help by listing the wrong dimension.
2020-05-25 09:26:09 +01:00
Joshua Ashton 87e8b9733f [dxso] Blacklist FETCH4 for cubes and normalize flags 2020-05-25 09:21:30 +01:00
Joshua Ashton b12fa99435 [dxso] Fix scalar select on vector in FETCH4 code 2020-05-25 09:05:58 +01:00
Joshua Ashton 4e1ee5bf39 [d3d9] Normalize projection spec constant further
Only include those used in the pixel shader and are bound.
2020-05-25 06:13:21 +01:00
Joshua Ashton 8fdf9e67d3 [d3d9, dxso] Implement FETCH4 2020-05-25 06:13:21 +01:00
Philip Rebohle cf1ff99b10 [vulkan] Disable fullscreen exclusive support on wine
Fixes issues with RenderDoc captures on winevulkan.
2020-05-24 18:38:54 +02:00
Joshua Ashton 9a40c1e6ae [dxvk] Fix fb resolve offset
gl_FragCoord is read in the fs shader, so we need to take into account the dstOffset here!

This was causing the offset to be doubled rather than eliminated
for the resolves for refractive water in Serious Sam 2
as srcOffset == dstOffset.

Fixes #1637
2020-05-22 11:13:07 +02:00
Joshua Ashton 8e7df31878 [d3d9] Correct resolve offset regions for intermediate StretchRect resolves
We don't want to use the dst info for these, given the blit will do that.

Partially fixes #1637
2020-05-22 11:13:07 +02:00
Joshua Ashton e2ad3b1b20 [d3d9] Improve sampler anisotropy normalization 2020-05-21 08:58:39 +01:00
Philip Rebohle 0c0d582f24
[dxvk] Default to fragment shader resolved on official AMD drivers
Improves performance of MSAA resolves. RADV does not benefit.
2020-05-19 18:54:25 +02:00
Philip Rebohle 5d7b5b0e35
[dxvk] Fix framebuffer resolve barriers 2020-05-19 16:23:44 +02:00
Christopher Egert 79feed9d89 [d3d9] Allow D3DFMT_NULL as RenderTargetFormat in CheckDepthStencilMatch
This partially fixes shadows in Timeshift.
2020-05-19 04:12:36 +01:00
DadSchoorse 84bb768a32 [util] Enable d3d9.invariantPosition for Halo/Hale CE
Fixes #1550
2020-05-17 23:41:42 +02:00
Philip Rebohle 2e378257ea
[meta] Release 1.7 2020-05-16 17:07:18 +02:00
Robin Kertels 724d0fc0b2 [d3d9] Set scissor to the viewport if that's smaller
Fixes #1608
2020-05-13 18:53:11 +01:00
Philip Rebohle 6643c75f37
[dxvk] Use access flags rather than usage when tracking gfx barriers 2020-05-12 00:24:09 +02:00
Philip Rebohle 57acbbd7c7
[d3d11] Always enable STORAGE_BUFFER_BIT usage for srv/uav buffers
Fixes validation errors in games that use incorrect view types in
some cases, e.g. Cloudpunk.
2020-05-12 00:23:12 +02:00
Philip Rebohle aa0b306d2e
[d3d11] Require multiDrawIndirect feature for Feature Level 11.0
All hardware that DXVK can run on supports this, so let's just enable it.
Saves some feature checks in games using Ubisoft's Anvil Next engine.
2020-05-11 01:15:06 +02:00
Philip Rebohle e7455b6460
[vulkan] Remove VulkanFn wrapper
Not really necessary, and apparently this is causing trouble on GCC 10.1.

Fixes #1620.
2020-05-10 02:06:27 +02:00
Joshua Ashton 3a6c0cf605 [dxso] Implicitly define Color inputs as centroid in PS <= 2 2020-05-09 20:49:55 +01:00
Joshua Ashton 774f74cd36 [d3d9] Only dirty ff pixel shader if set texture is in PS binding range 2020-05-07 16:14:11 +01:00
Joshua Ashton 27b9736626 [d3d9] Dirty fixed function pixel shader on texture type change
Fixes #1603
2020-05-07 16:09:58 +01:00
Joshua Ashton b2f6885e55 [d3d9] Make texture stage state args mask easier to read 2020-05-07 15:37:05 +01:00
Joshua Ashton a6771daf49 [d3d9] Unbind depth image views on device reset 2020-05-07 15:35:48 +01:00
Joshua Ashton 42deab0d60 [d3d9] Cleanup SetStateTextureStageState dirty flags 2020-05-07 14:50:26 +01:00
Joshua Ashton f88f424da4 [d3d9] Convert border color to float in CS thread
It's cheaper to look up sampler keys this way
2020-05-07 13:11:59 +01:00
Joshua Ashton fd75775197 [d3d9] Use unordered comparison opposed to isnan
Results in better codegen
2020-05-07 13:05:36 +01:00
Joshua Ashton 198ce13934 [d3d9] Replace clamp with min in sampler normalization 2020-05-07 13:01:14 +01:00
Philip Rebohle 68be040f4a
[dxvk] Use compute queue for transfers if DMA queue is not available
Affects RADV. Let's see if this works and does anything for performance.
2020-05-05 12:49:13 +02:00
Philip Rebohle 5fd361757b
[d3d9] Disable old border color hack if custom border colors are supported 2020-05-04 20:18:44 +02:00
Philip Rebohle 263865cf28
[d3d9] Enable custom border color features if available 2020-05-04 19:46:57 +02:00
Philip Rebohle 00613d1dc7
[d3d11] Enable custom border color features if available 2020-05-04 19:46:57 +02:00
Philip Rebohle 1fc6e3adbe
[dxvk] Use custom border colors if available 2020-05-04 19:46:57 +02:00
Philip Rebohle 0648314451
[dxvk] Refactor DxvkSampler::getBorderColor 2020-05-04 19:46:57 +02:00
Philip Rebohle 7b81db2c75
[dxvk] Pass device to sampler constructor 2020-05-04 19:46:57 +02:00
Philip Rebohle a968f29754
[dxvk] Enable VK_EXT_custom_border_color if available 2020-05-04 13:27:35 +02:00
Philip Rebohle 7239066c5c
[dxvk] Don't stall SDMA command buffer for image initialization 2020-05-02 20:20:56 +02:00
Philip Rebohle 4fafeb21d0
[dxvk] Optimize clearDepthStencilImage barrier 2020-05-02 20:13:13 +02:00
Philip Rebohle e24954ca39
[dxvk] Optimize clearColorImage barrier 2020-05-02 20:13:13 +02:00
Philip Rebohle 52cad95f2c
[dxvk] Use initializeImage in clearColorImage 2020-05-02 20:13:13 +02:00
Philip Rebohle bbd5762d3d
[dxvk] Add initializeImage helper
Allows us to use TOP_OF_PIPE -> xxx barriers more often.
2020-05-02 20:10:19 +02:00
Philip Rebohle a208f45fe4
[dxvk] Actually reinitialize image if necessary 2020-05-02 19:27:45 +02:00
Philip Rebohle 651646ca7f
[dxvk] Fix acquire barrier in clearCompressedColorImage 2020-05-02 19:06:22 +02:00
Philip Rebohle dcc38c98e7
[dxvk] Fix acquire barriers in resolveImageHw 2020-05-02 18:58:38 +02:00
Philip Rebohle b370d13743
[dxvk] Fix acquire barrier in updateImage 2020-05-02 18:52:35 +02:00
Philip Rebohle 8921be81bd
[dxvk] Fix blit acquire barriers 2020-05-02 18:49:58 +02:00
Philip Rebohle 85db84a1b3
[dxvk] Fix access mask in clearImageViewFb
VK_ATTACHMENT_LOAD_OP_LOAD requires the read flags to be set.
2020-05-02 18:48:59 +02:00
Philip Rebohle 5bab5ae7a5
[dxvk] Fix acquire barriers in copyImageHw 2020-05-02 18:46:35 +02:00
Philip Rebohle c1fcc3fc98
[dxvk] Simplify barriers around meta copy operations 2020-05-02 18:46:21 +02:00
Philip Rebohle f6007e4f1a
[dxvk] Emit graphics barriers upon spilling render pass
We actually need to do this now since we no longer set
all the access flags in the render pass barrier.
2020-05-02 11:36:32 +02:00
Philip Rebohle 0245273ab7
[dxvk] Remove store op from render pass ops
This is always going to be VK_ATTACHMENT_STORE_OP_STORE anyway.
2020-05-02 11:36:32 +02:00
Philip Rebohle c0f72940dd
[dxvk] Optimize regular render pass barriers
Only applies the depth/color attachment stage and access mask
if necessary, and removes a bunch of pointless read-only flags.
2020-05-02 11:36:32 +02:00
Philip Rebohle 94077ed42b
[dxvk] Reintroduce EXTERNAL->0 subpass dependency
Ensures that the layout transition happens at the right time, and
otherwise relaxes the barrier since it is assumed that the backend
will emit barriers with the appropriate as necessary.
2020-05-02 11:36:32 +02:00
Philip Rebohle 2089426420
[dxvk] Simplify render pass barriers after clears
This wasn't really doing what we intended.
2020-05-02 11:36:32 +02:00
Philip Rebohle b9c56e3e97
[dxvk] Improve deferred clear logic
Ignores currently bound render targets until we actually begin a
render pass. This allows us to use LOAD_OP_CLEAR in more situations,
including when games clear their RTs before binding them.
2020-05-02 11:36:32 +02:00
Philip Rebohle 3cbd109020
[dxvk] Remove redundant null pointer check for framebuffer
Not necessary because we're *always* calling updateFramebuffer
before startRenderPass.
2020-05-02 11:36:31 +02:00
Philip Rebohle 2967f567d8
[dxvk] Introduce performClear helper 2020-05-02 11:36:31 +02:00
Philip Rebohle 46f860f93e
[dxvk] Don't flush memory in changeImageLayout 2020-05-02 11:36:28 +02:00
DadSchoorse 9b602ef850
[util] Rework tearFree as a Tristate
PR #1606.
2020-05-02 10:18:13 +02:00
Philip Rebohle c9dde91760
[d3d11] Disable null descriptors again
Breaks ELEX due to incorrect image query results.
2020-05-02 01:02:46 +02:00
Philip Rebohle f1e069568d
[build] Remove .spec files
No longer needed now that we don't support winelib builds anymore.
2020-05-01 00:52:33 +02:00
Philip Rebohle 6face8a1dc [d3d11] Enable new robustness features if available 2020-04-30 16:36:59 +02:00
Philip Rebohle 80009831d4 [d3d11] Use explicit spec constant for gamma texture
With null descriptors, the "bound" spec constants would always be 1.
2020-04-30 16:36:59 +02:00
Philip Rebohle 7b8a65589e [dxvk] Use null descriptors for unbound resources
This way we won't have to recompile pipelines any time the app
unbinds a resource.
2020-04-30 16:36:59 +02:00
Philip Rebohle 6ea9d83f94 [dxvk] Enable VK_EXT_robustness2 if available 2020-04-30 16:36:59 +02:00
Philip Rebohle 2a25e3f899 [dxvk] Skip draws if no index buffer is bound
It doesn't make much sense to bind the null buffer here, as we'd
just draw the same vertex over and over again.
2020-04-30 16:36:59 +02:00
Philip Rebohle ca59d8e74b
[dxgi] Implement DXGIDeclareAdapterRemovalSupport 2020-04-28 15:20:43 +02:00
Philip Rebohle 5d0efd87c2
[dxgi] Implement IDXGIOutput6 2020-04-28 15:00:57 +02:00
Philip Rebohle 15f5efe4c3
[dxgi] Implement IDXGIAdapter4 2020-04-28 14:50:36 +02:00
Philip Rebohle 26ea12b18e
[dxgi] Include DXGI 1.6 headers 2020-04-28 14:44:20 +02:00
Joshua Ashton 9f4baf3f55 [d3d9] Fix swapchain surface refs once and for all
The refcounting for d3d9 swapchain surfaces is very funny.
They don't actually hold any form of reference to their parent, unlike the surface->texture relationship.

When a swapchain is destroyed, the surfaces become orphans (like offscreen rendertargets) if they are still reffed.

Calling GetContainer on them when orphaned will return E_NOINTERFACE and nullptr for __uuidof(IDirect3DSwapChain)

Fixes some potential lingering refs on the device.
2020-04-26 13:32:22 +01:00
Philip Rebohle 6d5f5580fb
[dxvk] Use correct size to clear zero buffer 2020-04-23 20:49:59 +02:00
Philip Rebohle 9a76645228
[d3d11] Simplify ClearView implementation
Removes some code duplication for the no-clear-rect case.
2020-04-22 22:32:53 +02:00
Philip Rebohle b3c19ba5e8
[d3d11] Optimize ClearView for render target and depth-only views
We should use clearRenderTarget whenever we clear the entire view.
The Talos Principle uses ClearView to clear its render targets for
some reason, and we were hitting a slow path there.
2020-04-22 21:02:46 +02:00
Philip Rebohle bea16263e4
[dxvk] Use GPU-local buffer in clearCompressedColorImage
Saves VA space in applications that do not initialize their textures..
2020-04-21 18:10:09 +02:00
Philip Rebohle 436357e280
[meta] Remove support for winelib builds
Untested, unmaintained, and constantly causing issues on various
setups for no apparent reason. Time to get rid of it for good.

Closes #1584.
2020-04-20 17:35:08 +02:00
Philip Rebohle dbc9f40aa1
[meta] Release 1.6.1 2020-04-19 21:43:03 +02:00
Philip Rebohle b0503b54ce
[dxvk] Don't pad dedicated image allocations
Fixes validation errors on Nvidia.
2020-04-19 17:19:06 +02:00
Joshua Ashton 409eac9d20 [d3d9] Use if/else in GetCommonTexture and TextureRefPrivate
These are the only things it can be, and they all end up calling what the compiler will optimize to the same function so we can avoid a branch here.
2020-04-19 01:11:11 +01:00
Joshua Ashton 3f2b582d5f [d3d9] Avoid prematurely deleting swapchain backbuffers if they are still reffed on reset 2020-04-19 00:59:02 +01:00
Joshua Ashton 837861ffdd [d3d9] Cleanup private ref code for subresources 2020-04-18 21:06:38 +01:00
Joshua Ashton 42089d73c5 [d3d9] Fix ref-counting for swapchain surfaces 2020-04-18 21:06:38 +01:00
Christian Sturm 97cd91885d [util] Enable constant buffer range check for Secret World Legends 2020-04-18 21:53:21 +02:00
Robin Kertels d6e1c19fec [d3d11] Ignore buffer usage for the single use mapping hack
The usage doesn't matter as we swap out the entire backing slice anyway.
2020-04-18 17:15:48 +02:00
Philip Rebohle 8c68236f70
[d3d11] Check return value of Map in UpdateSubresource1
And fall back to a GPU-side copy if necessary.
2020-04-18 17:04:16 +02:00
Philip Rebohle 487ecd861c
[util] Enable constant buffer range check for Blue Reflection
Fixes #1574.
2020-04-18 14:00:04 +02:00
Philip Rebohle ab8ab4052f [d3d9] Fix compiler warnings 2020-04-13 22:05:27 +01:00
Joshua Ashton 4699d4162a [d3d9] Implement swapchain containers for surfaces
Fixes a crash in L.A. Noire.

Closes #1564
2020-04-13 01:42:30 +01:00
Philip Rebohle 4d8940957c
[d3d11] Add option to enforce mailbox present mode 2020-04-12 20:28:33 +02:00
Philip Rebohle 7f03f45301
[util] Support encapsulated strings in configuration files
Fixes #1567.
2020-04-10 21:16:29 +02:00