Commit Graph

1798 Commits

Author SHA1 Message Date
Philip Rebohle 04ed4273ba
[dxvk] Avoid buffer slice copy when binding index/vertex buffers
Also redesigns getDescriptor to always return the offset.
2018-09-23 20:09:01 +02:00
Philip Rebohle 1c865328d3
[meta] Release v0.80 2018-09-23 19:01:15 +02:00
Philip Rebohle b9ff234da5
[meta] Update README 2018-09-23 14:46:29 +02:00
Philip Rebohle b49876528a
[dxvk] Enable state cache for compute pipelines
Also cleans up some code to get the design more in line
with how graphics pipelines are handled.
2018-09-23 14:42:03 +02:00
Philip Rebohle 6c8ac9e5f4
[dxvk] Add compute shader support to pipeline state cache 2018-09-23 14:42:03 +02:00
Philip Rebohle 689602497f
[d3d11] Use state cache 2018-09-23 14:41:49 +02:00
Philip Rebohle 4a72cae1e6
[dxvk] Enable state cache 2018-09-23 14:41:43 +02:00
Philip Rebohle 57dab630b5
[dxvk] Add pipeline state cache
Stores state vectors for graphics pipelines in a file and allows
games to start compiling them in advance on subsequent launches.

Changes:
(1) Add environment variable to select the cache file path
(2) Add magic number and entry size to cache file header
2018-09-22 22:38:35 +02:00
Philip Rebohle d6742e38c5
[dxvk] Lock pipeline object while compiling one pipeline
This prevents us from compiling the exact same pipeline twice
at the same time, which for some reason crashes RADV.
2018-09-22 12:04:06 +02:00
Philip Rebohle 0e2d63f6d2
[dxvk] Add method to retrieve shader key from shader module 2018-09-22 12:04:06 +02:00
Philip Rebohle f3a23ab81f
[util] Add convenience method for SHA1 hash compulation 2018-09-22 12:04:06 +02:00
Philip Rebohle 83447975ac
[dxvk] Refactor pipeline stat counters
The stat counter struct no longer has to be passed to
the pipeline compiler function.

The new implementation uses atomic counters of the pipeline manager
rather than per-command list counters, which removes the need to
pass the counter structure to the compiler function.
2018-09-22 12:02:20 +02:00
Philip Rebohle 5410680401
[dxvk] Refactor pipeline object constructors
This way we don't need to pass everything to the pipeline objects.
2018-09-22 11:59:25 +02:00
Philip Rebohle 9284081180
[dxvk] Remove redundant declaration 2018-09-21 19:43:47 +02:00
Philip Rebohle 0f52ec2796
Revert "[dxvk] Move command submission to separate thread"
This reverts commit f61ff5d345.

Apparently, this causes extremely poor frame times on some
configurations. Reason is currently unknown.
2018-09-20 19:58:00 +02:00
Philip Rebohle 2eda95f61a
[dxvk] Optimize retrieval of dynamic buffer offsets 2018-09-20 15:19:33 +02:00
Philip Rebohle f61ff5d345
[dxvk] Move command submission to separate thread
- Reduces load on the CS thread and the main rendering thread.
- This takes into account that VR apps access the queue as well.
2018-09-20 14:43:06 +02:00
Philip Rebohle 539cc77b6e
[dxvk] Eliminate buffer slice copy when updating buffer descriptors 2018-09-20 12:10:43 +02:00
Philip Rebohle 03a760bec6
[meta] Remove redundant linker entries for the utils library
Fixes #651.
2018-09-19 21:00:44 +02:00
Philip Rebohle b11343cf52
[meta] Clarify device filter usage and fix typo 2018-09-19 17:28:33 +02:00
Philip Rebohle 35238ec4d1
[d3d11] Make D3D11 context methods more robust to null pointers
Assetto Corsa tries to do some questionable things when reflections
are disabled in the game options. Refs #648.
2018-09-19 12:33:30 +02:00
Philip Rebohle c1190e81b2
[d3d11] Handle pResource == nullptr case during view creation 2018-09-19 11:55:11 +02:00
Philip Rebohle 837a3f5787
[d3d11] Don't allow creation of 0x0-sized textures 2018-09-18 21:33:27 +02:00
Philip Rebohle bf5476900a
[d3d11] Expose Feature Level 11_1
- We don't actually support the ExtendedResourceSharing feature, but
  since we currently don't support resource sharing at all, this makes
  no difference in practice
- Likewise, MultisampleRTVWithForcedSampleCountOne is not really
  supported, as the Vulkan backend will still use the sample count
  of the color attachments, but should have no effect in practice.
- This does not change the fact that Predication and Stream Output
  are still missing.
