Commit Graph

110 Commits

Author SHA1 Message Date
Philip Rebohle 14bb4ed9c2
[d3d11] Fixed depth-stencil clear outside renderpasses
Fixes rendering in Tomb Raider (2013).
2018-01-23 19:01:07 +01:00
Philip Rebohle e198bd2d55
[d3d11] Sub-allocate from larger update buffers for UpdateSubresources
Reduces the allocation overhead when applications frequently
call UpdateSubresources to update small buffers and textures.
2018-01-23 16:43:55 +01:00
Philip Rebohle 2c20bf4dcb
[d3d11] Use Map() for host-visible buffers in UpdateSubresource 2018-01-23 12:16:28 +01:00
Philip Rebohle 5b1311b71e
[d3d11] Added stubs for deferred contexts and command lists 2018-01-23 09:23:31 +01:00
Philip Rebohle b923a2004f
[d3d11] Fixed image copy operation 2018-01-21 01:57:12 +01:00
Philip Rebohle b7a00e32ec
[dxvk] Limit size of the CS command queue
Prevents memory leaks and fixes stuttering in Heaven.
2018-01-21 00:49:07 +01:00
Philip Rebohle 6ab7897127
[d3d11] Enabled command stream thread 2018-01-20 23:12:03 +01:00
Philip Rebohle 7d7cc1ceda
[d3d11] Record commands into a CS chunk 2018-01-20 22:52:18 +01:00
Philip Rebohle f25b3c8b32
[d3d11] Use EmitCs for resource updates 2018-01-20 21:42:11 +01:00
Philip Rebohle 496acd71b1
[d3d11] Use EmitCs for some Copy/Clear operations 2018-01-20 19:30:31 +01:00
Philip Rebohle 9441974497
[d3d11] Use EmitCs for state object updates 2018-01-20 19:11:42 +01:00
Philip Rebohle cbbfefbbb7
[d3d11] Use EmitCs for shader and resource binding methods 2018-01-20 18:54:37 +01:00
Philip Rebohle 7fad731096
[d3d11] Use EmitCs for Input Assembly methods 2018-01-20 18:34:25 +01:00
Philip Rebohle e951a5ea0c
[d3d11] Use EmitCs for draw and dispatch calls 2018-01-20 18:26:17 +01:00
Philip Rebohle 4d17b1752f
[d3d11] Use EmitCs for general setup and synchronization methods 2018-01-20 18:01:43 +01:00
Philip Rebohle 2dd24a14d2
[dxvk] Refactored blend constants
This will make things a little less painful when capturing
blend constants in a lambda function, as required for CSMT.
2018-01-20 15:41:06 +01:00
Philip Rebohle 0b426a0942
[d3d11] Added new D3D11ImmediateContext class
Initial prep work for both CSMT and Deferred Contexts.
2018-01-20 13:22:44 +01:00
Philip Rebohle f88adc4e82
[d3d11] Implemented mipmap generation 2018-01-20 09:46:54 +01:00
Philip Rebohle 2a364c557b
[d3d11] Implemented image mapping for reads 2018-01-19 18:09:49 +01:00
Philip Rebohle 9334873188
[dxvk] Cleaned up DxvkBufferSlice and added documentation 2018-01-18 18:50:44 +01:00
Philip Rebohle 6e6c290e01
[d3d11] Use DxvkPhysicalBufferSlice for resource copies and buffer views 2018-01-18 18:33:13 +01:00
Philip Rebohle 9acc4a1a82
[d3d11] Map default constant buffers to host memory
Improves performance in applications that use UpdateSubresources
to frequently update constant buffers, such as Unigine Heaven,
Unigine Valley and Homefront.
2018-01-18 11:55:27 +01:00
Philip Rebohle ade9cd0587
[d3d11] Removed some uninteresting log messages
Reduces log spamming in Homefront.
2018-01-17 23:49:26 +01:00
Clément Guérin 340438954d [d3d11] copy all layers and mipmaps in CopyResource
avoid using potentially undefined mappedSubresource
2018-01-14 12:17:54 -08:00
Clément Guérin 482147d929 [d3d11] support textures in CopyResource
fixes green textures and log spam with TrackMania
2018-01-14 11:09:14 -08:00
Philip Rebohle 198c9389af [d3d11] Flush resource init commands
Like regular command buffers, the command buffers used for resource
initialization should not be able to grow indefinitely.
2018-01-13 23:40:17 +01:00
Philip Rebohle c7a9763f6d [d3d11] Re-implemented draw call-based context flush
After doing more testing, it became apparent that this
optimization is beneficial most of the time and may also
improve stability by limiting the number of commands
recorded into a single command buffer.
2018-01-13 23:09:03 +01:00
Philip Rebohle 65d84dabfe [d3d11] Removed draw-call based context flush
Combined with the recent command submission optimization,
this actually had a negative impact on performance.
2018-01-13 05:27:26 +01:00
Philip Rebohle ac1fe7c2b0 [d3d11] Optimized command submission 2018-01-13 05:00:27 +01:00
Philip Rebohle 672675ba78 [d3d11] Implemented OMSetRenderTargetsAndUnorderedAccessViews
Note that this does *not* properly implement UAV rendering in
the backend yet. For that, we need to add memory barriers.
2018-01-12 15:38:07 +01:00
Philip Rebohle 32078033c6 [d3d11] Fixed UAV counter buffer binding 2018-01-11 17:12:39 +01:00
Philip Rebohle c1d6c20066 [d3d11] Implemented D3D11 parts of append/consume buffers 2018-01-11 12:23:55 +01:00
Philip Rebohle 1b67ffaed2 [d3d11] Added default sampler state 2018-01-10 19:07:55 +01:00
Philip Rebohle 3925675b89 [d3d11] Optimized command submission
The context will now be flushed after a render pass that consisted of
several hundreds of draw calls. This way the GPU should be kept busy.
2018-01-08 17:45:21 +01:00
Philip Rebohle ad10ab07f8 Revert "[d3d11] Added dummy resoruce binding for buffers"
This approach will not work if the d3d11 context binds an
incompatible resouce in case the pipeline itself changes.
2018-01-08 13:01:31 +01:00
Philip Rebohle 24ad9e730c [d3d11] Added dummy resoruce binding for buffers
Fixes crashes when a D3D11 application uses unbound resources
in shaders. Allows Nier:Automata to play back cutscenes.
2018-01-08 10:17:52 +01:00
Philip Rebohle 4e06f498dd [d3d11] Fixed several mip level-related bugs
- When a D3D11 texture was created with a mip level count of zero,
  DXVK would compute the correct number of mip levels, but not write
  them back to the description field.
