1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

1139 Commits

Author SHA1 Message Date
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
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
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
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
5cfbb74455 [dxvk] Added new convenient buffer slice constructor 2018-01-07 21:46:26 +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
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
75152ae16f [dxvk] Made VK_KHR_maintenance2 optional
Unlike VK_KHR_maintenance1, not all D3D11 applications rely on
features provided by this extension. Keeping this optional helps
with RenderDoc, which does not expose the extension.
2018-01-03 02:38:55 +01:00
Philip Rebohle
d4db877cdc [dxvk] Fixed staging buffer alignment
Four-byte alignment is required in order to avoid illegal
vkCmdCopyBufferToImage calls. We align staging buffer slices to
a full cache line in order to improve performance.
2018-01-01 23:32:08 +01:00
Philip Rebohle
21582b955a [dxvk] Require VK_KHR_maintenance2
This extension helps with some compatibility issues that are
somewhat inevitable during the D3D11->Vulkan translation.
2018-01-01 23:27:51 +01:00
Philip Rebohle
fd2bb610eb [d3d11] Implemented indirect draws and dispatch 2017-12-31 01:31:08 +01:00
Philip Rebohle
b7ce9660c3 [d3d11] Implemented CopySubresourceRegion for images 2017-12-30 19:10:45 +01:00
Philip Rebohle
793ea6d914 [dxvk] Descriptor set updates now use descriptor type info
This fixes an issue where the wrong resource would be used for a
descriptor set update if multiple resources have been bound to a
single resource slot.
2017-12-29 15:06:33 +01:00
Philip Rebohle
8691d29185 [dxvk] Initial support for post-compute barriers 2017-12-29 01:09:54 +01:00
Philip Rebohle
7f5fa18d0b [dxbc] Enabled SPV_KHR_shader_draw_parameters for vertex shaders 2017-12-27 14:31:38 +01:00
Philip Rebohle
0d3a1b25a1 [d3d11] Initial support for image updates + mapping 2017-12-25 20:40:48 +01:00
Philip Rebohle
a368d04fa0 [dxvk] Removed leftover line of code 2017-12-25 16:09:00 +01:00
Philip Rebohle
89138e5b40 [dxvk] Fixed lockup issue in thread destructors 2017-12-25 16:05:11 +01:00
Philip Rebohle
24bceb86c2 [dxvk] Fixed 3D image upload 2017-12-24 15:29:10 +01:00
Philip Rebohle
82b2c40405 [dxvk] Simplified resource binding
The backend no longer differentiates between compute pipeline
resources and graphics pipeline resources.
2017-12-23 15:11:23 +01:00
Philip Rebohle
518b469742 [dxvk] Added command stream classes
While these are not being used as of yet, these classes can be
used to implement command stream multithreading in the future.
They are also useful to implement command lists for deferred
contexts, which are a core feature of D3D11.
2017-12-20 22:17:14 +01:00
Philip Rebohle
84190369ab [d3d11] Optimized resource binding methods 2017-12-20 17:37:46 +01:00
Philip Rebohle
2ed2d892d6 [dxvk] Optimized resource binding
Fixes a few bottlenecks that were encountered in the Cascading Shadow
Maps demo from the Microsoft SDK. Performance is now slightly better
than wined3d with CSMT, MESA_NO_ERROR and mesa_glthread enabled.
2017-12-20 12:13:08 +01:00
Philip Rebohle
f68655feff [dxvk] Separated buffer renaming from allocation 2017-12-20 02:58:36 +01:00
Philip Rebohle
70e5314cc6 [dxvk] Optimized resource tracking
Putting all resources that are used by a command list
into a vector instead of a hash set is more efficient.
2017-12-20 02:45:57 +01:00
Philip Rebohle
d2b676b551 [dxvk] Fixed descriptor pool leak 2017-12-20 00:16:59 +01:00
Philip Rebohle
d1720c0c52 [dxbc] Implemented derivatives 2017-12-19 20:26:05 +01:00
Philip Rebohle
342e99a11c [dxvk] Optimized descriptor updates 2017-12-19 19:36:44 +01:00
Philip Rebohle
5415b685de [dxbc] Implemented type conversion instructions 2017-12-19 18:12:18 +01:00
Philip Rebohle
da2cc5a6a0 [dxvk] Fixed resource binding with invalidated buffers
When invalidating a constant buffer, the descriptor was not
updated, which usually led to the wrong resource being used
and could also cause crashes.

This fix also includes resource tracking for shader resources
on the graphics pipeline. The code needs to be made compatible
with the compute pipeline as well.
2017-12-19 01:08:48 +01:00
Philip Rebohle
c44b50ae4d [dxvk] Fixed bug where resource bindings would not be updated after rebinding the pipeline 2017-12-18 16:16:21 +01:00
Philip Rebohle
4d01517dd8 [d3d11] Geometry shader prep work 2017-12-18 12:53:53 +01:00
Philip Rebohle
38b989ec91 [dxvk] vkCmdUpdateBuffer can only be used if both offset and size are aligned to four bytes 2017-12-18 12:44:18 +01:00
Philip Rebohle
ebabc0e578 [dxvk] Implemented proper swap chain synchronization 2017-12-16 21:30:48 +01:00
Philip Rebohle
1fe5b74762 Optimized command submission
Command submission now does not synchronize with the device every single
time. Instead, the command list and the fence that was created for it are
added to a queue. A separate thread will then wait for the execution to
complete and return the command list to the device.
2017-12-16 18:10:55 +01:00
Philip Rebohle
d5a49698b4 [dxvk] Implemented new memory allocator with sub-allocation 2017-12-16 16:48:42 +01:00
Philip Rebohle
d3b2174180 [dxvk] Implemented buffer renaming 2017-12-16 13:21:11 +01:00
Philip Rebohle
d9f38a7f42 [d3d11] Minor restructuring 2017-12-15 19:11:10 +01:00
Philip Rebohle
c0a963ae5b [dxvk] Renamed DxvkBufferSlice methods for convenience 2017-12-14 19:11:13 +01:00
Philip Rebohle
4502816bb6 [dxvk] Renamed DxvkBufferSlice methods for convenience 2017-12-14 19:09:53 +01:00
Philip Rebohle
9827ace3b0 [d3d11] Fixed buffer bindings with non-zero offsets 2017-12-14 19:07:08 +01:00
Philip Rebohle
40241e0b22 [dxvk] DxvkBufferBinding -> DxvkBufferSlice 2017-12-14 15:24:43 +01:00
Philip Rebohle
3d4304096b [dxvk] Data buffer can now be created uninitialized 2017-12-12 15:39:20 +01:00