Commit Graph

1728 Commits

Author SHA1 Message Date
Philip Rebohle c0398caa2b
[dxvk] Load user config as well as per-app options in DxvkInstance 2018-08-07 14:59:09 +02:00
Philip Rebohle 5e58083c01
[util] Add classes and functions to support configuration files 2018-08-07 14:59:03 +02:00
Philip Rebohle 3359b89166
[d3d11] Do not hold strong references to the ID3D11Resource in views
Emulates Windows behaviour more closely. Fixes refcount-related
error messages in Unreal Engine 4 (see #302), as well as a crash
in Yakuza 0 (see #533).
2018-08-05 21:31:13 +02:00
Philip Rebohle ffc87faed0
[d3d11] Add private ref count helpers for ID3D11Resource 2018-08-05 21:31:13 +02:00
Philip Rebohle c223e35608
[d3d11] Do not keep a strong reference to the swap chain back buffer
Fixes crash in Yakuza 0 with fullscreen mode enabled. SEGA, please,
stop being lazy and learn to use reference counting correctly.
2018-08-05 21:31:13 +02:00
Philip Rebohle cdf6ffb9bc
[util] Add private reference count to COM object
This can be used in case DXVK needs to keep a strong reference
to an object but may not expose that reference to the application.
2018-08-05 21:31:09 +02:00
Philip Rebohle 871c96b130
[d3d11] Refactor Unordered Access View Creation
Part 4 / 4 of the refactor.
2018-08-05 19:28:39 +02:00
Philip Rebohle 55203eb458
[d3d11] Refactor Shader Resource View Creation
Part 3 / 4 of the refactor.
2018-08-05 19:20:12 +02:00
Philip Rebohle 1038bf2ef5
[d3d11] Refactor Render Target View Creation
Part 2 / 4 of the refactor.
2018-08-05 19:07:53 +02:00
Philip Rebohle 0598982f35
[d3d11] Refactor Depth-Stencil View Creation
Part 1 of 4 of a much needed refactor. Instead of translating
the structures in the D3D11Device class, we'll move the code
to the respective view classes in order to clean up.
2018-08-05 19:02:45 +02:00
Philip Rebohle 16315a39a0
[d3d11] Use new resource helper functions during view creation
This simplifies things when both buffers and textures are allowed.
2018-08-05 18:56:42 +02:00
Philip Rebohle b87f3f5155
[d3d11] Add common resource helper functions 2018-08-05 18:45:24 +02:00
Philip Rebohle 66e178756e
[d3d11] Introduce GetCommonBuffer helper
Also update GetCommonTexture documentation.
2018-08-05 18:29:29 +02:00
Philip Rebohle ace8e42213
[d3d11] Move BufferInfo struct into D3D11Buffer 2018-08-05 18:24:01 +02:00
Philip Rebohle 31140373eb
[tests] Restore old d3d11-triangle behaviour 2018-08-05 15:19:15 +02:00
Philip Rebohle 62e4c867ec
[dxgi] Relax IDXGISwapChain thread safety
Fixes a deadlock in Dragon Age: Inquisition.
2018-08-04 10:16:40 +02:00
Philip Rebohle 96176e3952
[meta] Release v0.64 2018-08-03 15:18:30 +02:00
Philip Rebohle 9293acfeb5
[dxbc] Work around OpControlBarrier issue on radv 18.2-git 2018-08-03 15:15:18 +02:00
Philip Rebohle fe66e668e5
[dxvk] Implement native discardBuffer function in the backend
This may be more efficient because it avoids renaming the buffer
in case it can be used without inserting additional barriers.
2018-08-03 11:28:00 +02:00
Philip Rebohle fb88070888
[d3d11] Implement copy flags for CopySubresourceRegion1 / UpdateSubresource1 2018-08-03 11:22:26 +02:00
Philip Rebohle 3fee20dfec
[d3d11] Implement DiscardResource for buffers
We don't suppor this for images, and we don't support DiscardView yet.
Buffers can be invalidated, which may in some cases be beneficial in
order to avoid synchronization on the GPU.
2018-08-03 11:10:40 +02:00
Philip Rebohle 8044ce6c7e
[d3d11] Refactor UAV counter buffer allocator
- Fixes violation of the minStorageBufferOffsetAlignment limit
- Allows allocation of multiple counter buffers if necessary
2018-08-03 10:17:02 +02:00
Philip Rebohle 212bd56b93
[d3d11] Fix border color mapping for opaque white 2018-08-02 17:04:09 +02:00
Philip Rebohle 1da6617a73
[dxbc] Fix sample location order for 2xMSAA case
The sample locations were apparently incorrectly documented
in the Vulkan spec and have changed with the 1.1.82 update.
2018-08-01 11:38:59 +02:00
Philip Rebohle ffede83d9e
[dxvk] Remove unnecessary barrier recording before compute dispatch
This call is not needed any longer because we have compute init barriers.
Might allow for parallel compute shader dispatch in some situations.
2018-08-01 09:14:39 +02:00
Philip Rebohle 0ba00b3f59
[dxvk] Add extended device feature structure
This allows the client API to query and enable extended
features in the future, should it become necessary, much
like the extende feature queries.
2018-07-31 16:58:25 +02:00
Philip Rebohle ebb7902b2c
[dxvk] Add extended device info structure
This uses VK_KHR_get_physical_device_properties2
to query extension-specific device properties.
Queries info for VK_EXT_vertex_attribute_divisor.
2018-07-31 16:03:44 +02:00
Philip Rebohle 91407098d5
[dxbc] Actually set "icb" as the debug name of the ICB 2018-07-30 22:08:01 +02:00
Philip Rebohle f8392b4f83
[dxbc] Fix incorrect pointer type when loading from baked ICBs 2018-07-30 21:08:52 +02:00
Philip Rebohle 2166769096
[dxbc] Map large ICBs to a constant buffer
Should fix an issue with compiling a specific compute shader in
the game Dragon Ball Xenoverse 2 (#523).
2018-07-30 20:52:42 +02:00
Philip Rebohle bf06654a83
[d3d11] Remove DXVK_SHADER_READ_PATH
Broken, and won't work with ICB UBOs.
2018-07-30 20:29:05 +02:00
Philip Rebohle bf912d0a5f
[d3d11] Create shader constant buffer if necessary 2018-07-30 20:29:05 +02:00
Philip Rebohle c31e646921
[dxvk] Introduce concept of shader constants
Large constant arrays should be moved to a uniform buffer instead
of being baked directly into the shader code.
2018-07-30 20:29:05 +02:00
Philip Rebohle a8eb7d343a
[dxvk] Reconfigure bindings
In order to map ICBs to uniform buffers, we need one spare constant
buffer slot per shader stage.
2018-07-30 20:29:05 +02:00
Philip Rebohle af5de8a8ef
[d3d11] Fix compiler warning 2018-07-30 20:27:18 +02:00
Philip Rebohle 7f0f7ac048
[d3d11] Refactor shader binding
This way we can get rid of an unnecessary template and make future
extensions possible.
2018-07-30 19:37:19 +02:00
Jacek Caban b7bdd9de38 [dxvk] Include vector inheaders that use it.
Fixes winelib compilation after recent changes.
2018-07-28 15:09:31 +02:00
Philip Rebohle e555df93a1
[build] Improve winelib builds
Closes #513, which this is based on.
2018-07-28 15:07:36 +02:00
Adrià Cereto-Massagué 0aa7ab8fdb add winelib build support to the setup script 2018-07-27 11:18:51 +02:00
Philip Rebohle 656cb2e4aa
[dxvk] Refactor Vulkan extension management
Adding an extension will now require an additional step, but
this evolved version of the extension list code is more sane
and the structures can be more easily copied around.
2018-07-23 20:07:21 +02:00
Philip Rebohle 6d24f767c6
[dxvk] Load function pointers for VK_KHR_get_physical_device_properties2 2018-07-23 18:09:50 +02:00
Philip Rebohle adadf362a3
[d3d11] Optimize WaitForResource behaviour when resource is already idle
We don't have to flush everything in this case, just flushing the current
CS chunk is enough to determine if the resource is in use by the GPU.
2018-07-23 16:08:01 +02:00
Philip Rebohle 662b6429a8
[d3d11] Refactor resource initialization
In addition to moving the code to a separate class, this also
improves flushing behaviour by limiting the amount of memory
being initialized rather than the number of commands executed.
2018-07-23 15:21:17 +02:00
Jacek Caban 1d3a121e89 [build] Don't use full paths in build files. 2018-07-23 13:07:47 +02:00
Philip Rebohle 2b8c96fe35
[util] Fix reference counting for thread objects
Fixes a potential race when threads run out of scope
before the thread function has started.
2018-07-22 02:24:04 +02:00
Philip Rebohle e4c5880ac6
[util] Fix Win32 thread helper
- Implements move semantics for thread objects properly.
  This is necessary in order to avoid closing the thread
  handle multiple times, and to avoid passing invalid
  pointers to the thread function in some cases.
- More closely emulates the behaviour of std::thread.
2018-07-22 01:28:35 +02:00
Philip Rebohle d11b8b5402
[meta] Release 0.63 2018-07-21 13:47:27 +02:00
Philip Rebohle 64ffcbc9ef
[util] Code cleanup for winegcc stuff 2018-07-21 12:51:50 +02:00
Mikhail Paulyshka f38ee85a39 [build] Fix compilation on MSVC (#505)
* [build] do not use shared_library/objects property with MSVC

* [util] use ./com/com_include.h instead of windef.h

It is required for Windows 10 SDK.

* [util] store thread procedure lambda in std::function

* [dxgi] fix annoying MSVC warning

warning C4099: 'IDXGIVkInteropDevice': type name first seen using 'class' now seen using 'struct'
2018-07-21 12:43:33 +02:00
Philip Rebohle c5a010a48c
[dxgi] Do not use MUTABLE_FORMAT_BIT for SRGB images
Creation of non-SRGB views for SRGB images fails on Windows.
2018-07-21 11:41:45 +02:00