2018-09-18 16:27:40 +02:00
Philip Rebohle d9009efd22
[d3d11] Implement and advertize support for CopyWithOverlap feature 2018-09-18 16:22:47 +02:00
Philip Rebohle e3c2815782
[dxvk] Add copyBufferRegion and copyImageRegion methods
These new methods can support overlapped subresource copies by
creating a temporary resource and effectively using two copy
operations. This is required for D3D11 overlapped copies.
2018-09-18 16:20:57 +02:00
Philip Rebohle 3f47fdab4d
[d3d11] Advertize support for the ForcedSampleCount rasterizer state 2018-09-18 13:23:28 +02:00
Philip Rebohle 482930f04a
[dxvk] Implement backend support for D3D11 forced sample count
We don't support rasterization with a sample count different from
the framebuffer sample count, but if there are no attachments, any
sample count is allowed.
2018-09-18 13:22:28 +02:00
Philip Rebohle 4469ef1ec1
[d3d11] Replace shader debug name with shader key 2018-09-18 10:35:27 +02:00
Philip Rebohle a078bb947e
[d3d11] Replace D3D11ShaderKey with DxvkShaderKey 2018-09-18 10:35:08 +02:00
Philip Rebohle 0843e2211c
[dxvk] Add new DxvkShaderKey to represent unique shader key 2018-09-18 10:35:08 +02:00
Philip Rebohle 12efd88726
[dxvk] Avoid more unnecessary copies of ref-counted pointers
Improves performance measurably in Shadow Warrior 2 when CPU bound.
2018-09-17 23:42:34 +02:00
Philip Rebohle 3a1fbdaaf1
[dxvk] Avoid buffer slice copy when tracking buffer views 2018-09-17 23:30:36 +02:00
Philip Rebohle 6c889c0005
Revert "[d3d11] Avoid unnecessary buffer slice copy when mapping buffer"
This reverts commit 72106a02cb.

Breaks things for some reason. Doesn't have much of an impact anyway.
2018-09-17 23:08:00 +02:00
Philip Rebohle 72106a02cb
[d3d11] Avoid unnecessary buffer slice copy when mapping buffer 2018-09-17 22:04:31 +02:00
Philip Rebohle 820904f22d
[dxvk] Optimize ref counting around resource tracking
Micro-optimization that reduces the number of atomic increments
and decrements when moving reference-counted objects around.
2018-09-17 20:42:08 +02:00
Philip Rebohle f42f708f72
[dxvk] Rename DxvkBindingState -> DxvkBindingMask
Preparation for some more binding-related work.
2018-09-17 10:45:28 +02:00
Philip Rebohle eac86fab15
[dxvk] Do not map allocations that don't need a HOST_VISIBLE memory type
Should reduce the amount of virtual memory used on systems without
dedicated VRAM. Refs #640.
2018-09-17 09:08:00 +02:00
Philip Rebohle 19408f0ebe
[d3d11] Fix reported RowPitch/DepthPitch for mapped buffers
Some games rely on this being the exact buffer size.
2018-09-17 07:45:05 +02:00
Philip Rebohle a78dc3b444
[dxvk] Do not store a strong reference from adapter to instance
The instance stores an array of adapters now. Fixes crash when
using the device filter, and fixes the instance not getting
destroyed.
2018-09-16 19:11:15 +02:00
Philip Rebohle fde67b9773
[dxgi] IsCurrent is not actually a stub 2018-09-16 10:20:24 +02:00
Philip Rebohle c8e0c253ba
[dxvk] Simplify graphics pipeline instance management 2018-09-16 10:07:45 +02:00
Philip Rebohle b6bf72aeb6
[dxvk] Fix some legacy cruft around Vulkan instance creation 2018-09-15 14:16:56 +02:00
Philip Rebohle dc29eb4d07
[meta] Release 0.72 2018-09-14 19:24:43 +02:00
Philip Rebohle 364e15d11a
[dxvk] Remove all remaining pipecompiler code 2018-09-14 17:22:56 +02:00
Philip Rebohle 18927dc958
[dxvk] Remove asynchronous pipeline compiler 2018-09-14 16:46:07 +02:00
Jens Peters d4947261c6
[util] Improve logging of configuration options 2018-09-14 15:34:46 +02:00
Philip Rebohle 4439f94955
[meta] Actually remove all wine output from setup script 2018-09-14 14:55:45 +02:00
Philip Rebohle fca11582b5
[meta] Remove colors from setup script
Should hopefully fix text encoding issues.
2018-09-14 14:38:06 +02:00
Philip Rebohle be1bb59844
[d3d11] Test streamout queries + additional output components 2018-09-14 13:45:49 +02:00