Commit Graph

414 Commits

Author SHA1 Message Date
Philip Rebohle 86db5aab67
[dxvk] Increased queued command submission limit
Potentially reduces the number of sync points when a game
is primarily GPU limited. Improves performance in Nier by
a few frames per second.
2018-01-14 11:23:14 +01:00
Philip Rebohle e05c961b9e [dxvk] Limit vkCmdUpdateBuffer size to 4kB
This should help prevent issues with command buffers becoming
too big. Larger uploads will use a staging buffer instead.
2018-01-13 23:41:36 +01: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 c1f16d36bd [dxvk] Implemented local pipeline cache 2018-01-13 22:18:32 +01:00
Philip Rebohle 9f53521e19
Merge pull request #6 from xDShot/patch-1
Add glslang to dependencies
2018-01-13 18:58:50 +01:00
Philip Rebohle 10269876e3 [dxgi] Initial fullscreen support
The implementation is highly experimental and may cause issues.
Tested with DXUT-based Microsoft SDK samples and Nier:Automata.
2018-01-13 18:56:15 +01:00
xDShot 27014293c3 Add glslang to dependencies
It contains glslangValidator, which is needed for building.
2018-01-13 20:05:23 +03:00
Philip Rebohle 745ded47e0 [dxgi] Removed remaining SDL code 2018-01-13 16:36:04 +01:00
Philip Rebohle 2b5bb16334 [dxgi] Removed SDL dependency from DxgiOutput 2018-01-13 16:32:46 +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 96a97aa0c4 [dxvk] Added HUD
Experimental version of a HUD which displays information
about the hardware, driver version, and frames per second.
2018-01-13 03:53:33 +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 38fa9ce9c9 [dxvk] Removed unused resource warning 2018-01-12 14:49:08 +01:00
Philip Rebohle 5dd9fea011 [dxvk] Implemented input layout validation
Checks whether all input slots consumed by the vertex shader
are provided by the input layout, and disables rendering in
case the state validation fails. This should hopefully fix
GPU lockups in Nier:Automata.
2018-01-12 14:25:26 +01:00
Philip Rebohle 64eb0f909d [tests] Removed dxvk-triangle test 2018-01-12 13:56:25 +01:00
Philip Rebohle 1164ed30c3 [dxvk] Minor fixes 2018-01-12 12:51:39 +01:00
Philip Rebohle 2dd2d16a09 [d3d11] Return S_OK from GetDeviceRemovedReason 2018-01-12 11:39:59 +01:00
Philip Rebohle 19d81f1aef [d3d11] Made shader name public for debugging 2018-01-12 00:43:19 +01:00
Philip Rebohle 3fc064f434 [d3d11] Added shader module creation log 2018-01-12 00:06:54 +01:00
Philip Rebohle a0fafe3043 [util] Log level can now be controlled manually 2018-01-12 00:05:09 +01:00
Philip Rebohle d1d5f10520 [dxvk] Added debug messages for unbound resources 2018-01-11 21:40:04 +01:00
Philip Rebohle 5f5bb69fa7 [dxbc] Image queries now support UAV images 2018-01-11 21:39:17 +01:00
Philip Rebohle a875e045c5 [dxvk] Moved descriptor set updates into DxvkContext 2018-01-11 20:31:18 +01:00
Philip Rebohle 30eb43a284 [dxvk] Minor memory management tweaks 2018-01-11 19:06:58 +01:00
Philip Rebohle 32078033c6 [d3d11] Fixed UAV counter buffer binding 2018-01-11 17:12:39 +01:00
Philip Rebohle 69c5af4455 [dxbc] Implemented append/consume functionality
Nier will now render the bullets properly.
2018-01-11 17:11:51 +01:00
Philip Rebohle f5bfaac4b3 [d3d11] Use cube array views for non-array cube maps
This is actually necessary in order to properly render the map mode in
Nier:Automata, which binds non-array cube maps to a cube array slot.
2018-01-11 12:33:38 +01:00
Philip Rebohle c1d6c20066 [d3d11] Implemented D3D11 parts of append/consume buffers 2018-01-11 12:23:55 +01:00
Philip Rebohle 8bccbbccc8 [dxvk] Using derivative graphics pipelines 2018-01-10 22:54:00 +01:00
Philip Rebohle 3ab75c8538 [dxvk] Fixed potential bugs in vertex buffer binding code 2018-01-10 21:53:13 +01:00
Philip Rebohle ed642a57a7 [dxvk] Simplified state-based pipeline lookup 2018-01-10 21:28:20 +01:00
Philip Rebohle 9c90c1ac00 [dxvk] Optimized pipeline state updates 2018-01-10 20:40:10 +01:00
Philip Rebohle 1b67ffaed2 [d3d11] Added default sampler state 2018-01-10 19:07:55 +01:00
Philip Rebohle 74722fa693 [dxvk] Implementing unbound resource handling (4/4)
The shader compiler now queries whether a constant buffer or texture is
bound before trying to access it for reading. This is not yet implemented
for image fetch operations, atomic operations, or buffer load/store ops.
2018-01-10 18:58:17 +01:00
Philip Rebohle fe02c5d6b9 [dxvk] Implementing unbound resource handling (3/4)
The shader compiler will now generate specialization constants
for shader resources, uniform access views, and constant buffers.
2018-01-10 13:44:04 +01:00
Philip Rebohle 39b5d84d6a [dxgi] Added missing view type definition 2018-01-10 13:43:23 +01:00
Philip Rebohle b22d56ac06 [dxvk] Implementing unbound resource handling (2/4)
Refactored pipeline binding and descriptor set updates so that
no descriptor info gets written for unbound resources.
2018-01-10 12:13:46 +01:00
Philip Rebohle c64103c73f [dxvk] Implementing unbound resource handling (1/4)
In order to emulate D3D11 behaviour when a resource is not bound,
we use specialization constants. This requires further changes in
the shader compiler.
2018-01-10 11:44:40 +01:00
Philip Rebohle 38ee8f4f95 [dxvk] Unbound resource prep work 2018-01-10 10:23:51 +01:00
Philip Rebohle ee796b966d [dxvk] Reduced staging buffer size
Allocating as much memory as we did was wasteful. The new limit may
still be too generous for most applications, but this will require
more testing.
2018-01-10 10:22:33 +01:00
Philip Rebohle ab2c7de523 [d3d11] Use CUBE instead of CUBE_ARRAY for non-array cubes
Since the change has been reverted in the DXBC compiler, it also needs
to be changed back during view creation.
2018-01-10 10:18:26 +01:00
Philip Rebohle bde8ba9400 [dxbc] Simplified f16tof32 implementation 2018-01-10 09:16:42 +01:00
Philip Rebohle da867d4bca [dxvk] Replaced DxvkResourceType by VkImageViewType 2018-01-09 20:35:29 +01:00
Philip Rebohle 3419d55dee [dxvk] Tweaked descriptor allocation 2018-01-09 20:04:50 +01:00
Philip Rebohle e2d9693ac3 [dxvk] Fixed compressed texture upload
Fixes issues with particles being overly bright in Nier:Automata.
2018-01-09 19:08:23 +01:00
Philip Rebohle c7d0729e06 [dxbc] Fixed bit field instructions 2018-01-09 15:39:41 +01:00
Philip Rebohle 180cc35c84 [d3d11] Use VK_IMAGE_VIEW_TYPE_CUBE_ARRAY for non-array cube maps
Games may bind simple cube map views to a resource slot that requires
a cube map array view. Fixes GPU lockups in Nier: Automata.
2018-01-09 00:51:10 +01:00
Philip Rebohle 7fd1f57902 [dxbc] Fixed invalid types and IDs in generated SPIR-V 2018-01-08 22:26:45 +01:00