Commit Graph

1401 Commits

Author SHA1 Message Date
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
Philip Rebohle 5fe4c4f610
[dxvk] Use VkImageViewUsageCreateInfoKHR when creating image views
Must be used when view formats are used that do not support all
usage bits of the underlying image. Refs #504.
2018-07-21 10:58:06 +02:00
Philip Rebohle 8ffe545b38
Revert "[dxvk] Bump maximum number of command buffers in flight to 16"
This reverts commit d744a3cd69.

Reportely has an unexpected negative impact on frame times in
The Witcher 3 and potentially other games on some setups.
2018-07-20 15:56:07 +02:00
Philip Rebohle de920458d7
[dxvk] Make DxvkEvent lock-free
Reduces locking overhead and potential stuttering
issues when an app is spinning on the event.
2018-07-20 15:48:09 +02:00
Philip Rebohle b601a94750
[dxgi] Make faking Dx10 support a per-app option
Also whitelist World of Warcraft, which requires this hack for now.
2018-07-20 13:49:40 +02:00
Philip Rebohle d744a3cd69
[dxvk] Bump maximum number of command buffers in flight to 16 2018-07-20 11:42:42 +02:00
Philip Rebohle adcc7a4573
[dxgi] Synchronize presentation to enforce maximum frame latency
Some games may rely on the maximum number of frames in flight.
Might fix a related issue in Hard Reset (#503) and Okami HD (#283).
2018-07-20 11:40:37 +02:00
Philip Rebohle fd55520301
[dxgi] Implement IDXGIDevice::SetMaximumFrameLatency
We'll be doing the CPU synchronization with DXVK events during
presentation.
2018-07-20 11:39:51 +02:00
Philip Rebohle 0fd8019a70
[dxvk] Add DxvkEvent::wait method 2018-07-20 11:39:24 +02:00
Philip Rebohle 336b3858c9
[dxvk] Relax VK_EXT_vertex_attribute_divisor requirement
Nvidia 396.45 still does not support this. Nvidia, please, we need it.
2018-07-19 23:10:12 +02:00
Philip Rebohle 19f74a89cd
[dxvk] Optimize buffer renaming
Small reduction in CPU overhead by using spinlocks instead of
a full mutex for the two buffer free lists.
2018-07-19 09:44:58 +02:00
Jacek Caban 88cda20746 [d3d11] Import dxgi by -l instead of directly specifying library name. 2018-07-19 08:55:34 +02:00
Jacek Caban ead2147738 [build] Use -mwindows to link executables. 2018-07-19 08:55:34 +02:00
Jacek Caban c934d85b85 [d3d11] Move D3D11ImmediateContext constexpr values to .cpp file
In my winelib builds, I get unresolved dxvk::D3D11ImmediateContext::MinFlushIntervalUs symbol. I'm not sure why it doesn't inline this constexpr, but it doesn't seem useful to expose that in header anyway.
2018-07-19 08:55:34 +02:00
Jacek Caban 6d16bb4c87 Don't use std::thread.
Wine needs to setup each thread that has an access to Windows APIs. It means that in winelib builds, we can't let standard C++ library create threads and need to use Wine for that instead. I wrote a thin wrapper around Windows thread functions so that the rest of code just has to use new dxvk::thread class instead of std::thread.
2018-07-19 08:55:34 +02:00
Jacek Caban cea1f15eab [util] Don't use std::wstring.
std::wstring is problematic, because wchar_t on other platforms might not be what we need. -fshort-wchar can mitigate that partially, but it's more problematic for stdc++ classes.
2018-07-19 08:55:34 +02:00
Jacek Caban c2c10cc207 [util] Reimplement fromws using WideCharToMultiByte and system codepage.
Also, using UTF-8 for convertion may not be what's intended, esp. if such strings end up being passed back to system API (eg. open file). The patch uses CP_ACP on mingw build (which is how Windows APIs will interpret it) or CP_UNIXCP on Wine (which is Wine extension to convert to whatever glibc and other host libs expect).

It's also needed for the next patch.
2018-07-19 08:55:34 +02:00
Jacek Caban 02ae42c7de [util] Remove getTempDirectory
It's not used anywhere.
2018-07-19 08:55:34 +02:00
Jacek Caban 06511aa72c [build] Use .spec files instead of .def files in winelib build 2018-07-19 08:55:34 +02:00
Jacek Caban 635a43fefe [build] Explicitly specify .dll and .exe extensions in winelib build
meson can't handle that itself.
2018-07-19 08:55:34 +02:00
Jacek Caban 2fb0ccae7f [buid] Support linking system DLLs in winelib builds
find_library doesn't work when using winegcc. Specify linker command instead.
2018-07-19 08:55:34 +02:00
Jacek Caban f81de6bacf [build] Define NOMINMAX for all toolchains
mingw doesn't need it for C++, but won't hurt to be more explicit. Both msvc and Wine need it.
2018-07-19 08:55:34 +02:00
Philip Rebohle 6848b45c7a Revert "[dxgi] Support multiple outputs per adapter"
This reverts commit 1c86ed8c93.

Causes build issues on 32-bit platforms.
2018-07-16 19:07:41 +02:00
Philip Rebohle 1c86ed8c93 [dxgi] Support multiple outputs per adapter 2018-07-16 17:03:55 +02:00
Philip Rebohle 4ab5682260 [general] Update Vulkan headers to 1.1.80 2018-07-14 12:36:43 +02:00
Philip Rebohle a728884742 [dxgi] Fixed nonsense compiler warning with some GCC versions 2018-07-14 12:15:15 +02:00
Philip Rebohle f7691d4db7
[meta] Release v0.62 2018-07-14 08:47:42 +02:00
Philip Rebohle 9de3a619c2
[dxgi] Use back buffer size to determine fullscreen resolution
This is the correct behaviour on Windows and may fix some issues.
2018-07-12 16:00:33 +02:00