- Framebuffers would always use the size of the top level, not the
  mip levels that were actually attached to the framebuffer.
- Several image copy operations did not handle mip levels other
  than the top mip level correctly.
2018-01-06 02:09:07 +01:00
Philip Rebohle 356591cc99 [d3d11] Fixed viewport offset 2018-01-05 16:53:12 +01:00
Philip Rebohle e7bf76f5ef [d3d11] Re-implemented image mapping
Image mapping now returns the map pointer of a separate
buffer, rather than the the image itself. This fixes
issues with applications that ignore the RowPitch
and/or DepthPitch fields of the MappedSubresource struct.
2018-01-05 03:01:19 +01:00
Philip Rebohle 93a5cf093c [d3d11] Refactored texture interfaces
All texture classes now use the common info structure
internally as well so that it can be queried efficiently.
2018-01-05 01:15:56 +01:00
Philip Rebohle 55bc01d523 [d3d11] Minor bug fixes 2018-01-02 12:07:30 +01:00
Philip Rebohle 4dc2c9e92c [d3d11] Implemented GetData stub for queries 2018-01-01 20:59:54 +01:00
Philip Rebohle fd2bb610eb [d3d11] Implemented indirect draws and dispatch 2017-12-31 01:31:08 +01:00
Philip Rebohle 91a5eb963b [d3d11] Minor formatting + doc improvements 2017-12-31 00:25:19 +01:00
Philip Rebohle b7ce9660c3 [d3d11] Implemented CopySubresourceRegion for images 2017-12-30 19:10:45 +01:00
Philip Rebohle 2e215e24e5 [d3d11] Hiding message that initial UAV counts are not supported
They are not supported, but some applications pass invalid pointers
to the fuction even if the feature itself is not used.
2017-12-29 19:26:18 +01:00
Philip Rebohle a3fe40051f [d3d11] Initial support for unordered access views
Currently restricted to buffers on the API side. Typed UAVs
are not yet supported by the shader compiler. This is enough
to run very simple compute shaders.
2017-12-28 19:05:53 +01:00
Philip Rebohle e668c65017 [d3d11] Experimental support for typed shader buffer views 2017-12-27 14:32:07 +01:00
Philip Rebohle 788f275315 [d3d11] UAV prep work + cleanups 2017-12-27 01:36:45 +01:00
Philip Rebohle 8d5a2b92f9 [d3d11] Cleaned up primitive topology code 2017-12-26 16:25:51 +01:00