Commit Graph

446 Commits

Author SHA1 Message Date
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
Philip Rebohle c7e33e636e [dxvk] Fixed vertex buffer binding issue
If an application binds vertex buffers before changing the input layout,
it might happen that the vertex buffers are not bound correctly to the
Vulkan command buffer. This issue is now resolved.
2018-01-08 20:23:21 +01:00
Philip Rebohle cb748c786a [dxvk] Added missing image barrier after compute shader execution 2018-01-08 19:07:57 +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 9024f8bb2c [dxvk] Inlined all frequently called DxvkCmdList methods 2018-01-08 14:21:50 +01:00
Philip Rebohle 7912f6c604 [dxbc] Track dimension of resource slots
This shall help binding dummy resources in case an application
binds none or an incompatible resource to a slot.
2018-01-08 13:39:37 +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 5cfbb74455 [dxvk] Added new convenient buffer slice constructor 2018-01-07 21:46:26 +01:00
Philip Rebohle 7cc65be16b [dxbc] Fixed redundant bitcasts 2018-01-07 21:04:23 +01:00
Philip Rebohle f4cd90d6fa [dxbc] Implemented vendor-specific workarounds in an attemt to fix Nvidia 2018-01-07 20:05:27 +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 f7e1efbaaf [dxbc] Fixed AtomicUmax emitting the wrong instruction 2018-01-05 19:48:45 +01:00
Philip Rebohle 356591cc99 [d3d11] Fixed viewport offset 2018-01-05 16:53:12 +01:00
Philip Rebohle 1dfd62a118 [dxbc] Added debug name to x# registers 2018-01-05 16:46:17 +01:00
Philip Rebohle ecbdc7f7c7 [general] Downgraded SPIR-V header to 1.0
Solves issues with RenderDoc, which does not support SPIR-V versions
above 1.0.
2018-01-05 14:50:39 +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 c816078f13 [dxbc] Disabled clip and cull planes for now
We would have to write these values, but the feature
is currently not supported in the D3D11 implementation.
2018-01-03 12:46:04 +01:00