1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-14 00:48:44 +01:00
Commit Graph

3750 Commits

Author SHA1 Message Date
Joshua Ashton
a1f0bb99ee
[d3d9] Cleanup D3D9DeviceEx members 2021-08-11 01:38:34 +01:00
Joshua Ashton
5e48035e99
[d3d9] Only bind textures if they are used by the shader 2021-08-11 01:08:13 +01:00
Joshua Ashton
c0c1565cba [d3d9, dxso] Alias color and depth samplers and improve tracking
Takes me from 340 -> 460fps in A Hat in Time's main menu when CPU bound.
2021-08-10 23:46:03 +00:00
Joshua Ashton
3f78bde928 [d3d9] Optimize GetCommonTexture 2021-08-10 23:46:03 +00:00
Joshua Ashton
85468a5526 [d3d9] Add extra brackets to fetch4 filter check 2021-08-09 22:54:19 +00:00
Joshua Ashton
674f008e23 [d3d9] Use m_activeTexture mask for SRGB check 2021-08-09 22:54:19 +00:00
Joshua Ashton
1823a098a1 [d3d9] Clean up SetStateSamplerState 2021-08-09 22:54:19 +00:00
Joshua Ashton
ea4aa87336 [d3d9] Add unlikelies to rare vendor hacks 2021-08-09 22:54:19 +00:00
Georg Lehmann
1ea79cf136 [d3d9] Only respect relevant bits of D3DRS_STENCILREF 2021-08-09 22:54:06 +00:00
Joshua Ashton
79cf2e875f [dxvk] Avoid needless refcount in updateFramebuffer
Avoids a needless refcount
2021-08-09 15:23:59 +02:00
Joshua Ashton
a35f2af5e5 [dxvk] Remove needless refcount in updateTransformFeedbackBuffers 2021-08-09 15:23:59 +02:00
Joshua Ashton
4edaade185 [dxvk] Avoid needless refcount in copyImageFb 2021-08-09 15:23:59 +02:00
Georg Lehmann
8844dc2091 [dxgi] Downgrade format fall back warnings to info 2021-08-09 13:17:43 +02:00
Georg Lehmann
b55784acc6 [dxvk] Downgrade missing OpenVR warning to info 2021-08-09 13:17:43 +02:00
Georg Lehmann
152a08191c [d3d9] Downgrade format fall back warnings to info 2021-08-09 13:17:43 +02:00
Joshua Ashton
abba425ed0 [d3d9] Optimize MarkTextureBindingDirty with tzcnt loop of m_activeTextures 2021-08-09 09:54:12 +00:00
Joshua Ashton
242b7b6d9c [d3d9, dxso] Remove AlphaTestEnable spec constant
Go based on the func we already have. Avoids wasting a spec const.
2021-08-09 09:52:07 +00:00
Georg Lehmann
ada463badc [d3d9] Mark mips as dirty on Clear if needed 2021-08-08 10:27:43 +00:00
Georg Lehmann
92deba0310 [d3d9] Implement D3DTOP_BLENDTEXTUREALPHAPM 2021-08-08 10:12:40 +00:00
Georg Lehmann
9162aa5fdf [d3d9] Captured NULL vertex declarations are not applied 2021-08-08 08:50:00 +00:00
Georg Lehmann
28a07ef445 [d3d9] Validate vertex declaration on draws 2021-08-08 08:50:00 +00:00
Georg Lehmann
8c0003552c [d3d9] Reject depth stencil StrechRect during an active scene 2021-08-08 08:50:00 +00:00
Georg Lehmann
09e5939502 [d3d9] Reject 2 BeginScene + EndScene without Begin 2021-08-08 08:50:00 +00:00
Georg Lehmann
6071e998fd [d3d9] Handle invalid modes in Device::Reset 2021-08-08 08:50:00 +00:00
Georg Lehmann
64c4eea922 [d3d9] Mark texture dirty on SetLod 2021-08-08 02:28:44 +00:00
Georg Lehmann
26516dc904 [d3d9] Fix ColorFill with OffscreenPlainSurface 2021-08-08 02:15:06 +00:00
Joshua Ashton
fd50eae5c2 [d3d9] Optimize framebuffer binding with RT mask 2021-08-08 02:14:11 +00:00
Joshua Ashton
2f22c1b53d [d3d9] Optimize clears with rt mask and better ref tracking 2021-08-08 02:14:11 +00:00
Joshua Ashton
072d3a039e [d3d9] Track bound RTs
This also improves active RT hazard tracking by also accounting for NULL
2021-08-08 02:14:11 +00:00
Joshua Ashton
e0f9ebf695 [d3d9] Common buffer header cleanups and docs 2021-08-08 02:14:11 +00:00
Joshua Ashton
ee11e1af58 [d3d9] Minor buffer code-style cleanups 2021-08-08 02:14:11 +00:00
Joshua Ashton
b1b1524737 [d3d9] Adapter cleanups 2021-08-08 02:14:11 +00:00
Joshua Ashton
da411c8a48 [d3d9] Move m_lod after m_subresources 2021-08-08 02:14:11 +00:00
Joshua Ashton
4a569918c0 [d3d9] Track NULL state per-subresource 2021-08-08 02:14:11 +00:00
Joshua Ashton
d6bc355782 [d3d9] Fix code-style of D3D9Subresource and inline 2021-08-08 02:14:11 +00:00
Joshua Ashton
f4ce795fe7 [d3d9] Do a little packing of subresource members 2021-08-08 02:14:11 +00:00
Joshua Ashton
d922e261e8 [d3d9] Make D3D9_COMMON_TEXTURE_DESC smaller 2021-08-08 02:14:11 +00:00
Joshua Ashton
3592d7b48f [d3d9] Return const buffer references in D3D9CommonBuffer
Avoids some needless refcounting
2021-08-08 02:14:11 +00:00
Joshua Ashton
fb7035f16a [d3d9] Remove D3D9CommonBuffer::GetDesc
We already have ::Desc()
2021-08-08 02:14:11 +00:00
Joshua Ashton
750639d3b6 [d3d9] Return const view references in D3D9Subresource 2021-08-08 02:14:11 +00:00
Joshua Ashton
3cbac8923f [d3d9] Return const refs for image/buffers + format mapping in CommonTexture
Avoids needless Rc ref counts and copies of that fairly large structure.
2021-08-08 02:14:11 +00:00
Georg Lehmann
23873cbb57 [d3d9] Disable primitive restart 2021-08-08 02:05:27 +00:00
Georg Lehmann
fdc2e2e78f [d3d9] Fix NEVER alpha testing 2021-08-07 21:54:30 +00:00
Georg Lehmann
be3c248c8b [d3d9] Don't mark mips as dirty when the texture doesn't have automatic mips 2021-08-07 21:53:34 +00:00
Georg Lehmann
973678e6bf [d3d9] Only look at the last bit for D3DSAMP_SRGBTEXTURE 2021-08-07 13:09:13 +00:00
Georg Lehmann
a1fbcf35de [d3d9] Ignore clear with Count == 0 and non-NULL rect 2021-08-06 18:54:17 +00:00
Philip Rebohle
546bd6f462
[dxbc] Fix swizzles in lod instruction
Fixes #1764.
2021-08-05 22:57:58 +02:00
Philip Rebohle
97ef8a6fb3
[dxvk] Remove Win32 fence
Replaced with CallbackFence.
2021-08-05 22:57:58 +02:00
Philip Rebohle
56395c9bc8
[d3d11] Re-implement frame latency events using Win32 semaphore
Matches native DXGI behaviour more accurately, and fixes a hang in
Shin Megami Tensei 3.
2021-08-05 22:57:58 +02:00
Philip Rebohle
4c222ec557
[d3d11] Use callback fence to signal Flush1 event 2021-08-05 22:57:58 +02:00
Philip Rebohle
893da94fb3
[util] Introduce CallbackFence 2021-08-05 22:57:58 +02:00
Georg Lehmann
5844315853 [dxso] Implement DxsoOpcode::Sgn 2021-08-05 20:55:54 +00:00
Georg Lehmann
c5ab87f353 [spirv] Add opFSign 2021-08-05 20:55:54 +00:00
Paul Gofman
52fac82a45 [dxvk] Also initialize view formats when creating DxvkImage for existing VkImage. 2021-08-03 00:47:33 +02:00
Robin Kertels
7873bebaf2 [d3d9] Only check range overlap if the buffer is not directly mapped 2021-07-28 16:57:02 +00:00
Philip Rebohle
d10e1ed3c0
[meta] Release 1.9.1 2021-07-26 15:45:33 +02:00
Joshua Ashton
b8a4b85c48
[d3d9] Fix clearing render targets on device reset 2021-07-26 14:35:48 +02:00
Robin Kertels
b4e6f81cb5 [d3d9] Respect aligned pitch when using initial data 2021-07-24 19:41:59 +00:00
Robin Kertels
6ba3d2f9d4 [d3d9] Set correct usage flags for large temporary staging buffers 2021-07-23 13:36:21 +00:00
Robin Kertels
fa279eb8ad [d3d9] Ignore NO_DIRTY_UPDATE for POOL_DEFAULT resources
Respecting it breaks Senren Banka because we never upload the texture.
2021-07-23 13:36:21 +00:00
Robin Kertels
584e1515b1 [d3d9] Fix pitch when copying straight from mapping buffer 2021-07-23 13:36:21 +00:00
Robin Kertels
34101dcf26 [d3d9] Fix UpdateTexture extent
Same as 5f1629f2cb
2021-07-23 13:36:21 +00:00
Robin Kertels
5037e49646 [util] Merge GTA IV configs
The app config system can not handle more than one entry
per exe name, so the enableUMA one disabled the NVAPI
workaround.
2021-07-21 15:08:23 +02:00
Philip Rebohle
11bbc07ea1
[dxvk] Support destination pitch in packImageData 2021-07-19 16:54:56 +02:00
Joshua Ashton
d3112c320b [d3d9] Add dirty texture tracking
Reduces overhead from re-binding and unnecessary binding (srgb changes) in L4D2.

