Commit Graph

2463 Commits

Author SHA1 Message Date
Philip Rebohle 9fdd7bf789
[meta] Release 1.3.2 2019-08-05 20:38:22 +02:00
Philip Rebohle bc0537df37 [d3d11] Remove d3d11.asyncPresent option 2019-08-04 21:49:55 +02:00
Philip Rebohle a558f82b5f [dxvk] Implement asynchronous presentation option in the backend 2019-08-04 21:49:55 +02:00
Philip Rebohle 77fde83479 [dxvk] Move some code to where it makes more sense 2019-08-04 21:37:26 +02:00
Philip Rebohle 6b2f4f93cc [d3d11] Fix incorrect tracking of mapped image subresources
When returnig DXGI_ERROR_WAS_STILL_DRAWING, we should not mark
the subresource as mapped, and instead ignore subsequent calls
to Unmap.
2019-08-03 19:11:19 +02:00
Philip Rebohle 140a2c1017 Revert "[d3d11] Return error when mapping an already mapped image"
This reverts commit 1cc531eaf8.

Even though an FFXIV apitrace clearly indicates that mapping an
already mapped subresource returns E_OUTOFMEMORY in that game,
this doesn't always seem to be correct behaviour.

Fixes #1148, #1149.
2019-08-03 19:08:22 +02:00
Philip Rebohle 02d92210ad
[dxvk] Avoid redundant descriptor set updates when binding buffers (v2)
We need to check not just the buffer object but also the length of the
bound buffer range, since this information will be written into the
descriptor and cannot be changed via dynamic offsets.

Fixes: f501ebc ('[dxvk] Avoid redundant descriptor set updates when binding buffers')
2019-08-01 21:30:27 +02:00
Philip Rebohle af15d85baa
[dxvk] Add config option to enable the HUD 2019-08-01 12:37:55 +02:00
Philip Rebohle 4fd41f8550
[dxvk] Don't allow common objects to be reference-counted 2019-07-30 20:06:59 +02:00
Philip Rebohle 65c1e58bd9
[dxvk] Use DxvkObjects to create and pass around common objects 2019-07-30 20:00:38 +02:00
Philip Rebohle 35679d2ba7
[dxvk] Add class that bundles objects shared between device and context
Uses lazy initialization for various meta objects.
2019-07-30 20:00:38 +02:00
Philip Rebohle cfd7033e40
[dxvk] Pass DxvkDevice to DxvkRenderPassPool constructor 2019-07-30 20:00:38 +02:00
Philip Rebohle e12103121f
[dxvk] Pass DxvkDevice to DxvkEventPool constructor 2019-07-30 20:00:38 +02:00
Philip Rebohle 40028a5b8c
[dxvk] Pass DxvkDevice to DxvkMetaClearObjects constructor 2019-07-30 20:00:38 +02:00
Philip Rebohle 6a58c432ec
[dxvk] Pass DxvkDevice to DxvkMetaPackObjects constructor 2019-07-30 20:00:38 +02:00
Philip Rebohle 9a2da555c0
[util] Add helper for lazy initialization
a
2019-07-30 20:00:35 +02:00
Philip Rebohle 23379b6b9c
[dxvk] Check render pass before pipeline state during pipeline lookup
Checking one pointer is a bit cheaper than comparing a 1600 byte struct.
2019-07-30 16:19:16 +02:00
Philip Rebohle c020ffc31e
[meta] Remove old issue template 2019-07-30 16:11:37 +02:00
Philip Rebohle 797991702d Update issue templates 2019-07-30 16:11:18 +02:00
Philip Rebohle a7666aad82
[dxvk] Refactor the way render passes to pipeline compiler methods 2019-07-30 13:17:56 +02:00
Philip Rebohle 13bc3df92f
[dxvk] Refactor render pass objects to not use reference counting
Like pipeline objects, we keep these around anyway so there's no
reason to add ref count overhead. Also use a hash map to perform
the lookup.
2019-07-30 13:13:02 +02:00
Philip Rebohle d01b6baf38
[dxvk] Introduce compilePipeline method to Dxvk*Pipeline classes
Decouples the act of synchronously retrieving a handle
from asynchronously compiling the pipeline.
2019-07-30 12:14:52 +02:00
Philip Rebohle 3dc33c64a9
[dxvk] Introduce DxvkComputePipelineInstance
Same as the graphics pipeline equivalent.
2019-07-30 11:07:07 +02:00
Philip Rebohle 20b0cbdfb6
[dxvk] Rename compilePipeline -> createPipeline
More in line with Vulkan naming.
2019-07-30 11:06:25 +02:00
Philip Rebohle 6ab074c95b
[dxbc] Only use atomic append/consume optimization in compute shaders
- For fragment shaders, this isn't safe since ballots include helper invocations
- For vertex shaders, if drivers don't support subgroup operations in those
  stages, we don't want it to affect the performance of compute shadres.
