Philip Rebohle
d96c22be05
[d3d11] Do not synchronize with CS thread in GetData
...
Instead, use a counter to determine whether there are any
pending operation for the query on the CS thread.
2019-11-02 17:53:17 +01:00
Philip Rebohle
0924bb469c
[d3d11] Move query state tracking to immediate context implementation
2019-11-02 17:53:17 +01:00
Philip Rebohle
be5dc234c1
[d3d11] Move common Begin/End implementation to immediate context
2019-11-02 13:48:03 +01:00
Philip Rebohle
63dbca82e7
[d3d11] Track used queries in deferred contexts and command lists
2019-11-02 13:48:03 +01:00
Philip Rebohle
0671007437
[d3d11] Only execute Begin for scoped queries
2019-11-02 13:48:03 +01:00
Philip Rebohle
1780c549e5
[d3d11] Only add storage buffer usage flag to constant buffers if needed
...
Otherwise, the backend optimization for dynamic uniform buffers will not
kick in.
2019-10-30 10:58:05 +01:00
Philip Rebohle
e95bc3256f
[d3d11] Move handling of constantBufferRangeCheck option to D3D11Options
2019-10-30 10:57:36 +01:00
Philip Rebohle
9e084e63ca
[d3d11] Remove useless members from D3D11DeferredContextMapEntry
2019-10-30 00:44:17 +01:00
Philip Rebohle
3d213efe53
[dxbc] Use SSBOs for dynamically indexed constant buffers if needed
...
SSBOs are tightly bound-checked on all Nvidia GPUs, so this allows for
a more accurate workaround for games relying on OOB access behaviour.
2019-10-28 15:42:46 +01:00
Philip Rebohle
a2b629415e
Revert "[d3d11] Fix ref counting for D3D11CommandList"
...
This reverts commit 55bae45915
.
2019-10-27 11:10:49 +01:00
Philip Rebohle
fc0ede0657
Revert "[d3d11] Recycle command lists from deferred contexts"
...
This reverts commit 4e3da45fde
.
For some reason this caused crashes.
2019-10-27 11:00:59 +01:00
Philip Rebohle
20f79a754b
[d3d11] Adjust buffer memory flags if apitrace is attached
...
Using cached memory speeds up apitrace significantly as it
reads back mapped memory regions.
2019-10-26 22:56:47 +02:00
Philip Rebohle
0683f4f2c0
[d3d11] Remove D3D11 counter buffer class
2019-10-26 17:44:29 +02:00
Philip Rebohle
e967c52ff7
[d3d11] Allocate predicate buffer per query
...
Allows us to get rid of the D3D11 counter buffer class.
2019-10-26 17:44:29 +02:00
Philip Rebohle
09f507c284
[d3d11] Allocate xfb counter buffer per buffer
...
Same idea as with UAV counters, allows for more efficient updates.
2019-10-26 17:44:29 +02:00
Philip Rebohle
191c9644af
[d3d11] Allocate counter buffer per UAV
...
Might slightly increase memory overhead, however this allows
the backend to execute UAV counter updates more efficiently.
2019-10-26 17:44:29 +02:00
Philip Rebohle
4e3da45fde
[d3d11] Recycle command lists from deferred contexts
...
Can save a few memory allocations and deallocations at runtime.
2019-10-25 23:09:21 +02:00
Philip Rebohle
55bae45915
[d3d11] Fix ref counting for D3D11CommandList
2019-10-25 21:37:18 +02:00
Philip Rebohle
41f04ffb61
[d3d11] Fix incorrect AddRef return value
2019-10-25 21:36:21 +02:00
Philip Rebohle
f9c2e43ffc
[d3d11] Don't set HOST pipeline stage and access flags for resources
...
The backend does not and will not use that information at all.
2019-10-24 16:57:06 +02:00
Philip Rebohle
ee77afb6af
[d3d11] Validate shader module capabilities
...
Only create a shader module if the device actually supports
the required features. Apparently this is needed for some
Unity Engine games.
2019-10-21 12:10:05 +02:00
Philip Rebohle
ddf010479d
[d3d11] Refactor shader module creation
2019-10-21 12:09:53 +02:00
Philip Rebohle
d899bd2d76
[d3d11] Remove obsolete DefaultDesc methods from state classes
2019-10-14 05:28:46 +02:00
Philip Rebohle
68c257fc0d
[d3d11] Fix ref counting for state objects bound to a context
...
Using raw pointers is safe here since the objects never get destroyed
during the lifetime of the context.
2019-10-14 02:06:33 +02:00
Philip Rebohle
1282c2b99e
[d3d11] Fix immediate context reference counting
...
Fixes various wine test failures.
2019-10-14 01:56:34 +02:00
Philip Rebohle
4d0cc3e24e
[d3d11] Don't subclass state objects from ComObject
...
These override reference counting, so we shouldn't use ComObject.
2019-10-14 01:44:37 +02:00
Philip Rebohle
c5c43fb2a4
[d3d11] Allow choosing type wrapper for D3D11DeviceChild base class
...
Allows subclasses to replace ComObject with something else.
2019-10-14 01:44:27 +02:00
Philip Rebohle
dd9a55ecc0
[util] Don't allow multiple inheritance for COM objects
...
This never made any sense whatsoever in the first place.
2019-10-14 01:42:24 +02:00
Philip Rebohle
c281e76bac
[d3d11] Don't get private references for state objects
...
Otherwise we will end up deleting the objects even though they
aren't explicitly heap-allocated. Whoops...
2019-10-14 01:39:54 +02:00
Philip Rebohle
9c6209fbf5
[d3d11] Fix reference counting for state objects
...
Fixes various wine test failures. Also, state objects are now
allocated in the hash map itself rather than a wrapped COM object.
2019-10-14 01:27:59 +02:00
Philip Rebohle
accbc8828c
[d3d11] Return error if no desc is provided for Create*State methods
...
Fixes wine test failures.
2019-10-14 01:08:31 +02:00
Philip Rebohle
bd58f1a913
[d3d11] Don't sync CS thread if resource to map is already in use
...
SynchronizeCsThread can only update the in-use state from available
to in-use, so doing this on a resource that is already in-use is not
necessary. May improve performance in combination with DO_NOT_WAIT.
2019-10-14 00:14:00 +02:00
Philip Rebohle
12f0f8b13f
[d3d11] Don't use a state object for default blend state
2019-10-13 23:15:23 +02:00
Philip Rebohle
c30fd8fb97
[d3d11] Don't use a state object for default depth-stencil state
2019-10-13 23:15:23 +02:00
Philip Rebohle
b0231403fe
[d3d11] Don't use a state object for default rasterizer state
2019-10-13 23:15:23 +02:00
Philip Rebohle
a89c662984
[d3d11] Introduce ResetState and use it for ClearState
...
ClearState gets used a lot in games that use deferred
contexts, so we should make sure it's fast. Since we
apply default state everywhere, there is no need to
perform any expensive RestoreState operations.
Reduces the amount of time spent on ClearState on the
CS thread by ~40%, and by ~90% on the calling thread.
2019-10-13 23:15:23 +02:00
Philip Rebohle
8446c28de1
[dxvk] Remove spill parameter from bindRenderTargets
...
No longer needed.
2019-10-13 01:44:31 +02:00
Philip Rebohle
102a18060e
[d3d11] Don't spill render pass when rebinding render targets
...
The backend handles this now, so it's no longer necessary.
2019-10-13 01:44:31 +02:00
Philip Rebohle
3a39027987
[d3d11] Add more rigid validation for buffer creation
...
Fixes several wine test failures.
2019-10-11 17:32:46 +02:00
Philip Rebohle
762df0bedf
[d3d11] Change ValidateBufferProperties to NormalizeBufferProperties
2019-10-11 17:23:02 +02:00
Philip Rebohle
127e037627
[d3d11] Validate texture array size
...
Fixes a wine test failure and possibly prevents invalid Vulkan API usage.
2019-10-11 17:11:01 +02:00
Philip Rebohle
554b77b47a
[d3d11] Initialize feature level to zero in D3D11CreateDevice
...
Fixes a wine test failure.
2019-10-11 17:01:23 +02:00
Joshua Ashton
19fa1c405c
[d3d10] Remove unused copies of device ptr in D3D10 wrappers
...
Silences a warning when building with Clang, and removes duplicate unused data.
2019-10-06 00:28:19 +02:00
Philip Rebohle
50349d1bfe
[d3d11] Add missing break; in CreateSurface
...
Found by a frog. Initial testing did not check return values.
2019-10-02 12:06:51 +02:00
Philip Rebohle
8f00af556e
[d3d11] Implement CreateSurface for D3D11DXGIDevice
...
Documentation for this method is really poor so we'll just try to
make pretty much everything work. Fixes various wine tests.
2019-10-02 02:29:06 +02:00
Philip Rebohle
8d8f4b9200
[d3d11] Add support for DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE
...
Trivial since we treat back buffers as regular D3D textures.
Fixes a wine test failure.
2019-10-01 23:37:54 +02:00
Philip Rebohle
aa35cdbb18
[d3d11] Fix return code on swap chain creation failure
...
Fixes a wine test failure.
2019-10-01 23:37:54 +02:00
Philip Rebohle
0f15c60192
[d3d11] Use private reference to D3D11 device in D3D11SwapChain
...
Fixes a wine test failure.
2019-10-01 22:26:07 +02:00
Philip Rebohle
0d1048fa87
[d3d11] Fix error handling in SetMaximumFrameLatency
...
Fixes a wine test failure.
2019-10-01 22:12:23 +02:00
Philip Rebohle
187748e4d3
[d3d11] Add a comment explaining ID3D11Predicate/ID3D11Query hack
2019-09-25 22:18:08 +02:00
Philip Rebohle
53fe3423e2
[d3d11] Fix GetPredication
2019-09-25 20:55:43 +02:00
Philip Rebohle
f498e742ec
[d3d11] Handle D3D_PRIMITIVE_TOPOLOGY_UNDEFINED correctly
...
Luckily, all known cases where games use UNDEFINED topology fail
validation elsewhere due to missing vertex shaders, but we should
handle this correctly anyway.
2019-09-23 15:20:53 +02:00
Philip Rebohle
1fa8887c47
[d3d11] Return device lost errors in Present if necessary
2019-09-22 19:20:53 +02:00
Philip Rebohle
11b7b1f1a5
[d3d11] Implement GetDeviceRemovedReason
2019-09-22 19:07:48 +02:00
Philip Rebohle
92d1cf8ae0
[d3d11] Fix CheckFeatureSupport formatting and return code
2019-09-22 15:01:49 +02:00
Philip Rebohle
7514aa1ec8
[d3d11] Implement IDXGIDevice4
2019-09-20 18:06:34 +02:00
Philip Rebohle
7e7609cac0
Revert "[d3d11] Don't create linearly tiled compressed images"
...
This reverts commit b8888ffe6a
.
This is no longer beneficial since initialization of a
linear image does not stall Map anymore.
2019-09-20 05:59:54 +02:00
Philip Rebohle
e82c87dc52
[d3d11] Implement GetDC / ReleaseDC
2019-09-20 01:44:18 +02:00
Philip Rebohle
028633138a
[d3d11] Implement GDI surface
2019-09-20 01:44:18 +02:00
Philip Rebohle
c9a0f06ff4
[d3d11] Enable allowMapFlagNoWait by default
...
We still keep the option around so that in case of regressions,
users can check if disabling this option fixes their issue.
2019-09-20 01:44:02 +02:00
Philip Rebohle
e9fcf64a8c
[dxvk] Only wait for writes when mapping with D3D11_MAP_READ
2019-09-20 01:44:02 +02:00
Philip Rebohle
136ad3e4c9
[d3d11] Write to image memory directly in InitHostVisibleTexture
...
Avoids performing a potentially expensive copy or clear operation
on the GPU.
2019-09-20 01:44:01 +02:00
Philip Rebohle
ae4a5232aa
[d3d11] Use VK_IMAGE_LAYOUT_PREINITIALIZED for mapped images
...
This way we can directly write image data directly to the image
without having to do it on the GPU.
2019-09-20 01:44:01 +02:00
Philip Rebohle
48417c7d19
[d3d11] Implement DiscardView1
...
Basically just behave like DiscardView if no rects are passed to
the function, otherwise ignore the call since we can't discard
individual rectangles in any meaningful way.
2019-09-19 13:56:50 +02:00
Philip Rebohle
9e02b6b433
[dxgi] Rename IDXGIVkAdapter -> IDXGIDXVKAdapter
...
This interface exposes DXVK internals and cannot be used for
Vulkan interop. We shouldn't pretend like it could.
2019-09-18 14:07:13 +02:00
Philip Rebohle
bc853d0e48
[d3d11] Only use mapped buffer for images if bind flags are non-zero
...
We really shouldn't use the intermediate buffer for DYNAMIC images
that can only ever be used for copy commands, since the copies will
be redundant.
2019-09-18 13:15:22 +02:00
Philip Rebohle
abf89356cd
[d3d11] Report unified memory if all heaps are device-local
...
Together with mapping default resources, this may or may not
help performance in some applications on integrated graphics.
2019-09-17 23:52:02 +02:00
Philip Rebohle
518d06b9c2
[d3d11] Enable D3D11.3 MapOnDefaultTextures feature
2019-09-17 23:39:06 +02:00
Philip Rebohle
c59ab258a5
[d3d11] Implement ReadFromSubresource and WriteToSubresource
2019-09-17 23:39:06 +02:00
Philip Rebohle
e764f05a1a
[d3d11] Allow pMappedResource to be null when mapping images
...
This is required to implement mapping default textures correctly.
2019-09-17 23:39:06 +02:00
Philip Rebohle
6ce8450b12
[d3d11] Implement D3D11.2 MapOnDefaultBuffers feature
...
Basically just allocates the buffer on a host-visible memory
type, like DYNAMIC or STAGING buffers depending depending on
the CPU access flags.
2019-09-17 17:47:33 +02:00
Philip Rebohle
2cdbe2e6df
[d3d11] Move GetMemoryFlagsForUsage into D3D11Buffer
...
D3D11Buffer is the only user of this function and the code sharing
potential is limited. This allows us to implement the memory type
selection for buffers in one single place rather than two.
2019-09-17 17:21:10 +02:00
Philip Rebohle
dda89a075e
[d3d11] Report MapOnDefaultTextures feature as unsupported
...
Bad things can happen if we leave this undefined.
2019-09-17 14:21:19 +02:00
Philip Rebohle
2ef34a055d
[d3d11] Implement ID3D11Device5
2019-09-16 16:37:37 +02:00
Philip Rebohle
56daf44d4c
[d3d11] Implement ID3D11Device4
2019-09-16 16:26:18 +02:00
Philip Rebohle
3ba541fde6
[d3d11] Implement D3D11.4 feature queries
2019-09-16 16:22:52 +02:00
Philip Rebohle
6ab6b4a209
[d3d11] Include D3D11.4 headers
2019-09-16 16:14:47 +02:00
Philip Rebohle
fdf560150f
[d3d11] Implement ID3D11Device3
2019-09-16 16:13:34 +02:00
Philip Rebohle
b0f6655b92
[d3d11] Implement ID3D11Query1
2019-09-16 16:13:34 +02:00
Philip Rebohle
84c80a4aaf
[d3d11] Implement ID3D11UnorderedAccessView1
2019-09-16 16:13:34 +02:00
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
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
Philip Rebohle
b0552751ad
[d3d11] Fix incorrect AddRef -> Release
...
Spotted by @jp7677
2019-08-29 21:24: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
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
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
bc0537df37
[d3d11] Remove d3d11.asyncPresent option
2019-08-04 21:49:55 +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
00cf2a20a3
[d3d11] Don't allow the creation of buffers with a size of zero
2019-07-21 20:47:42 +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
f16ba4794b
[d3d11] Use unlikely() for some query code
...
This is a somewhat hot path in some games, so why not.
2019-07-17 20:35:00 +02:00
Philip Rebohle
c4b56b9d8d
[d3d11] Use private temporary references for queries
...
Like the previous commit, just with queries.
2019-07-17 20:16:19 +02:00
Philip Rebohle
7225674088
[d3d11] Use private temporary references for state objects
...
We really shouldn't be altering the application-visible ref
count when sending these objects to the CS thread.
2019-07-17 20:01:57 +02:00
Philip Rebohle
af8e1a3d47
[d3d11] Simplify ApplyPrimitiveTopology code
2019-07-17 15:54:59 +02:00
Philip Rebohle
3f30fbd098
[d3d11] Simplify BindIndexBuffer code
2019-07-17 14:41:00 +02:00
Philip Rebohle
b6c395c013
[dxvk] Don't track command count in CS chunks
...
We weren't using this at all, and it's not necessary
to check whether the chunk is empty either.
2019-07-17 12:52:25 +02:00
Philip Rebohle
11b7fc8914
[d3d11] Catch invalid ClearUnorderedAccessViewFloat calls
...
This method cannot be called on integer UAVs.
2019-07-17 11:47:42 +02:00
Philip Rebohle
b20ceec727
[d3d11] Handle integer formats in ClearRenderTargetView correctly
...
We're supposed to apply the same color conversion as in ClearView.
2019-07-17 11:47:42 +02:00
Philip Rebohle
ad8fdcac07
[dxvk] Don't mark queries as stalling if DONOTFLUSH is set
2019-07-16 01:19:02 +02:00
Philip Rebohle
03c6df56c1
[d3d11] Initialize subresourceLayers in the inner loop
...
Not doing so causes Dirt Rally to fail uploading some textures
properly for some extremely weird reason.
2019-07-13 23:39:58 +02:00
Philip Rebohle
7b34b8515b
[d3d11] Enable shaderDemoteToHelperInvocation feature
2019-07-11 19:33:17 +02:00
Robin Kertels
47f7333c18
[d3d11] Fix RSGetViewports and RSGetScissorRects behaviour
...
Fixes #1116 .
2019-07-08 13:14:42 +02:00
Philip Rebohle
15072afa1f
[d3d11] Use new signals as frame synchronization events
2019-07-08 00:16:03 +02:00
Philip Rebohle
c631953ab6
[d3d11] Don't immediately synchronize after present
...
This will actually enable asynchronous presentation.
Improves performance in Quake Champions.
2019-07-05 21:20:09 +02:00
Philip Rebohle
77db8158c8
[dxvk] Add option to toggle asynchronous presentation
2019-07-05 21:20:09 +02:00
Philip Rebohle
ed5c43a14d
[dxvk] Implement asynchronous presentation
...
Off-loads the vkQueuePresentKHR call to the queue submission thread
to avoid synchronization with that thread on a present call.
2019-07-05 15:11:59 +02:00
Philip Rebohle
1cc531eaf8
[d3d11] Return error when mapping an already mapped image
...
Final Fantasy XIV does this. Should avoid some unnecessary work.
2019-07-05 10:25:06 +02:00
Philip Rebohle
2f64f5b4e7
[dxvk] Check whether CS thread is busy before synchronizing with it
...
Reduces unnecessary locking overhead, which may be relevant if this
function gets called frequently by GetData or WaitForResource.
2019-07-04 21:37:17 +02:00
Philip Rebohle
67122d9246
[d3d11] Enable initial image uploads over SDMA
2019-06-29 01:53:43 +02:00
Philip Rebohle
9d902418c0
[d3d11] Enable initial buffer uploads over SDMA
2019-06-29 01:53:43 +02:00
Philip Rebohle
191bba660b
[dxvk] Provide way to access queue properties from device
2019-06-29 01:53:32 +02:00
Philip Rebohle
770ec2c4db
[dxvk] Get rid of array in present vertex shader
2019-06-29 01:34:16 +02:00
Philip Rebohle
42e61020e4
[d3d11] Remove unused SetRenderTargets method
2019-06-27 15:54:42 +02:00
Philip Rebohle
2148619f3c
[d3d11] Spill render pass when restoring context state as needed
2019-06-27 15:54:42 +02:00
Philip Rebohle
a704e6d27e
[d3d11] Fix UAV binding in OMSetRenderTargets{,AndUnorderedAccessViews}
...
Unlike for compute shaders, we're supposed to replace all UAV bindings
when binding render targets. We also should spill the render pass when
disabling UAV rendering to avoid read-after-write hazards.
Fixes a potential synchronization bug encountered in Devil May Cry 5.
2019-06-27 15:54:42 +02:00
Philip Rebohle
5728d10587
[d3d11] Copy initial texture data to mapped buffer, if available
...
Otherwise, if an application maps the image right after creating it,
we might end up reading garbage data or overriding the image data.
2019-06-25 14:22:47 +02:00
Philip Rebohle
4d4db6c683
[dxvk] Use void pointers for packImageData
...
Makes this function a bit less annoying to use.
2019-06-25 14:17:03 +02:00
Philip Rebohle
a41bd8c4a0
[d3d11] Further optimize constant buffer binding
...
Saves a few CPU cycles on the more common SetConstantBuffers method,
compared to SetConstantBuffers1.
2019-06-20 22:49:19 +02:00
Philip Rebohle
3141467c37
[d3d11] Template all functions that take ShaderStage as an argument
...
Basically what D9VK does. Doesn't seem to affect performance, but why not.
2019-06-20 22:09:02 +02:00
Philip Rebohle
684355dfca
[d3d11] Fix GetData parameter validation
...
We're supposed to return an error if a null pointer is
passed along with a non-zero DataSize. Fixes more wine
test failures.
2019-06-16 19:24:44 +02:00
Philip Rebohle
43389d8ef4
[d3d11] Implement timestamp disjoint queries
2019-06-16 17:14:39 +02:00
Philip Rebohle
1c718402f8
[d3d11] Use an array for query and event objects
...
We're going to need multiple queries to implement certain query types.
2019-06-16 17:14:24 +02:00
Philip Rebohle
c8a429b9e1
[d3d11] Fix CheckMultisampleQualityLevels return code
...
We're supposed to return E_FAIL for unsupported sample counts,
and not zero-initialize the returned quality level count if the
format is invalid. Fixes wine test failures.
2019-06-14 13:37:01 +02:00
Philip Rebohle
5a66da8ef8
[dxvk] Fix various issues in GetFormatSupportFlags
...
- Support DXGI_FORMAT_UNKNOWN for buffer resources
- Report D3D11_FORMAT_SUPPORT_CPU_LOCKABLE for all supported formats
- Report support for linear-only image formats properly
- Return E_FAIL in case the format is not supported
Fixes a crash in Planet Coaster (#1091 ).
2019-06-13 16:32:41 +02:00
Philip Rebohle
1bc0b51262
[d3d11] Implement IDXGISurface2 for ID3D11Texture1D
2019-06-13 04:37:35 +02:00
Philip Rebohle
586d0de7bb
[d3d11] Fix default blend factor
2019-06-13 04:15:23 +02:00
Philip Rebohle
089d47e02e
[d3d11] Fix WSize computation for UAV creation
2019-06-13 04:01:15 +02:00
Philip Rebohle
f02a5a7453
[d3d11] Don't create SRVs and UAVs with a size of 0
...
This is illegal and triggers invalid Vulkan usage.
2019-06-13 03:47:10 +02:00
Philip Rebohle
4ffddd1e40
[d3d11] Skip GenerateMips if mip gen flag is not set on resource
2019-06-13 03:31:31 +02:00
Philip Rebohle
ce03384ba9
[d3d11] Validate bind flags for D3D11_RESOURCE_MISC_GENERATE_MIPS
2019-06-13 03:31:31 +02:00
Philip Rebohle
63d8d9c3db
[d3d11] Validate buffer descriptions
2019-06-13 03:31:26 +02:00
Philip Rebohle
6a76577f15
[d3d11] Fix behaviour with a viewport count of zero
2019-06-13 02:22:07 +02:00
Philip Rebohle
5ff9c33855
[d3d11] Fix incorrect behaviour when a scissor rect is not specified
2019-06-13 02:16:12 +02:00
Philip Rebohle
78071c750d
[d3d11] Fix crash when setting too many viewports
2019-06-13 01:54:55 +02:00
Philip Rebohle
acab2bd8ce
[d3d11] Fix crash in GetMaximumFrameLatency with a nullptr argument
2019-06-11 16:36:43 +02:00
Philip Rebohle
7e66dc61b9
[d3d11] Avoid buffer ref count changes when only changing offsets
...
Saves a few CPU cycles in the somewhat common situation where the
currently bound vertex, index or constant buffer is re-bound with
a different offset.
2019-06-04 17:53:54 +02:00
Philip Rebohle
e4e82007b1
[d3d11] Fix inconsistencies in Map/Unmap on immediate/deferred contexts
...
Should save a few CPU cycles, and also fixes incorrect behaviour when an
application passes null pointers to Map on a deferred context.
2019-06-03 15:31:13 +02:00
Philip Rebohle
58d838b915
[d3d11] Avoid emitting redundant vertex and index buffer updates
2019-06-03 00:18:54 +02:00
Philip Rebohle
818704d413
[d3d11] Add some likely/unlikely around CS flushes
2019-06-02 20:29:22 +02:00
Philip Rebohle
6cbd611190
[d3d11] Don't clear DSV aspects that are marked as read-only
...
Saint's Row 4 appears to be doing this. Ref #24 .
2019-06-02 16:34:50 +02:00
Philip Rebohle
c59a8e6e48
[d3d11] Initialize depth images to zero rather than one
...
Matches Windows behaviour.
2019-06-02 16:33:54 +02:00
Philip Rebohle
40d4922682
[d3d11] Fix initial swap chain image count
...
Reported-by: Joshua Ashton <joshua@froggi.es>
2019-06-02 15:00:15 +02:00
Philip Rebohle
1e0fe36cae
[d3d11] Respect COPY_FLAG_NO_OVERWRITE when updating constant buffers
...
Heavy Rain uses this to update constan buffers on deferred contexts.
2019-05-25 14:42:32 +02:00
Philip Rebohle
754cf6da30
[d3d11] Validate subresource index in MapImage
...
Fixes crashes when passing an invalid subresource index.
2019-05-20 19:27:27 +02:00
Philip Rebohle
3168626f4b
[d3d11] Support mapping multiple image subresources at the same time
...
Fixes #1066 .
2019-05-20 19:27:11 +02:00
Philip Rebohle
9004fde78d
[d3d11] Remove useless 'virtual' keyword
2019-05-19 14:38:48 +02:00
Philip Rebohle
e1610f81dc
Revert "[d3d11] Use STDMETHODCALLTYPE for private virtual method"
...
For some reason, this produces broken binaries for some Gentoo
users. Fixes #1067 .
This reverts commit e5fa55cbb5
.
2019-05-19 13:22:04 +02:00
Philip Rebohle
8e9e7963a2
[d3d11] Update mapped buffers of staging textures immediately
...
Improves performance in Lords of the Fallen and The Surge.
Closes #1049 .
Co-authored-by: Robin <robin.kertels@outlook.com>
2019-05-17 12:44:36 +02:00
Philip Rebohle
e5fa55cbb5
[d3d11] Use STDMETHODCALLTYPE for private virtual method
...
Improves code generation on some compilers.
2019-05-15 22:01:19 +02:00
pchome
32e1afc7a1
[build] Add options to disable dxgi/d3d* build
2019-05-15 21:44:39 +02:00
Philip Rebohle
8cae607db0
[d3d11] Add static method implementing D3D11CreateDeviceAndSwapChain
...
ReShade requires this as it hooks both D3D11CreateDevice and *AndSwapChain,
which means that we can't call D3D11CreateDevice without entering infinite
recursion. Fixes #1057 .
Suggested-by: Riesi <riesi@opentrash.com>
2019-05-15 16:46:48 +02:00
Philip Rebohle
8784ed673b
[d3d11] Use private references for render targets
...
Matches Windows behaviour and fixes a crash in Yakuza Kiwami 2,
which calls Release() on RTVs and DSVs until the public reference
count reaches zero. Close #1053 .
2019-05-14 15:22:24 +02:00
Philip Rebohle
a54548dae9
[d3d11] Flush more aggressively when CPU bound
...
Submitting GPU work early is especially important if there is
a CPU<>GPU synchronization point somewhere.
2019-05-09 18:04:36 +02:00
Philip Rebohle
45be1dfb53
[d3d11] Flush more aggressively on stalling Event queries
...
Increases GPU utilization in Quake Champions.
2019-05-09 18:04:36 +02:00
Philip Rebohle
af45f810b2
[dxvk] Change flushing behaviour of immediate context methods
...
Should fix some inappropriate flushing, while flushing more
aggressively on render target changes.
We still keep the flush on UpdateSubresource since some games
use it to update large quantities of data.
2019-05-09 18:04:36 +02:00
Philip Rebohle
a1feaa6748
[dxvk] Add aspect mask parameter to clearImageView
2019-05-09 09:10:06 +02:00
Philip Rebohle
644f33a82b
[dxvk] Optimize unbound vertex buffer handling
...
We can actually just set the stride to 0 when binding a null
buffer, so that we can avoid all the runtime tracking.
2019-05-08 00:52:30 +02:00
Philip Rebohle
7687db0303
[dxvk] Remove extra pipeline state
...
This can be expressed with specialization constants now.
2019-05-06 00:18:59 +02:00
Philip Rebohle
a0c67191a7
[d3d11] Implement depth bounds extension
2019-05-06 00:08:58 +02:00
Philip Rebohle
3867270812
[d3d11] Implement MultiDrawIndirectCount extension
2019-05-06 00:08:58 +02:00
Philip Rebohle
492b7db07b
[d3d11] Support count buffer in Set|BindDrawBuffers
2019-05-06 00:08:58 +02:00
Philip Rebohle
117b7b1ba1
[d3d11] Implement MultiDrawIndirect extension
2019-05-06 00:08:58 +02:00
Philip Rebohle
9e57b03e64
[d3d11] Implement barrier control extension
2019-05-06 00:08:58 +02:00
Philip Rebohle
04bef3c67a
[d3d11] Add stub implementation of D3D11DeviceExt
2019-05-06 00:08:58 +02:00
Philip Rebohle
1cd8749234
[d3d11] Add stub implementation of D3D11DeviceContextExt
2019-05-06 00:08:58 +02:00
Philip Rebohle
edbbdef787
[d3d11] Add interfaces to support D3D11 extensions
2019-05-06 00:08:57 +02:00
Philip Rebohle
bacb1f7c60
[dxvk] Implement indirct draw commands with indirect count
2019-05-06 00:08:57 +02:00
Robin
4c0c66892a
[d3d11] Fix MSVC 2017 compilation
2019-05-04 22:14:28 +02:00
Philip Rebohle
f733d082f4
[d3d11] Implement D3D11DeviceContext::SwapDeviceContextState
2019-05-04 15:57:57 +02:00
Philip Rebohle
82c6a5eb1a
[d3d11] Implement D3D11Device::CreateDeviceContextState
2019-05-04 15:57:57 +02:00
Philip Rebohle
c1929ccb6f
[d3d11] Add class to implement D3DDeviceContextState
2019-05-04 15:57:55 +02:00
Philip Rebohle
f503ba4c8b
[d3d11] Fix counter value offset in DrawAuto
...
According to the newly released D3D11.3 functional specification,
we're supposed to subtract the offset of the slot 0 vertex buffer
binding from the counter value.
2019-05-02 16:03:52 +02:00
Philip Rebohle
343818cf1c
[d3d11] Always enable shaderStorageImageWriteWithoutFormat
...
We compile some compute shaders that need it in FL10/FL9 games.
2019-05-02 08:08:45 +02:00
Philip Rebohle
e6eef1d1ec
[d3d11] Minor Map/Unmap optimizations
...
Avoid unnecessary LockContext call when unmapping a buffer.
This may actually improve performance if the context has
multithreaded protection enabled (e.g. D3D10).
2019-05-01 03:01:36 +02:00
Philip Rebohle
f76fd8fa5d
[d3d11] Minor CPU savings
2019-05-01 03:00:23 +02:00
Philip Rebohle
93bd923c17
[d3d11] Set up extra state for the HUD renderer
2019-05-01 01:57:34 +02:00
Philip Rebohle
9fc09c843d
[d3d11] Set up unused extra state for the backend correctly
2019-05-01 01:57:34 +02:00
Philip Rebohle
a340b3101c
[d3d11] Add missing interface queries for IDXGIObject and IDXGIDeviceSubObject
2019-05-01 01:54:00 +02:00
Danylo Piliaiev
4dd68987d6
[d3d11] Check if uav's counter slice is defined in CopyStructureCount
...
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
2019-04-30 12:34:27 +02:00
Philip Rebohle
2afe5ec141
[d3d11] Clean up rasterizer state initialization
...
The error messages are pointless since all of this is already
handled in NormalizeDesc.
2019-04-29 16:22:42 +02:00
Philip Rebohle
2c61303976
[d3d11] Implement IDXGIResource1 for textures and buffers
2019-04-27 20:21:54 +02:00
Philip Rebohle
54592b7852
[d3d11] Add basic implementation of IDXGIResource1
...
We don't support resource sharing and subresource surfaces
yet, but the interface should at least be present.
2019-04-27 20:21:47 +02:00
Philip Rebohle
ac79f69a10
[d3d11] Pass texture as D3D11Resource to DXGI interop objects
2019-04-27 16:25:55 +02:00
Philip Rebohle
d1a019a043
[d3d11] Implement Map / Unmap for IDXGISurface2
2019-04-27 16:17:50 +02:00
Philip Rebohle
af15aa0c32
[d3d11] Implement IDXGISurface2 for compatible 2D textures
...
Required by SpellForce 3. Fixes #1031 .
2019-04-27 15:35:20 +02:00
Philip Rebohle
9f264ba008
[d3d11] Remove predication workaround for RADV
...
This no longer has any effect due to changes in the driver, and
we no longer support Predication anyway.
2019-04-25 18:29:13 +02:00
Joshua Ashton
60827c1b22
[d3d11] Improve CreatePredicate logging
2019-04-25 13:14:23 +02:00
Philip Rebohle
4eff83bdee
[d3d11] Disable Predication support
...
Doesn't work at all in the few games that use it.
2019-04-25 11:55:40 +02:00
Philip Rebohle
981ea547f9
[d3d11] Don't use presentation fence
2019-04-23 20:14:34 +02:00
Philip Rebohle
81f6ccb1be
[d3d11] Select sync event based on back buffer count
...
May improve frame pacing in some games.
2019-04-23 20:14:30 +02:00
Philip Rebohle
4cc35da3b2
[d3d11] Allocate one additional swap chain image
...
DXGI's BufferCount apparently only counts back buffers,
while there's an implicit front buffer.
2019-04-23 20:12:29 +02:00
Philip Rebohle
95bfac84f1
[dxvk] Support image sub-regions for resolve operations
...
Required for legacy graphics APIs.
2019-04-19 11:41:12 +02:00
Philip Rebohle
b44cad4d32
[dxbc] Replace computeResourceSlotId by light-weight alternatives
...
Slightly reduces overhead of D3D11 binding methods.
2019-04-18 10:06:15 +02:00
Philip Rebohle
f9e56c97cf
[d3d11] Fix hasing of geometry shaders with stream output
...
The xfb struct contains pointers, but we should hash the
strings instead, otherwise the hash changes between runs.
2019-04-15 03:48:31 +02:00
Philip Rebohle
ca717eeb62
[d3d11] Track query state correctly
...
Not sure if any game actually needs this, but we should avoid
sending bogus commands to the backend when the app sends bogus
commands to us.
2019-04-14 16:27:15 +02:00
Philip Rebohle
364ae7270d
[d3d11] Don't allocate predicate for unsupported predicates
2019-04-14 14:26:56 +02:00
Philip Rebohle
56300ff9b7
[d3d11] Allocate mapped buffers for staging images on cached memory
...
These will most likely be used for reading, so we should put them
on a memory type which allows reading.
2019-04-07 14:47:43 +02:00
Philip Rebohle
51f229530b
Revert "[d3d11] Select memory type based on CPU access flags"
...
This reverts commit 6c8042033e
.
Batman: Arkham City doesn't set the CPU access flags correctly
for some images it maps for reading, and breaks on Nvidia as a
result.
2019-04-07 14:42:01 +02:00
pchome
3eb9f35fc3
[build] Use generator
to produce resource files
2019-04-06 11:33:45 +02:00
Sveinar Søpler
4f9dd8d3d0
[build] Add version info to compiled DLLs
...
Fixes #980 .
2019-04-05 21:09:57 +02:00
Philip Rebohle
5819a69302
[d3d11] Add option to enable constant buffer range checks
2019-04-05 20:56:32 +02:00
Philip Rebohle
632b254714
[d3d11] Use combined image sampler descriptors for the presenter
2019-04-03 17:40:05 +02:00
Philip Rebohle
295d583c1d
[d3d11] Lazily allocate predicate on SetPredication
...
Many games use CreatePredicate to create occlusion queries without
actually using predication, and we don't want to pay any runtime
cost for this when predicates aren't actually being used.
2019-04-02 04:07:05 +02:00
Philip Rebohle
18d2905bf7
[dxvk] Remove unused alphaToOne state
...
Nothing supports this anyway, so no reason to carry it around.
2019-04-01 02:31:22 +02:00
Philip Rebohle
61adaa941d
[d3d11] Implement fast path for binding full constant buffers
...
Saves a few CPU cycles in the most common case where
we don't have to perform any sort of range check.
2019-03-28 14:09:08 +01:00
Philip Rebohle
8f580efa25
[d3d11] Correctly handle out-of-bounds constant buffer ranges
...
Otherwise we pass an invalid offset and length to the backend,
which leads to invalid descriptor set updates in Vulkan.
The D3D11 runtime does not report corrected constant offset
and count parameters to the applicaion in *GetConstantBuffers1.
Reported-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
2019-03-28 13:45:41 +01:00
Philip Rebohle
09d60f42bc
[d3d11] Work around predicate buffer sync issue on RADV
...
If the predicate buffer is device-local memory, conditional
rendering commands don't seem to see any updates values even
though there is a barrier. When allocating on host-visible
device memory or system memory, it works as expected.
2019-03-28 10:02:11 +01:00
Philip Rebohle
3a3d7fb378
[d3d11] Properly implement SetPredication
2019-03-28 10:02:11 +01:00
Philip Rebohle
d81146e3d2
[d3d11] Allocate predicate buffer for predicates
2019-03-28 10:02:11 +01:00
Philip Rebohle
7e16c4cda1
[d3d11] Remove unused revision field from D3D11Query
2019-03-28 10:02:11 +01:00
Philip Rebohle
70520e30aa
[dxvk] Enable conditionalRendering feature if present
2019-03-28 10:02:11 +01:00
Philip Rebohle
6c8042033e
[d3d11] Select memory type based on CPU access flags
2019-03-26 21:17:52 +01:00
Philip Rebohle
302c6b5e6c
[d3d11] Implement depth-stencil uploads in resource initializer
2019-03-26 18:11:42 +01:00
Philip Rebohle
fc3515c16f
[d3d11] Implement depth-stencil uploads in UpdateSubresource1
2019-03-26 18:11:42 +01:00
Philip Rebohle
eec1cde1b3
[d3d11] Implement depth-stencil mapping on deferred contexts
2019-03-26 18:05:02 +01:00
Philip Rebohle
97d77fa508
[d3d11] Implement depth-stencil mapping on the immediate context
2019-03-26 18:04:56 +01:00
Philip Rebohle
c38b1802a2
[d3d11] Enable shaderStorageImageExtendedFormats device feature
2019-03-26 17:56:57 +01:00
Philip Rebohle
8194bec1bf
[d3d11] Fix image format mapping when creating mapped buffer
2019-03-26 17:54:43 +01:00
Philip Rebohle
7cd3e9a0d4
[d3d11] Add method to look up packed format
2019-03-26 17:54:14 +01:00
Philip Rebohle
be1832a348
[d3d11] Don't sample gamma texture if the gamma curve is identity
...
Saves some GPU time in games that don't use DXGI gamma control at all.
2019-03-24 18:07:21 +01:00
Philip Rebohle
3d53f318fd
[dxvk] Enable hostQueryReset device feature if available
2019-03-17 16:24:59 +01:00
Philip Rebohle
412d79c8c1
[d3d11] Use new query implementation
2019-03-14 21:16:41 +01:00
Philip Rebohle
8c3900c533
[d3d11] Use new GPU events for D3D11 Event queries
2019-03-14 21:16:41 +01:00
Philip Rebohle
19f82826bb
[d3d11] Don't use presentation fence on ANV
...
Should hopefully fix stuttering issues introduced with 1.0.
2019-03-14 18:50:33 +01:00
Philip Rebohle
2d39be4e72
[d3d11] Check image block alignment in UpdateSubresource1
...
Fixes validation errors in World of Warcraft, which for some reason
tries to update individual pixels of block-compressed textures.
See #964 .
2019-03-14 01:11:39 +01:00
Philip Rebohle
4fc96e60c5
[d3d11] Reimplment GetEnabledShaderStages using getShaderPipelineStages
...
They do the same thing anyway.
2019-03-02 19:56:01 +01:00
Joshua Ashton
d01110259c
[d3d11, d3d10] Init returnptrs for CreateDevice funcs.
2019-02-27 23:17:08 +01:00
Joshua Ashton
28df1e0825
[d3d11] nullptr check descs & fix return values
2019-02-27 22:01:04 +01:00
Philip Rebohle
e03b574cc1
[d3d11] Block on image acquisition fence before presenting
...
May potentially improve frame timing on drivers where image
acquisition does not block.
2019-02-25 13:34:49 +01:00
Philip Rebohle
2231caaa9e
[vulkan] Add optional fence paratemer to acquireNextImage
...
We'll reset the fence prior to acquisition, so that the user of
this API won't have to do it.
2019-02-25 13:34:46 +01:00
Philip Rebohle
49965fd79e
[dxvk] Enable depthClipEnable feature if available
2019-02-19 13:57:34 +01:00
Philip Rebohle
20ea74fa99
[d3d11] Do not enable shaderStorageImageMultisample device feature
...
See https://github.com/KhronosGroup/MoltenVK/issues/502
2019-02-19 11:32:32 +01:00
Philip Rebohle
10123ce9ab
[dxvk] Pass description of the client API to the DXVK device
2019-02-15 17:38:52 +01:00
Philip Rebohle
cbaeca8f43
[d3d11] Move sType/pNext initialization for dev.features to backend
...
There's no good reason to have this code in the D3D11 module.
2019-02-15 10:20:03 +01:00
Philip Rebohle
f7ed7b7118
[d3d11] Fix device feature enablement in some situations
...
- Geometry shaders are required by the backend
- FL9 already supports BC texture formats
2019-02-15 10:05:17 +01:00
Philip Rebohle
746562de5a
[dxgi,d3d11] Remove IDXGIVkPresentDevice
2019-02-11 20:06:12 +01:00
Philip Rebohle
fd445f7b4d
[d3d11] Move D3D11 presenter creation to WineDXGISwapChainFactory
2019-02-11 20:06:12 +01:00
Philip Rebohle
9f8c1d08a6
[dxgi,d3d11] Move swap chain creation to D3D11 module
2019-02-11 20:06:12 +01:00
Joshua Ashton
5ea8648cd9
[d3d11, d3d10, dxgi] Handle null ppvObject in QueryInterface. ( #909 )
...
When a null ppvObject is passed into a QueryInterface on any IUnknown, a E_POINTER should be returned as the result (and it should not crash.)
This matches native d3d11/d3d10/dxgi behaviour and the documentation found here https://docs.microsoft.com/en-us/windows/desktop/api/unknwn/nf-unknwn-iunknown-queryinterface(q_) for IUnknown.
2019-02-10 08:01:01 +01:00
Philip Rebohle
e56710e64f
[d3d11] Add option to disable write-after-write barriers
2019-02-07 19:39:05 +01:00
Philip Rebohle
c0b325b483
[dxbc] Add option to enable strict sm4-compliat division
...
SM4 is defined to return the first source operand if the divisor is zero.
Windows drivers don't do this by default, so we shouldn't do it either.
2019-02-05 21:08:13 +01:00
Philip Rebohle
6c17fa075b
[d3d11] Minor map optimization on deferred contexts
2019-02-04 10:26:04 +01:00
Philip Rebohle
8d493d9445
[d3d11] Minor map optimization on immediate contexts
...
We should make the fast path as fast as possible.
2019-02-04 10:24:30 +01:00
Philip Rebohle
b884c56631
[dxvk] Enable VK_EXT_memory_priority and features if available
2019-01-30 13:52:43 +01:00
Philip Rebohle
3960355d47
[d3d11] Avoid redundant viewport updates in RSSetState
...
Rise of the Tomb Raider changes its rasterizer state very frequently
(once every handful of draws), and the viewport package is very large,
so we should avoid sending it to the CS thread redundantly.
We only need to update when the scissor test state has changed.
2019-01-23 05:36:49 +01:00
Philip Rebohle
a79409ad02
Revert "[dxvk] Don't put rendering stage/access masks into image info"
...
This reverts commit ce3642edd0
.
We're actually going to need these when optimizing render pass barriers.
2019-01-22 14:52:35 +01:00
Andrew Eikum
9ad24a2216
[d3d11] In D3D11CreateDevice, create DXGI factory with IDXGIFactory1 support ( #878 )
2019-01-22 10:57:05 +01:00
Philip Rebohle
c3ae180c1a
[d3d11] Remove d3d11.fakeStreamOutput option
...
Only relevant on old drivers which do not support the extension.
Assumed to be enabled by default if Transform Feedback is not supported.
2019-01-19 17:39:59 +01:00
Philip Rebohle
4d4bd182c1
[d3d11] Allow arbitrary back buffer formats for swap chains
...
Doesn't match D3D11 behaviour, but shouldn't really break anything
since D3D11 has a fixed set of swap chain-compatible formats.
Might help DXUP in avoiding unnecessary framebuffer blits.
2019-01-19 02:28:25 +01:00
Philip Rebohle
95815a075b
[dxvk] Move depth bias out of rasterizer state
...
While the previous model corresponded to D3D11, it does
not reflect that the backend treats it the same way as
e.g. blend constants.
2019-01-17 22:25:21 +01:00
Philip Rebohle
0d84ebd4c9
[dxvk] DepthClampEnable -> DepthClipEnable
...
There are subtle differences between the two that we
should deal with in the backend at some point.
2019-01-17 01:59:10 +01:00
Philip Rebohle
4819287029
[d3d11] Do not enable depth bias if the parameters are zero
2019-01-17 00:53:54 +01:00
Michal Srb
cc38412d04
[d3d11] Fix bad check in DrawInstancedIndirect ( #863 )
2019-01-15 11:12:03 +01:00
Philip Rebohle
109300d541
[d3d11] Remove unused syncMode option
2019-01-14 19:21:10 +01:00
Philip Rebohle
2bae3a5c8b
[d3d11] Reintroduce support for dxgi.maxFrameLatency
...
This option was previously ignored for some reason.
2019-01-14 18:29:25 +01:00
Philip Rebohle
79eded9ae2
[d3d11] Only apply viewport and scissor rect if they have changed
...
Resident Evil 2 calls these functions before every single draw
call, so we should avoid emitting redundant viewport updates.
2019-01-12 20:22:08 +01:00
Philip Rebohle
c804d99db7
[d3d11] Fix log spam in SetEvictionPriority stubs
2019-01-12 15:22:34 +01:00
Philip Rebohle
4f0da40afa
[d3d11] Add some documentation to d3d11_cmd.h
2019-01-11 12:05:25 +01:00
Philip Rebohle
e665d896e3
[d3d11] Fix build errors on MSVC
2019-01-10 18:26:52 +01:00
Philip Rebohle
bbc3b3fb2b
[d3d11] Use multiDrawIndirect for subsequent indirect draw calls
...
Significantly improves performance in AC:Odyssey when CPU bound.
Only has an effect when no state changes between draw calls, and
when the draw parameter buffer is tightly packed.
2019-01-10 17:14:12 +01:00
Philip Rebohle
ad6233f74c
[d3d11] Enable multiDrawIndirect device feature if available
2019-01-10 16:59:53 +01:00
Philip Rebohle
8b5db80fbd
[dxvk] Reimplement DxvkBuffer
...
Avoids the DxvkPhysicalBuffer indirection and keeps all buffer
objects alive until the DxvkBuffer itself gets destroyed.
2019-01-09 18:04:46 +01:00
Philip Rebohle
2f1f8ba0a4
[d3d11] Fix CheckMultisampleQualityLevels behaviour
...
- Querying DXGI_FORMAT_UNKNOWN should not return an error,
and should advertize support for a sample count of 1
- Querying non-power of two sample counts should not fail
- Invalid arguments should be handled properly
2019-01-09 00:28:25 +01:00
Philip Rebohle
214891ffc6
[d3d11] Improve error logging when texture creation fails
2019-01-08 10:34:48 +01:00
Chip Davis
6feeb4bbba
Only set 2D_ARRAY_COMPATIBLE on 3D textures that will be rendered to.
...
It is impossible to create a 2D or 2D array SRV or UAV from a 3D
texture. Nor is it possible to create a DSV from a 3D texture.
Therefore, the only time we ever need to create a 2D array view from a
3D texture is when we're going to render to it.
2019-01-02 19:15:23 +01:00
Robin
1750b14c2a
[d3d11] Lock in SynchronizeCsThread
...
This prevents fixes threading issues with D3D10 games when
Present() gets called.
Fixes #567 .
2018-12-30 21:08:52 +01:00
Robin
4c9af44356
[d3d10] Use context lock instead of separate device lock
2018-12-30 21:08:52 +01:00