I go from about 750 -> 850-900 fps in c1m2_streets with this change.
2021-07-14 20:38:49 +00:00
Robin Kertels
8eeff90e0a [d3d9] Only use staging buffers for uploads once we've stalled on the resource 2021-07-14 19:26:25 +00:00
Robin Kertels
b83261b759 [d3d9] Adjust waiting in LockBuffer to staging buffer upload
Now that we're uploading using a staging buffer,
we don't need to wait for non default buffers.

We should also respect READONLY for WRITEONLY buffers
(yes, it sounds dumb) because Nostale relies on that.
2021-07-14 19:26:25 +00:00
Robin Kertels
ed24c17d53 [d3d9] Validate srcRect and dstPoint in UpdateSurface 2021-07-14 18:33:38 +00:00
Georg Lehmann
b3b2f0921c [d3d9] Never init pSharedHandle.
This parameter has three different meanings if it's non NULL:
- if Pool is D3DPOOL_SYSTEMMEM it's a host pointer for inital data
- if it points to a nullptr it's a output handle
- if it's a pointer to non NULL pointer it's an import handle
2021-07-14 15:29:46 +00:00
Robin Kertels
5f1629f2cb [d3d9] Fix FlushImage extent for smaller mip maps 2021-07-10 16:23:56 +00:00
Robin Kertels
9f0775b1ac [d3d9] Always use cached memory for texture mapping buffers
We read from that memory when uploading the texture.
Fixes performance in Oblivion.
2021-07-08 21:42:12 +00:00
Joshua Ashton
c7f8267f98 [d3d9] Fix NV12 conversion
Froggy is the right color now
2021-07-08 22:36:59 -07:00
Philip Rebohle
e23792ef91
[d3d11] Fix handling sRGB UAV images 2021-07-07 16:00:12 +02:00
Joshie
f9034007ac [util] Fix indexing of non-float vectors 2021-07-05 18:58:55 +02:00
Connor Abbott
9579132942
[d3d9] Remove extra spaces in def file
wrc is pickier about this than windres and refuses to accept it.
2021-07-03 14:28:28 +02:00
Connor Abbott
aae0e57a46
Don't add def file as an object
This is unnecessary even on mingw, and leads to duplicating the .def
file on the linking command line which winegcc complains about.
2021-07-03 14:28:28 +02:00
Connor Abbott
2988875e93
[dxgi] Call QueryPerformanceCounter directly
dxvk::high_resolution_clock is meant to be a wrapper around the C++ time
library, and getCounter() is (AFAIK) an internal thing so calling it
directly is odd. On winelib this redirects to the host's implementation,
which means this fails to compile. Since this is a Windows API and not
for internal usage just call the Windows API function directly.
2021-07-03 14:28:28 +02:00
Connor Abbott
b9135ca0cd
Do not try to load libraries natively under __WINE__
This was only half-implemented (e.g. OpenXR was still calling
GetModuleHandle), broke compilation with Vulkan due to mismatched ABI,
and wouldn't have worked anyways with winelib builds because we still
need access to wine's implementation of the Vulkan win32 winsys
integration. Perhaps this is still useful for dxvk-native but if so it
should be re-added under a DXVK_NATIVE flag.
2021-07-03 14:28:28 +02:00
Philip Rebohle
c8a9308c37
[dxvk] Enable disableMsaa option for World of Final Fantasy
Fixes #1216.
Fixes #2136.
2021-07-02 16:11:24 +02:00
Philip Rebohle
3b857d93b5
[d3d11] Add d3d11.disableMsaa option to disable multisampling
Aims to be mostly transparent to the application, although breakage
can still happen if shaders query the sample count and do not handle
a sample count of 1.
2021-07-02 05:52:05 +02:00
Philip Rebohle
e379f472f6
[dxbc] Implement hack to treat multisampled textures as normal textures 2021-07-02 05:52:05 +02:00
Paul Gofman
8b6ac527b4 [d3d11] Initialize buffer flags in D3D11UnorderedAccessView::GetDescFromResource(). 2021-07-01 15:20:07 +02:00
Robin Kertels
309284e7dc [d3d9] Respect 4 byte pitch when reading back texture 2021-07-01 05:47:44 -07:00
Robin Kertels
c43618d19f [d3d9] Fix texture dirty box clearing
- Fix interleaved locks with evictManagedOnUnlock
We need to make sure there are no other subresources of a texture locked
before clearing the dirty box. Otherwise the data for those other subresources
won't get copied into VRAM.