2019-07-26 14:07:39 +02:00
Philip Rebohle dfe2922136
[dxvk] Fix partial clears for mismatched framebuffer attachment sizes
Fixes an issue in Borderlands: The Pre-Sequel, which binds a 512x512
color attachment and a full-screen depth buffer at the same time and
then attempts to clear the depth buffer.
2019-07-24 23:46:02 +02:00
Philip Rebohle 9c5102e257
[dxvk] Don't duplicate geometry shader system value outputs
Fixes #1121. The basic idea here is that all built-ins that can be
written by the GS will be consumed as built-ins by the FS anyway,
so we do not need to keep the o# variable around.
2019-07-24 18:18:20 +02:00
Philip Rebohle eaa41eb76c
[dxvk] Don't use reference counting for pipeline objects
Again not necessary since these objects are persistent.
Eliminates refcount overhead of pipeline lookups entirely.
2019-07-23 13:15:06 +02:00
Philip Rebohle 8cd13cc5bd
[dxvk] Use shader key structs directly for pipeline lookups
Removes some overhead and unnecessary ref count changes on shaders.
2019-07-23 13:00:04 +02:00
Philip Rebohle 8d4996bcda
[dxvk] Use shader key structs to store shaders in DxvkPipeline objects
Mostly a code cleanup to make constructing these objects a bit easier.
2019-07-23 12:48:11 +02:00
Philip Rebohle 604e89b97a
[dxvk] Rename Dxvk*PipelineKey -> Dxvk*PipelineShaders 2019-07-23 12:41:09 +02:00
Philip Rebohle 70294aac44
[dxvk] Disable resource tracking for DxvkPipeline objects
This isn't necessary at all since these objects are persistent.
2019-07-23 12:34:48 +02:00
Philip Rebohle 00cf2a20a3
[d3d11] Don't allow the creation of buffers with a size of zero 2019-07-21 20:47:42 +02:00
Philip Rebohle f5cec978c8
[meta] Release 1.3.1 2019-07-20 20:33:19 +02:00
Philip Rebohle c89bec5abd
[dxvk] Don't log submission errors on presentation
Makes no sense and only leads to confusion.
2019-07-20 20:25:18 +02:00
Philip Rebohle d9c0940734
[meta] Update README 2019-07-19 00:42:37 +02:00
Philip Rebohle 3f4c9a3bb5
[hud] Add GPU load monitor 2019-07-18 23:23:36 +02:00
Philip Rebohle 5bb20cceb6
[dxvk] Add GPU idle time to stat counters 2019-07-18 23:23:12 +02:00
Philip Rebohle 3d86ecd94d
[dxvk] Estimate GPU idle time based on cleanup thread activity
We'll assume that GPU idle time == time spent waiting for new
command lists to be added to the queue of the cleanup thread.
This isn't entirely accurate, especially if CPU load is very
high, but should be good enough.
2019-07-18 22:54:11 +02:00
Philip Rebohle 02d917c680
[dxvk] Fix meta copy operation for mipmapped images 2019-07-18 19:52:24 +02:00
Philip Rebohle fb9ea958a1
[dxvk] Fix meta copy operation for 1D images 2019-07-18 19:50:57 +02:00
Philip Rebohle 2905ba82d2
[dxvk] Remove old meta vertex and geometry shaders 2019-07-18 18:59:11 +02:00
Philip Rebohle 8889d6402e
[dxvk] Use new fullscreen shaders for mip gen operations 2019-07-18 18:57:18 +02:00
Philip Rebohle e91efb6dc2
[dxvk] Use new fullscreen shaders for meta resolve operations 2019-07-18 18:57:17 +02:00
Philip Rebohle 792f15680a
[dxvk] Use new fullscreen shaders for meta copy operations 2019-07-18 18:57:17 +02:00
Philip Rebohle 07408bcdcc
[dxvk] Add new vertex and geometry shaders for fullscreen passes
These new shaders are aimed to be used by all meta operations
and will work without geometry shaders on supported hardware.
2019-07-18 18:57:15 +02:00
Philip Rebohle 92d6f26130
[d3d11] Always enable depth-stencil attachment usage for depth-stencil images
Allows us to use framebuffer copies even if the game itself does not
intend to render to the image.

Improves performance in Final Fantasy XIV on RADV.
2019-07-18 17:26:02 +02:00
Philip Rebohle 8a9cee903b
[dxvk] Use render pass copy for depth-stencil images if beneficial 2019-07-18 17:26:02 +02:00
Philip Rebohle a08f9d0897
[dxvk] Implement device- and driver-specific performance hints
These are meant to be read by the DxvkContext in order to choose
a fast path for certasin operations.
2019-07-18 17:25:56 +02:00
Philip Rebohle e611dff45e
[dxvk] Support depth-stencil meta-copy operations 2019-07-18 17:25:56 +02:00