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

650 Commits

Author SHA1 Message Date
Philip Rebohle
05e0f3d52d
[dxvk] Remove mutex from Dxvk(Graphics|Compute)Pipeline
Not needed anymore because the pipe manager itself won't be
accessed by multiple threads any longer.
2018-03-29 16:36:31 +02:00
Philip Rebohle
6e27f12e22
[dxvk] Move DxvkPipelineManager object to DxvkContext
Since we create only one DxvkContext per D3D11Device, rather than
per D3D11DeviceContext as originally planned, there is no need to
keep the pipeline manager as a global thread-safe object. This may
slightly reduce CPU overhead.
2018-03-29 12:32:20 +02:00
Philip Rebohle
108bf2194f
[dxvk] Time pipeline creation in debug mode 2018-03-29 12:06:53 +02:00
Philip Rebohle
fc47fb8f6c
[dxvk] Do not create descriptor set layout/template if binding count is 0
Fixes a validation error in case an application renders geometry without
any active shader resource slots.
2018-03-26 23:13:33 +02:00
Philip Rebohle
ba9e1f307d
[dxbc] Don't use rvalue references for file streams 2018-03-23 18:17:16 +01:00
Philip Rebohle
44d8d6b8c3
[dxvk] Fixed command buffer synchronization 2018-03-22 20:15:46 +01:00
Philip Rebohle
2566909917
[dxvk] Remove DxvkFence 2018-03-22 19:01:01 +01:00
Philip Rebohle
0bdae4f930
[dxvk] Move fence object into DxvkCommandList
Reduces command submission overhead by reusing fence objects
instead of creating new ones for each submission. Improves
error reporting in case the submission cannot be complete.
2018-03-22 18:57:33 +01:00
Philip Rebohle
7f6c8dff95
[d3d11] Fix flush condition and CS thread synchronization
If chunks have been sent to the CS thread, we need to
flush even if the current chunk is empty.
2018-03-22 12:58:26 +01:00
Philip Rebohle
9215cfdcf2
[dxvk] Minor 2018-03-22 11:01:54 +01:00
Philip Rebohle
5c2144b55d
[dxvk] Move tess state validation to validatePipelineState 2018-03-21 15:22:18 +01:00
Philip Rebohle
ec161823e5
[dxvk] Check whether renderpass is null before creating pipeline 2018-03-21 15:09:34 +01:00
Philip Rebohle
17e981f360
[dxvk] Increase UAV slot count to 64 for the graphics pipeline
D3D11 raised this limit from 8 UAVs in the fragment shader to
64 UAVs in all graphics stages combined.
2018-03-21 04:56:33 +01:00
Sebastian Wick
4518b1b76e Shader cache (#188)
* [util] Adds getTempDirectory() function

Will be used by on-disk pipeline caching

* [dxvk] Implement on-disk shader caching

Saving the pipeline cache to disk when the application exits
should be sufficient but the DxvkPipelineCache destructor isn't
reliably called on exit (ref-counting issue?).
As a workaround every frame we check and save the cache if the
size increased by some amount or after one minute elapsed.

* [dxvk] Periodically update shader cache file in separate thread
2018-03-21 02:45:11 +01:00
Philip Rebohle
894444d43d
[dxvk] Remove old debug code 2018-03-20 22:36:02 +01:00
Philip Rebohle
42d49d7603
[dxvk] Respect bufferImageGranularity for non-linear images
May fix aliasing issues on GPUs where the bufferImageGranularity limit
is greater than the alignment requirement of non-linear resources.
2018-03-20 20:24:11 +01:00
Philip Rebohle
f762811af0
[dxvk] Use multiple free lists for physical buffer slices
Reduces lock contention and slightly improves performance in games
that rely heavily on the buffer renaming mechanism if the lock
protecting the original free list was contested.
2018-03-19 14:53:59 +01:00
Philip Rebohle
0eaa3fea3b
[dxvk] Implement thread-safe buffer renaming
This is required for resource mapping on deferred contexts.
May also fix a potential synchronization issue where a buffer
could be mapped multiple times before the CS thread would mark
the physical buffer as used, which would result in invalid data.
2018-03-19 02:18:44 +01:00
Philip Rebohle
94aa650f3e
[dxvk] Enable the use of VK_KHR_descriptor_update_template
Reduces the CPU overhead of descriptor set updates, which usually
happen once per draw call. Gains seem to be minor in most games,
some outliers show significantly better performance (i.e. Tomb Raider).
2018-03-17 23:50:03 +01:00
Philip Rebohle
0f800c6c51
[dxvk] Added Vulkan function pointers for VK_KHR_descriptor_update_template 2018-03-17 22:35:50 +01:00
Philip Rebohle
52a9a4f406
[dxvk] Reimplemented clearRenderTarget
Closer to the D3D11 API. We cannot use the normal clearColorImage and
clearDepthStencilImage methods in case the game uses a 2D array view
for a 3D image. Fixes some validation issues in Hellblade.
2018-03-17 17:59:43 +01:00
Philip Rebohle
3b43c1c183
[dxgi] Support more formats in the presenter
Should surpress "Unsupported format" warnings in games
based on Unreal Engine 4 and Frostbite Engine.
2018-03-17 09:20:06 +01:00
Guy1524
b3cd7547ca Move Custom PCI ID to DXGI 2018-03-16 19:40:26 -04:00
Philip Rebohle
c931b4ba87
[dxvk] Implement proper compute pipeline lookup
Fixes correctness issues and potential GPU lockups in case
a compute shader resource is not bound at dispatch time.
2018-03-16 01:25:18 +01:00
Philip Rebohle
9b3908823a
[dxvk] Fixed depth image layout regression 2018-03-16 01:05:30 +01:00
Philip Rebohle
25cae39cdb
[spirv] Remove SPIR-V tools integration
SPIR-V tools did not turn out to be useful, but increased the
binary size by a significant amount and caused build problems.

- spirv-opt: Far too slow for the intended purpose, and Nvidia
             specific shader issues have been reported and fixed.
- spirv-val: Not much value in practice since shaders can be
             written to a directory and validated manually.
2018-03-13 14:32:03 +01:00
Philip Rebohle
8e9d0878e6
[dxvk] Remove RenderDoc workaround
RenderDoc 1.0 cannot be used with DXVK anymore,
which makes the workaround obsolete.
2018-03-13 11:43:23 +01:00
Philip Rebohle
887e514442
[dxvk] Use dummy viewport if requested viewport size is 0
Fixes a bunch of validation errors in various games,
including The Witcher 3.
2018-03-12 13:14:27 +01:00
Philip Rebohle
a4a8e0d6c8
[dxvk] Add memory flag query to DxvkImage 2018-03-10 17:41:42 +01:00
Philip Rebohle
fb36b56891
[dxvk] Removed stat counters 2018-03-10 17:37:10 +01:00
Guy1524
1bad90ae96 Add Custom PCI Vendor and Device ID Support (#137)
* Add Custom PCI Vendor and Device ID Support

Allow the user to configure DXVK to use a custom PCI Vendor and Device ID, so that the program behaves the same on different cards.

* Remove AMD/NVIDIA/INTEL Shortcuts

* Remove extra semicolon

* Return DxvkGpuVendor to being an enum class

* Fixed hexadecimal output
2018-03-10 15:05:32 +01:00
Philip Rebohle
5ef0f31c66
[dxvk/d3d11] Refactored resource binding
Slightly reduces overhead of D3D11 *SetShaderResources methods.
2018-03-10 11:16:52 +01:00
Philip Rebohle
220c3301cf
[dxvk] Tweaked command stream chunk sizes and submission
Improves overall frame rate and latency in situations where the
application's render thread cannot keep up with the CS thread.
Considerable frametime improvements in NieR:Automata and
slightly higher frame rates in The Witcher 3.
2018-03-09 12:31:35 +01:00
Philip Rebohle
8d443cb50d
[dxvk] Reduced overhead of depth image descriptor layout check 2018-03-09 12:30:39 +01:00
Philip Rebohle
85d28f7328
[d3d11] Implemented ClearUnorderedAccessViewUint for raw and structured buffers 2018-03-07 16:29:13 +01:00
Philip Rebohle
360bf3ee4c
[dxvk] Recreate buffer views if necessary
Fixes broken animations and artifacts in The Witcher 3.
2018-03-07 13:54:28 +01:00
Philip Rebohle
ad017c2556
[dxvk] Implemented physical buffer view 2018-03-07 13:32:17 +01:00
Philip Rebohle
b494bb2ac1
[d3d11] Fixed potential sync issue in Map() 2018-03-07 10:37:27 +01:00
Philip Rebohle
6e981b91b6
[dxvk] Add adapter logging 2018-03-07 00:23:06 +01:00
Mikhail Paulyshka
9deb73a2a7 Add support for MSVC, attempt 3 (#130)
* [dxvk] fixes for MSVC

* nullptr -> int is illegal conversion for MSVC. nullptr was replaced with VK_NULL_HANDLE
* MSVC does not support source code strings longer than 65535 chars. String was replaced with array of chars.

* [utils] fixes for MSVC

* __mingw_uuidof() does not exists in MSVC
* apply GCC pragma only for GCC
* added missing header

* [dxbc] fixes for MSVC

*added missing header

* [dxgi] fixes for MSVC

* user __declspec(uuid()) instead of _mingw_uuidof()
* do not use DLLEXPORT macro for MSVC

* [d3d11] fixes for MSVC

* replace WINBOOL with BOOL
* do not declare D3D11 structs for MSVC
* do not use DLLEXPORT macro for MSVC

* [meson] fix build scripts for MSVC

* change cpp version from c++1z to c++latest for MSVC
* set -DOMINMAX definition for MSVC
* disable test and wine_utils for MSVC
* use .def files instead of __declspec(dllexport) for MSVC (bypass 'C2375: redefinition; different linkage' error)
* fix .def files for MinGW
* add --enable-stdcall-fixup linker flag for MinGW
2018-03-06 18:34:34 +01:00
Philip Rebohle
1cbe6829eb
Revert "Add MSVC support (#123)"
This reverts commit c63d4361a0ecc9d0d660742237b0e0ed3036c87e.
2018-03-05 14:32:28 +01:00
Mikhail Paulyshka
c63d4361a0 Add MSVC support (#123)
* [utils] fixes for MSVC

* __mingw_uuidof() does not exists in MSVC
* apply GCC pragma only for GCC
* added missing header

* [dxvk] fixes for MSVC

* nullptr -> int is illegal conversion for MSVC. nullptr was replaced with VK_NULL_HANDLE
* MSVC does not support source code strings longer than 65535 chars. String was replaced with array of chars.

* [dxbc] fixes for MSVC

*added missing header

* [dxgi] fixes for MSVC

* user __declspec(uuid()) instead of _mingw_uuidof()

* [d3d11] fixes for MSVC

* replace WINBOOL with BOOL
* do not declare D3D11 structs

* [meson] fix build scripts for MSVC

* change cpp version from 1z to 17 for MSVC
* set -DOMINMAX definition for MSVC
* disable test and wine_utils for MSVC
* use .def files instead of __declspec(dllexport) (bypass 'C2375: redefinition; different linkage' error)
2018-03-05 14:28:51 +01:00
Philip Rebohle
9f01ad1f7f
[dxvk] Fix typo 2018-03-02 17:28:17 +01:00
Philip Rebohle
49d2cee930
[dxvk] Fix Nvidia driver version number 2018-03-02 16:35:28 +01:00
Philip Rebohle
349817c52e
[dxvk] Do not enable HUD if DXVK_HUD is 0
Fixes #107.
2018-03-02 10:36:46 +01:00
ZeroFault
fae9916708 Debug logging for compute shaders (#115)
* Add debug logging for compute shaders

* remove redundant nullptr check
2018-03-02 10:33:06 +01:00
Philip Rebohle
e0fbfdf0e2
[dxvk] Use linked list for CS chunks
Improves memory efficiency and CPU overhead of the CSMT implementation
when the average number of bytes per command entry is less than 64 bytes.
2018-03-02 10:31:08 +01:00
Philip Rebohle
83eb34d71c
[dxvk] Replaced exception by error message 2018-03-01 08:23:55 +01:00
Philip Rebohle
dbe3662bfc
[dxvk] Fixed potential memory allocation issue 2018-03-01 07:29:05 +01:00
Philip Rebohle
bdfbd3e81c
[dxvk] Implemented new workaround for query-related lockups
vkGetQueryPoolResults may never return if VK_QUERY_RESULT_WAIT_BIT is
set, and may return queries as not available when they should in fact
be available. This would cause indefinite hangs, so instead we return
fake data to query objects if retrieving query data fails.
2018-02-28 12:39:16 +01:00