- Clear dirty box regardless of texture pool
Otherwise we keep repacking and copying the whole texture
for every single lock. This causes performance problems
in Star Wars: The Old Republic.
2021-07-01 05:47:44 -07:00
Philip Rebohle
2ff8b42fff [d3d9] Enable robustBufferAccess2 feature if available
Tightens some out-of-bound rules around vertex attributes.
2021-06-29 18:35:47 -07:00
Philip Rebohle
96f5641a7e [d3d9] Ensure that the bound UP vertex buffer region is large enough
If the buffer size is less than (vertexCount * stride), the last vertex
may be considered out-of-bounds, even if all attributes are included in
the vertex.

Fixes #2131.
2021-06-29 18:35:47 -07:00
Philip Rebohle
45a6d5fb5b
[dxvk] Fix potential undesired host-visible buffer invalidation
We cannot invalidate mapped buffers in the backend because the frontend
may cache the mapped slice from its own invalidations, which would then
become invalid. Very unlikely to be an issue in practice.
2021-06-29 13:58:52 +02:00
Philip Rebohle
cd8a2bcfcd [dxvk] Use custom sync primitives 2021-06-29 00:51:20 +02:00
Philip Rebohle
7305da6951 [util] Implement custom sync primitives 2021-06-29 00:51:20 +02:00
Tobias Langendorf
ca6d8c6ce9
[util] Use FIFO_RELAXED present mode Earth Defense Force 5 (#2127)
The game constantly switches between SyncInterval 0 and 1, possibly in an attempt to implement adaptive Vsync, which causes performance issues because it forces us to recreate the Vulkan swap chain every couple of frames. Instead, enable the Vulkan equivalent of adaptive Vsync if possible.
2021-06-28 18:30:03 +02:00
Philip Rebohle
08a6b42458
[d3d11] Fix box validation in CopySubresourceRegion1 2021-06-24 21:07:48 +02:00
Philip Rebohle
9f80d9f8b2
[d3d11] Remove functions to update mapped buffers
No longer relevant since staging images will no longer be backed
by actual Vulkan images and dynamic images are not GPU-writable.
2021-06-24 21:07:48 +02:00
Philip Rebohle
7d76262c52
[d3d11] Use D3D11_COMMON_TEXTURE_MAP_MODE_STAGING if possible 2021-06-24 21:07:48 +02:00
Philip Rebohle
450c42444f
[d3d11] Use UpdateImage in D3D11DeferredContext::MapImage 2021-06-24 21:07:48 +02:00
Philip Rebohle
fd66f44561
[d3d11] Use UpdateImage in D3D11ImmediateContext::UnmapImage 2021-06-24 21:07:48 +02:00
Philip Rebohle
6ba1746d46
[d3d11] Introduce UpdateImage 2021-06-24 21:07:48 +02:00
Philip Rebohle
5e4ed2d929
[d3d11] Introduce CopyImage 2021-06-24 21:07:48 +02:00
Philip Rebohle
cd17301236
[d3d11] Introduce CopyBuffer
Generalizes some copy code.
2021-06-24 21:07:48 +02:00
Philip Rebohle
1a6f4456d8
[d3d11] Introduce ComputeMappedOffset for image resources
Modifies GetSubresourceLayout slightly in case only a partial aspect
mask is being passed to the function. This way we can conveniently
compute the offset of a given pixel within the mapped buffer of an
image subresource.
2021-06-24 21:07:48 +02:00
Philip Rebohle
7c0ee272c3
[d3d11] Add texel buffer usage to staging buffer
Needed for staging image updates.
2021-06-24 21:07:48 +02:00
Philip Rebohle
7160b85924
[d3d11] Add texel buffer usage flags to mapped subresource buffers 2021-06-24 21:07:48 +02:00
Philip Rebohle
731e88b196
[d3d11] Handle MAP_MODE_STAGING in initializer
Otherwise, we'll crash if no real image is present.
2021-06-24 21:07:48 +02:00
Philip Rebohle
596f65f75f
[d3d11] Handle MAP_MODE_STAGING when mapping images on the immediate context 2021-06-24 21:07:48 +02:00
Philip Rebohle
9e15831a2d
[d3d11] Store packed format info in D3D11CommonTexture 2021-06-24 21:07:48 +02:00
Philip Rebohle
f155b8a8b9
[d3d11] Introduce DiscardSlice and GetMappedSlice for image resources
These do the same as they do for buffer resources, but for a mapped
image subresource instead.
2021-06-24 21:07:48 +02:00
Philip Rebohle
11aa2a703a
[d3d11] Introduce D3D11_COMMON_TEXTURE_MAP_MODE_STAGING
This map mode can be used when no Vulkan image is needed to back a
staging resource, which can save a significant amount of memory.
2021-06-24 21:07:48 +02:00
Philip Rebohle
b384f5372e
[d3d11] Zero-initialize mapped buffers for images correctly 2021-06-24 21:07:48 +02:00
Philip Rebohle
f50c5234dc
[dxvk] Add source offset/extent to copyPackedBufferToDepthStencilImage 2021-06-24 21:07:48 +02:00
Philip Rebohle
a14884c652
[dxvk] Add destination offset/extent to copyDepthStencilImageToPackedBuffer
Needed to support partial copies between buffers and depth-stencil images.
2021-06-24 21:07:47 +02:00
Philip Rebohle
ba9d670157
[dxvk] Introduce copyPackedBufferImage 2021-06-24 21:07:47 +02:00
Philip Rebohle
27155539b6
[dxvk] Add meta copy pipeline for packed buffer image copies 2021-06-24 21:07:47 +02:00
Philip Rebohle
9f7a5a077f
[dxvk] Fix broken row/slice alignment in buffer<->image copies
If the specified row or slice alignment matches the row size exactly
but is not a power of two, we could accidentally screw up the alignment.
2021-06-24 21:07:47 +02:00
Philip Rebohle
ba4938e201
[dxvk] Add slice alignment to copyImageToBuffer 2021-06-24 21:07:47 +02:00
Philip Rebohle
4840cdaf8c
[dxvk] Add slice alignment to copyBufferToImage 2021-06-24 21:07:45 +02:00
Philip Rebohle
87d32a234d
[dxvk] Handle discard aspects correctly when performing clears
Should fix an Nvidia driver crash, see #2118.
2021-06-24 17:15:52 +02:00
Robin Kertels
8a93bbd8fa [d3d9] Make sure clear extent does not exceed rt size 2021-06-19 16:11:11 -07:00
Robin Kertels
7dd443802c [util] Report Nvidia GPU to Far Cry 1 2021-06-19 10:43:31 -07:00
Robin Kertels
d7c4afbeba [d3d9] Pass correct element size to texture converter 2021-06-19 10:43:31 -07:00
Philip Rebohle
81664fce44
[dxbc] Remove atomic counter workaround for ancient Mesa versions
No one should be using Mesa 19.0 at this point.
2021-06-18 15:44:58 +02:00
Philip Rebohle
7beb344f6f
[dxbc] Remove dxvk.useEarlyDiscard option
No longer relevant on drivers that support DemoteToHelperInvocation.
Closes #2109.
2021-06-18 15:44:27 +02:00
Georg Lehmann
6b8ab4fd38 [d3d11] Remove mingw-w64 < 6 workarounds 2021-06-15 20:41:34 +02:00
Philip Rebohle
dca63464b4
[meta] Release 1.9 2021-06-15 15:32:19 +02:00
Georg Lehmann
7a688bd74c [util] force 60fps for Demon Stone 2021-06-15 02:54:14 -07:00
Samuel Pitoiset
dba539471d [dxso] Remove old RADV/LLVM workaround for early discard
This workaround has been removed for DXBC few weeks ago. Note that
RADV/ACO is no longer a thing with latest Mesa git anyways.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2021-06-15 01:07:35 -07:00
Philip Rebohle
de05728c8c
[dxvk] Check view format as well when deferring clears
Otherwise, we may accidentally clear to an incorrect value.
Fixes #2100.
2021-06-14 16:41:31 +02:00
Philip Rebohle
30a1a29aa6 [util] Add DXVK_FRAME_RATE environment variable to limit frame rate 2021-06-12 13:50:08 +02:00
Philip Rebohle
12c51f1c3d [util] Enable frame rate limiter for Nier Replicant
The game does not run properly at frame rates above 60 and uses the sync
interval in a weird way that sometimes leads to the game being stuck at
31 FPS, and in the menus it displays content at weird refresh rates that
it was clearly not designed to run at.
2021-06-12 13:50:08 +02:00
Philip Rebohle
6044e63eb0 [dxgi] Notify presenter about display mode changes 2021-06-12 13:50:08 +02:00
Philip Rebohle
e281eee795 [dxgi] Add NotifyModeChange method to IDXGIVkSwapChain 2021-06-12 13:50:08 +02:00
Philip Rebohle
8b67ef724e [d3d11] Add frame rate limiter and dxgi.maxFrameRate option 2021-06-12 13:50:08 +02:00
Philip Rebohle
4f5f85925b [d3d9] Add frame rate limiter and d3d9.maxFrameRate option 2021-06-12 13:50:08 +02:00
Philip Rebohle
b537f19a3c [vulkan] Add frame rate limiter to Vulkan presenter 2021-06-12 13:50:08 +02:00
Philip Rebohle
a16c861358 [util] Implement frame rate limiter
This tries to be sophisticated and disables itself when it notices
that the frame rate is going to be limited by presentation anyway.
2021-06-12 13:50:08 +02:00
Robin Kertels
6f468ec5e0 [d3d9] Fix texture converter 2021-06-12 03:48:01 -07:00
Philip Rebohle
9eeaedeeb7
[util] Remove FFXIV workaround
Looks like whatever caused this in Mesa got fixed quite a while ago.
2021-06-11 01:59:56 +02:00
Thomas Crider
63fd2b9d32 [util] Enable d3d9.deferSurfaceCreation for Ninja Gaiden Sigma/Sigma 2
Co-authored-by: Georg Lehmann <49841484+DadSchoorse@users.noreply.github.com>
2021-06-10 01:35:48 -07:00
Joshua Ashton
f1a9d72d38 [d3d9] Don't scale z to [0, 1] for POSITIONT
I originally thought the depth clipping region was always [0, 1] when I first implemented this nearly 2 years ago.

The depth clipping region is already in the viewport's depth range, so just don't do anything here if we are z-testing.

( We still need to keep the flattening around for when ztest is disabled though :( )

Fixes: #2056
2021-06-06 09:31:01 -07:00
Philip Rebohle
fe00919d5f [util] Handle upper-case file extensions correctly 2021-06-06 03:57:15 -07:00
Joshua Ashton
f4cbc9ae9d [util] Enable emulateUMA for GTA IV
This game thinks we are on Intel, so report memory like they do.
2021-06-01 19:26:41 +02:00
Joshua Ashton
15e0594ec4 [dxgi] Add emulateUMA option
Some games think we are on Intel given a lack of NVAPI or AGS/atiadlxx support. Report our device memory as shared memory, and some small amount for a "carveout".
2021-06-01 19:26:41 +02:00
Joshua Ashton
fe0dc2d579 [dxvk] Move isUnifiedMemoryArchitecture to adapter 2021-06-01 19:26:41 +02:00
Joshua Ashton
e624cfa0b4 [util] Return custom device description for Crazy Machines 3
Otherwise the game decides it wants to crash.
2021-06-01 19:26:41 +02:00
Joshua Ashton
1d4c540b21 [dxgi] Add custom device description option 2021-06-01 19:26:41 +02:00
Joshua Ashton
747834e9b0 [d3d9] Bump frame id before presentation 2021-06-01 18:31:29 +02:00
Joshua Ashton
e64a8ee61a [d3d11] Bump frame id before presentation 2021-06-01 18:31:29 +02:00
Joshua Ashton
fcb7639106 [d3d9] Synchronize frame latency on latency change 2021-06-01 18:16:35 +02:00
Joshua Ashton
787de33022 [d3d9] Sync frame latency after presentation 2021-06-01 18:16:35 +02:00
Joshua Ashton
f98a45b305 [d3d11] Sync frame latency after presentation 2021-06-01 18:16:35 +02:00
Philip Rebohle
0fe8f2e40c
[vulkan] Acquire next image immediately after presentation
vkAcquireNextImageKHR is a blocking call, so doing this immediately after
presentation may reduce the amount of time that passes between the application
requesing presentation and presentation actually happening on the Vulkan device.

Idea based on PR #2075.
2021-06-01 04:52:09 +02:00
Philip Rebohle
0b88d0deab
[vulkan] Remove getSyncSemaphores from presenter
Instead, return the semaphores in acquireNextImage.
2021-06-01 04:32:50 +02:00
Philip Rebohle
253884a8c7
[vulkan] Remove fence from presenter
We don't use these anywhere.
2021-06-01 03:51:16 +02:00
Philip Rebohle
0af7229b8e
[util] Restore display modes of all monitors in RestoreMonitorDisplayMode
Fixes #2064.
2021-06-01 01:48:12 +02:00
Philip Rebohle
383cde2051
[d3d11] Allow creation of render target views for planar images 2021-05-30 19:42:44 +02:00
Philip Rebohle
01051bac99
[d3d11] Allow creation of unordered access views for planar images 2021-05-30 19:42:44 +02:00
Philip Rebohle
6d72bc94f4
[d3d11] Allow creation of shader resource views for planar images 2021-05-30 19:42:44 +02:00
Philip Rebohle
2740030fca
[d3d11] Support video processor output views in ClearView 2021-05-30 19:42:44 +02:00
Philip Rebohle
b04721f9a2
[d3d11] Use staging buffer for MapImage on deferred contexts 2021-05-30 19:42:44 +02:00
Philip Rebohle
ff9d6e3226
[d3d11] Use staging buffer and copyBufferToImage for UpdateSubresource
Reduces number of copies and also fixes problems with multi-plane formats.
2021-05-30 19:42:44 +02:00
Philip Rebohle
e749a4a4ac
[d3d11] Create shadow copy of video input images if sampled bit is not set
This can happen with RGB input views since not having any bind flags set
is legal for video input views, and SHADER_RESOURCE is actually explicitly
disallowed, but we don't always want to set sampled bit for those resources.
2021-05-30 19:42:44 +02:00
Philip Rebohle
3c22f4066b
[d3d11] Lock context in video context entry points 2021-05-30 19:42:44 +02:00
Philip Rebohle
25607a0692
[d3d11] Report video processor capabilities for image formats 2021-05-30 19:42:44 +02:00
Philip Rebohle
6d9da5a8d7
[d3d11] Don't use MAP_MODE_DIRECT for multi-plane images 2021-05-30 19:42:44 +02:00
Philip Rebohle
01236fbd84
[d3d11] Use correct method to clear multi-plane images 2021-05-30 19:42:44 +02:00
Philip Rebohle
ee30acf120
[d3d11] Use new packImageData for initializing mapped image buffers 2021-05-30 19:42:44 +02:00
Philip Rebohle
7184b75f8f
[d3d11] Use GetSubresourceLayout for image maps on the immediate context 2021-05-30 19:42:44 +02:00
Philip Rebohle
1b296f8338
[d3d11] Introduce GetSubresourceLayout 2021-05-30 19:42:44 +02:00
Philip Rebohle
e87aa08fd2
[d3d11] Implement basic video processor blitting 2021-05-30 19:42:43 +02:00
Philip Rebohle
969ac59667
[d3d11] Add ID3D11VideoContext stub 2021-05-30 19:42:43 +02:00
Philip Rebohle
1df26a3605
[d3d11] Implement video processor views 2021-05-30 19:42:43 +02:00
Philip Rebohle
09cf2cd11e
[d3d11] Add ID3D11VideoProcessor stub 2021-05-30 19:42:43 +02:00
Philip Rebohle
bdb7eef874
[d3d11] Add ID3D11VideoProcessorEnumerator stub 2021-05-30 19:42:43 +02:00
Philip Rebohle
1eaf2545c3
[d3d11] Add ID3D11VideoDevice stub 2021-05-30 19:42:43 +02:00
Philip Rebohle
e988895e51
[d3d11] Set mutable and extended usage bits for multi-plane images 2021-05-30 19:42:43 +02:00
Philip Rebohle
2764f4abb5
[dxgi] Add format mapping for DXGI_FORMAT_AYUV 2021-05-30 19:42:43 +02:00
Philip Rebohle
d859361a37
[dxgi] Add format mapping for DXGI_FORMAT_YUY2
And fix some existing 422 mappings.
2021-05-30 19:42:43 +02:00
Philip Rebohle
9b236078c2
[dxgi] Add format mapping for DXGI_FORMAT_NV12 and DXGI_FORMAT_420_OPAQUE 2021-05-30 19:42:43 +02:00
Philip Rebohle
8116927ec6
[dxvk] Introduce new version of packImageData 2021-05-30 19:42:43 +02:00
Philip Rebohle
4630bbc427
[dxvk] Support multi-plane formats in updateImage 2021-05-30 19:42:43 +02:00
Philip Rebohle
55a67988b2
[dxvk] Support multi-plane formats in computeImageSize 2021-05-30 19:42:43 +02:00
Philip Rebohle
6462174c13
[dxvk] Support multi-plane formats in copyImageToBuffer 2021-05-30 19:42:43 +02:00
Philip Rebohle
a660b35f6e
[dxvk] Support multi-plane formats in clearCompressedColorImage 2021-05-30 19:42:43 +02:00
Philip Rebohle
ed57019e13
[dxvk] Support multi-plane formats in copyImage 2021-05-30 19:42:43 +02:00
Philip Rebohle
41e28cb280
[dxvk] Support multi-plane formats in uploadImage 2021-05-30 19:42:43 +02:00
Philip Rebohle
86542248df
[dxvk] Support multi-plane formats in copyBufferToImage 2021-05-30 19:42:43 +02:00
Philip Rebohle
cd2ea98670
[dxvk] Add helper functions to deal with plane aspects 2021-05-30 19:42:43 +02:00
Philip Rebohle
1d6da6f83e
[dxvk] Add format definition for VK_FORMAT_G8_B8R8_2PLANE_420_UNORM 2021-05-30 19:42:43 +02:00
Philip Rebohle
0f5e126735
[dxvk] Introduce flushSharedImages
Fixes problems with images not being cleared prior to presentation
if the clear is the last command issued in the frame.
2021-05-30 19:42:43 +02:00
Philip Rebohle
a1f3f6c971
[dxbc] Remove old RADV/LLVM workaround for early discard
We have Demote now, and ACO is the default.
2021-05-27 00:40:59 +02:00
Philip Rebohle
94674ac45e [dxvk] Skip CPU adapters if GPUs are present
Because some games try (and fail) to run on Lavapipe despite it already
being the lowest priority device in the list.
2021-05-21 22:55:54 +02:00
Joshua Ashton
c51080068e [dxgi] Handle DXGI_PRESENT_TEST and failures in GetFrameStatistics 2021-05-20 23:02:07 +01:00
Philip Rebohle
401edc53fe [dxgi] Show warning in DxgiOutput::GetFrameStatistics 2021-05-20 22:27:36 +01:00
Philip Rebohle
db3654a07f [dxgi] Implement present count and frame statistics for swap chains 2021-05-20 22:27:36 +01:00
Joshua Ashton
0520ce9448
[d3d9] Treat largest element in Stream 0 as vertex decl size
Closes #2059
2021-05-13 01:32:56 +01:00
orbea
b84a03b4d4 [util] Enable d3d9.deferSurfaceCreation for Nights of Azure 2021-05-07 22:15:58 +01:00
Joshua Ashton
f0c1e89443 [d3d9] Handle zero-sized draws
These return S_OK, because ofc they do.
2021-05-05 19:25:46 +01:00
Joshua Ashton
0f52c85d21 [d3d9] Account for vertex declaration size for UP draws
The stride may not give us the full picture here as the stride
may not encompass the vertex declaration entirely.

Consider a vertex declaration of size 20, and a stride of 12,
we may not have covered the whole range of space the draw wants with
VertexCount * Stride.

Some games such as FF13 Lightning Returns have two float3s in the vertex decl
and draw two triangles with the last float being out of bounds. This causes
the whole vertex element to be set to 0 on NVIDIA which breaks their fullscreen passes.

Instead, take (VertexCount - 1) * Stride + VertexDeclSize for the buffer size
and pad with 0s outside of the VertexCount * Stride range.

Closes: #2046
Closes: #1908
2021-05-05 19:25:46 +01:00
Joshua Ashton
4a4b96611d
[d3d9] Only log WaitForVBlank stub once 2021-04-30 19:33:24 +01:00
Joshua Ashton
a980282ebe
[util] Increase constants for TrackMania Forever
Bump this to 256.

Fixes rendering issues.

Closes: #1910
2021-04-30 18:51:09 +01:00
Joshua Ashton
54d3ad1295
[util] Enable d3d9.memoryTrackTest for Kohan II
Closes: #2030
2021-04-30 18:49:39 +01:00
Robin Kertels
525fd53bbc [d3d9] Fix FlushBuffer
Use stored mapped slice and use correct dst offset.
2021-04-23 18:06:29 +01:00