Philip Rebohle
81935e1684
[d3d11] Implement ID3D11ShaderResourceView1
2019-09-16 14:27:44 +02:00
Philip Rebohle
345f8694e8
[d3d11] Implement ID3D11RenderTargetView1
2019-09-16 14:27:44 +02:00
Philip Rebohle
0758f14a35
[d3d11] Implement ID3D11Texture2D1 and ID3D11Texture3D1
2019-09-16 14:27:44 +02:00
Philip Rebohle
d9f409b92f
[d3d11] Implement ID3D11RasterizerState2
2019-09-16 13:41:31 +02:00
Philip Rebohle
f9d9307a28
[d3d11] Implement ID3D11DeviceContext4
2019-09-16 13:41:31 +02:00
Philip Rebohle
0599a82dee
[d3d11] Implement ID3D11DeviceContext3
2019-09-16 13:41:31 +02:00
Philip Rebohle
17a6c4168e
[dxbc] Implement stencil ref export from fragment shaders
...
This is an optional feature in D3D11.3, but easy enough to support.
2019-09-16 12:42:15 +02:00
Philip Rebohle
b7bc51c3bd
[d3d11] Use shaderStorageImageReadWithoutFormat for typed UAV loads
2019-09-16 12:42:15 +02:00
Philip Rebohle
7fae4a41e8
[d3d11] Add definitions for feature levels 12_0 and 12_1
...
Mostly useful for debugging as we're not going to support these
feature levels for now.
2019-09-16 12:42:14 +02:00
Philip Rebohle
51ff65fbc5
[d3d11] Implement D3D11.3 feature queries
2019-09-16 12:42:14 +02:00
Philip Rebohle
aad44458f7
[d3d11] Include D3D11.3 headers
2019-09-16 12:42:14 +02:00
Philip Rebohle
26afaba410
[dxbc] Implement MSAD4 instruction
...
Apparently we're required to support this for Direct3D 11.2+.
There are currently no known games that require this instruction.
2019-09-16 12:42:14 +02:00
Philip Rebohle
72a356fe01
[d3d11] Implement GetResourceTiling
...
When called on a regular resource, native D3D11 will zero
out the return values. We should match this behaviour.
2019-09-16 12:42:14 +02:00
Philip Rebohle
7ba7178d14
[d3d11] Implement ID3D11Device2
...
Adds some extra validation to resource creation so that
apps cannot accidentally create tiled resources.
2019-09-16 12:42:14 +02:00
Philip Rebohle
c1a7243811
[d3d11] Implement ID3D11DeviceContext2
...
We don't support tiled resources nor markers for now.
Marker support could be added through debug layers.
2019-09-16 12:42:14 +02:00
Philip Rebohle
6e28ab956d
[d3d11] Implement D3D11.2 feature queries
2019-09-16 12:42:14 +02:00
Philip Rebohle
d7476f3fb8
[d3d11] Include D3D11.2 headers
2019-09-16 12:42:14 +02:00
Philip Rebohle
f2d461ab5b
[d3d11] Prevent log spam from repeated Get/SetResourceMinLOD calls
2019-09-16 12:41:44 +02:00
Philip Rebohle
3e17ccfaaa
[d3d11] Implement missing D3D11_FEATURE_D3D9_OPTIONS feature query
2019-09-16 02:21:46 +02:00
Philip Rebohle
c852b6de34
[d3d11] Optimize viewport updates if there is only one single viewport
2019-09-13 14:38:51 +02:00
Philip Rebohle
160b684d5a
[d3d11] Add range check for scissors and make failing it unlikely
2019-09-13 11:49:00 +02:00
Philip Rebohle
e2808309a3
[metæ] Release 1.3.4
2019-09-08 21:03:46 +02:00
Philip Rebohle
f57c021ab5
[util] Enable d3d11.allowMapFlagNoWait for Control
2019-09-08 10:35:57 +02:00
Philip Rebohle
b8888ffe6a
[d3d11] Don't create linearly tiled compressed images
...
Quantum Break uses this for texture uploads, which causes unnecessary
GPU synchronization and queue submissions when doing texture uploads.
2019-09-07 20:16:16 +02:00
orbea
c57e63f7d2
Work around build failure with winegcc/clang. ( #1184 )
...
Fixes #1182 .
2019-09-05 18:01:33 +02:00
Philip Rebohle
b0552751ad
[d3d11] Fix incorrect AddRef -> Release
...
Spotted by @jp7677
2019-08-29 21:24:47 +02:00
Philip Rebohle
2776ef43a3
[meta] Release 1.3.3
2019-08-29 20:56:47 +02:00
Philip Rebohle
30d19cd0f2
[d3d11] Rename some hazard tracking methods for clarity
2019-08-29 19:10:53 +02:00
Philip Rebohle
6be124e2cd
[d3d11] Check for conflicts withing RTV and UAV lists upon binding them
2019-08-29 19:10:53 +02:00
Philip Rebohle
e07ef1ec40
[d3d11] Resolve pipeline hazards when binding render targets
2019-08-29 19:10:53 +02:00
Philip Rebohle
a36f056572
[d3d11] Resolve pipeline hazards when binding compute shader UAVs
2019-08-29 19:10:53 +02:00
Philip Rebohle
c8c781c88b
[d3d11] Add check whether a viewed resource has a given bind flag
2019-08-29 19:10:50 +02:00
Philip Rebohle
afc8e4c29d
[d3d11] Filter redundant OMSetRenderTargets calls
...
Since rebinding render targets is a rather expensive
operation, we should avoid doing so whenever possible.
Affects Resident Evil 2 and Devil May Cry 5.
2019-08-26 23:59:08 +02:00
Philip Rebohle
4789790087
[d3d11] Remove outdated comment
...
We actually handle this properly now.
2019-08-26 23:43:47 +02:00
Philip Rebohle
5756e5c921
[d3d11] Check for shader resource view hazards
...
Fixes incorrect behaviour in games that try to use a currently bound
UAV or render target as a shader resource at the same time.
Fixes visual artifacts in Shining Resonance Refrain on AMD hardware.
2019-08-26 23:43:47 +02:00
Philip Rebohle
137589d755
[d3d11] Add state to track potentially hazardous bound SRVs
2019-08-26 23:29:01 +02:00
Philip Rebohle
4064dd3737
[d3d11] Add bound compute shader UAV mask
...
Will be used for efficient hazard tracking.
2019-08-26 23:29:01 +02:00
Philip Rebohle
8208cedfa9
[d3d11] Add common view info struct to all view types
...
Will be used for hazard detection.
2019-08-26 23:29:01 +02:00
Philip Rebohle
5ae5053a2a
[d3d11] Remove templated SetUnorderedAccessViews
...
Not needed because the CS and OM paths are separate anyway.
2019-08-26 23:29:01 +02:00
Philip Rebohle
08e3500beb
[d3d11] Don't use .at()
2019-08-26 23:29:01 +02:00
Philip Rebohle
473025a93b
[dxvk] Add function to find set bits in binding mask
2019-08-26 23:29:01 +02:00
Philip Rebohle
d2d19b0dec
[dxvk] Add function to set bind mask bit to a given value
2019-08-26 23:29:00 +02:00
Jacek Caban
1981140257
[dxvk] Explicitly include unordered_map in dxvk_renderpass.h
...
When using libstdc++, it's somehow implicitly included, but it's not the case for libc++.
2019-08-26 20:07:58 +02:00
Joshua Ashton
8e54477c2a
[util] Use R string literals for app compat regexes
2019-08-24 21:32:51 +02:00
Philip Rebohle
54ca5900e1
[util] Use regular expressions on full exe path to match app profiles
...
This allows us to detect applications with non-unique executable names
or with variable executable names more reliably, and also allows us to
merge profiles for games that have multiple known exe names.
The matching is also no longer case-sensitive.
2019-08-18 17:49:22 +02:00
Philip Rebohle
c934333a5c
[util] Add method to retrieve full exe path
2019-08-17 11:50:39 +02:00
Philip Rebohle
d38607c9be
[dxvk] Implement depth-stencil resolve
2019-08-13 15:16:09 +02:00
Philip Rebohle
e54dfab471
[dxvk] Support depth-stencil resolve using VK_KHR_depth_stencil_resolve
2019-08-13 15:16:09 +02:00
Philip Rebohle
7e95493fba
[dxvk] Support shader-based depth-stencil resolve
...
Requires VK_EXT_shader_stencil_export for stencil resolves.
2019-08-13 15:16:00 +02:00
Philip Rebohle
a516ca5b85
[dxvk] Add meta shaders for depth-stencil resolve
2019-08-13 14:37:50 +02:00
Philip Rebohle
acf0001fd1
[dxvk] Make device properties accessible from the device
2019-08-13 14:37:50 +02:00
Philip Rebohle
2f15cb7602
[dxvk] Enable VK_KHR_depth_stencil_resolve if available
2019-08-13 12:53:31 +02:00
Philip Rebohle
d127c08487
[dxvk] Enable VK_KHR_create_renderpass2 if available
2019-08-13 12:52:54 +02:00
Philip Rebohle
1999ca9dd4
[util] Set d3d11.dcSingleUseMode=False for SteamVR perf test
...
*Actually* fixes #1160 .
2019-08-10 11:21:47 +02:00
Philip Rebohle
4cce07ccd9
[d3d11] Update resources mapped on deferred contexts in Map()
...
Apparently it is legal to use mapped buffers on deferred contexts
in D3D11, so we have to execute our update code immediately.
Fixes #1160 .
2019-08-10 11:11:44 +02:00
Joshua Ashton
d579f07238
[util] Fix compiling with clang/clang-cl
2019-08-07 06:08:54 +02:00
Philip Rebohle
590834660e
Revert "[dxvk] Use vkCmdUpdateBuffer to clear tiny buffers"
...
This reverts commit 311661e404
.
This once fixed Far Cry Primal, but now for some reason it
breaks Far Cry Primal. Fixes #1155 .
2019-08-07 05:41:33 +02:00
Philip Rebohle
bd40b05720
[d3d11] Recreate swap chain immediately after synchronous present fails
...
Fully restores pre-1.3 behaviour in case async present is disabled.
Apparently this is necessary to avoid hangs on Nvidia for some reason.
2019-08-06 09:11:04 +02:00
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
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
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