Philip Rebohle
57445227ac
[d3d11] Fix render target validation (again)
...
This behaviour is rather obscure and undocumented, but testing shows
that DSV <-> RTV mismatches are allowed under some circumstances.
Fixes #2555 .
2022-07-14 12:39:14 +02:00
Philip Rebohle
00cfee9d17
[d3d11] Ignore OMSetRenderTargets calls with incompatible view sizes
...
Fixes #2701 .
2022-07-10 15:17:00 +02:00
Philip Rebohle
a637134c56
[d3d11,dxbc] Use push constant instead of spec constant for rasterizer sample count
2022-07-03 13:41:06 +02:00
Philip Rebohle
a1bbc77c04
[d3d11] Pass shader stage for binding resources in context methods
2022-06-28 14:32:30 +02:00
Philip Rebohle
a85f7c48a5
[d3d11] Make ClearUnorderedAccessViewUINT fallback more generic
2022-04-25 17:34:45 +02:00
Joshua Ashton
cf1cee04b8
[d3d11] Register annotation interfaces with D3D9
...
Some apps try use the D3DPERF_ functions for debug markers/annotations.
This utilizes the DXVK_RegisterAnnotation hidden functions to share the interfaces.
Co-authored-by: Oleg Kuznetsov <okouznetsov@nvidia.com>
2022-03-17 11:35:19 +01:00
Joshua Ashton
5d54d79865
[d3d11] Use IDXVKUserDefinedAnnotation
2022-03-17 11:35:19 +01:00
Philip Rebohle
c87660480d
[d3d11] Reimplement R11G11B10 UAV clears without R32 views
2022-03-12 16:23:42 +01:00
Philip Rebohle
8e11630370
[d3d11] Set zero stride when binding null vertex buffer
2022-02-19 13:20:36 +01:00
Philip Rebohle
80c5b61e26
[d3d11] Use DxvkStagingBuffer in D3D11DeviceContext
2022-02-13 02:08:19 +01:00
Philip Rebohle
26381fd5df
[d3d11] Only use updateBuffer for very small buffer updates
...
Otherwise we may end up with significant copy overhead on the CS thread.
2022-02-13 02:08:19 +01:00
Philip Rebohle
afe1840c74
[d3d11] Track resources when dispatching Cubin shaders as well
2022-02-11 18:17:35 +01:00
Philip Rebohle
d33dac569c
[d3d11] Track last staging resource usage with a sequence number
2022-02-11 18:17:35 +01:00
Philip Rebohle
6c862b63a2
[d3d11] Optimize UpdateSubresource for small buffer updates
...
Some games use UpdateSubresource to upload constant buffers in
between draws, so this path should be as fast as possible.
Also fixes a potential issue when using D3D11_COPY_NO_OVERWRITE
on deferred contexts, since the Map requirements don't hold here.
2022-02-07 16:14:02 +01:00
Philip Rebohle
b746e1352b
[d3d11] Implement suballocation from staging buffer for small updates
2022-02-07 16:14:01 +01:00
Adam Moss
86148ec070
[d3d11,dxvk] Implement DXVK pieces required for DX11 DLSS support
...
Notably, fairly generic functions to create/launch/destroy Cuda kernels,
and methods to fetch GPU virtual addresses and handles for DX11 resources.
Note: Requires some corresponding dxvk-nvapi changes for DLSS to
be initialized successfully.
2021-09-24 15:10:07 +02:00
Philip Rebohle
dd7ffbc803
[d3d11] Also validate draw buffer for DispatchIndirect
...
Oversight.
2021-09-12 16:18:25 +02:00
Philip Rebohle
de7fb51e64
[d3d11] Validate indirect draw buffer size
...
Otherwise, if the draw parameter offset is out of bounds, we
may hang the GPU.
Fixes #2286 .
2021-09-12 01:23:04 +02:00
Philip Rebohle
11bbc07ea1
[dxvk] Support destination pitch in packImageData
2021-07-19 16:54:56 +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
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
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
7c0ee272c3
[d3d11] Add texel buffer usage to staging buffer
...
Needed for staging image updates.
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
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
2740030fca
[d3d11] Support video processor output views in ClearView
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
6462174c13
[dxvk] Support multi-plane formats in copyImageToBuffer
2021-05-30 19:42:43 +02:00
Philip Rebohle
cb7adeef08
[d3d11] Add range checking to GetShaderResources
2021-04-22 12:56:11 +02:00
Philip Rebohle
65655ce37c
[d3d11] Add range checking to GetSamplers
2021-04-22 12:56:11 +02:00
Philip Rebohle
ef9ad29b7f
[d3d11] Add range checking to GetConstantBuffers
2021-04-22 12:56:11 +02:00
Philip Rebohle
2d9c229eaa
[d3d11] Add range checking to SOGetTargets
2021-04-22 12:56:11 +02:00
Philip Rebohle
11a02831a9
[d3d11] Add range checking to UAV and render target methods
2021-04-22 12:56:11 +02:00
Philip Rebohle
b51fd4d06c
[d3d11] Add range checking to IAGetVertexBuffers
2021-04-22 12:56:11 +02:00
Philip Rebohle
a13dad07cc
[d3d11] Add some missing STDMETHODCALLTYPE declarations
2021-04-22 12:56:11 +02:00
Liam Middlebrook
fb0b11903b
[d3d11] Implement D3D11UserDefinedAnnotation
...
Reviewed-by: Oleg Kuznetsov <okouznetsov@nvidia.com>
2021-04-08 14:25:02 +02:00
Philip Rebohle
e3b92bcfac
[dxvk] Add conservative rasterization mode to rasterizer state
2021-03-13 20:22:32 +01:00
Philip Rebohle
049fda9218
[d3d11] Revert index buffer optimization
...
This causes some problems when the app uses a combination of index
buffer offset and StartIndexLocation that overflows 32-bit integers.
In my testing, there haven't been many games benefitting from this
optimization anyway, so just reverting it should not have tangible
effects on performance.
2021-03-04 15:47:39 +01:00
Philip Rebohle
9c6d3a2bf6
[d3d11] Fix RSGetViewports and RSGetScissorRects
...
If the output array is non-null, these functons always return the
number of valid viewports or scissors actually written to the array.
Fixes a wine test failure.
2021-02-26 03:35:57 +01:00
Philip Rebohle
d118d35820
[d3d11] Fix IAGetIndexBuffer with optimized index buffers
2021-02-26 02:39:14 +01:00
Philip Rebohle
5643bf47fe
[d3d11] Use discardImageView in DiscardView1
2021-02-21 02:51:59 +01:00
Philip Rebohle
b8bc36559d
[d3d11] Optimize index buffer binding with offset
...
Do not rebind the buffer if only the offset changes. Instead,
adjust StartIndexLocation in indexed draw calls. For indirect
draws, this will be disabled on the fly.
This may save a whole bunch of work in the backend, and reduces
the number of commands being sent to the CS thread in the first
place, which is why this optimization is not being done in the
backend itself but rather on the client API side.
2021-01-24 15:18:38 +01:00
Joshua Ashton
742b52bbb5
[d3d11] Fix device child refs properly
2021-01-15 23:47:48 +01:00
Philip Rebohle
34e730fe41
[d3d11] Remove predication-related code
2020-11-30 19:18:26 +01:00
Philip Rebohle
f74071ac0a
[d3d11] Support different strides for merged indirect draws
...
Trine 4 uses a stride of 32 bytes. Detecting the stride dynamically
allows us to merge a couple of draws in this game, and others which
do not tightly pack their draw parameter buffers.
2020-11-21 05:39:05 +01:00