Philip Rebohle
a0e0ba1cc8
[dxvk] Align length when clearing entire buffer
...
Buffer slices in DXVK are always aligned to at least
256 bytes, so this is safe. Fixes a regression leading
to GPU hangs on RADV.
2018-05-25 21:02:15 +02:00
Philip Rebohle
b30e53fa0d
[dxvk] Track image (rather than the view) when generating mip maps
2018-05-25 19:15:14 +02:00
Philip Rebohle
4b37590e14
[dxvk] Use new mip map generator
2018-05-25 17:45:41 +02:00
Philip Rebohle
19b6a16173
[dxvk] Add new mip map generator
...
The current approach uses Vulkan blits, which does not
work if the image view in question has a different format
than the image itself.
2018-05-25 17:44:50 +02:00
Philip Rebohle
7ec93debf1
[dxvk] Add shaders for mip map generation
2018-05-25 17:44:34 +02:00
Philip Rebohle
254676049a
[dxvk] Added convenience equal checker for unordered maps
2018-05-24 20:18:37 +02:00
Philip Rebohle
d9772b0ffd
[dxvk] Create image views for all supported view types
...
Rather than creating just one image view per DxvkImageView, we create
views for all compatible types in an attempt to work around game bugs
in Diablo 3, Far Cry 5, Nier Automata, Dishonored 2, Trackmania etc.,
which bind incompatible resource views to some resource slots.
2018-05-24 11:44:04 +02:00
Philip Rebohle
7f619d9051
[dxvk] Use only one extra thread for async pipeline compilation
...
With the benefits of asynchronous compilation being generally low and
compilation in advance not being feasible, there is no reason to create
more threads.
2018-05-22 00:32:44 +02:00
Philip Rebohle
7408bc22b5
[dxvk] Remove ability to enable instance layers
2018-05-17 00:35:12 +02:00
Philip Rebohle
a30e1368b1
[dxvk] Implement name set merging
2018-05-17 00:35:04 +02:00
Philip Rebohle
796379a551
[dxvk] Refactor the way instance extensions are enabled
2018-05-17 00:34:48 +02:00
Philip Rebohle
d1eddbdc3f
[dxvk] Make vk::NameSet more versatile
2018-05-17 00:34:38 +02:00
Philip Rebohle
40b52758e3
[dxvk] Enumerate discrete GPUs before integrated GPUs
...
May help with games that do not run on Intel GPUs when
the Intel Vulkan driver is installed alongside the AMD
or Nvidia drivers.
2018-05-16 16:17:39 +02:00
Philip Rebohle
a90c2843a7
[dxvk] Remove std::vector from DxvkDataBuffer
...
Vectors are zero-initialized upon resize, which is unnecessary
in this case and potentially impacts performance.
2018-05-13 21:34:38 +02:00
Philip Rebohle
516d7f091e
Merge branch 'disable-opt-bit'
2018-05-13 16:19:31 +02:00
Philip Rebohle
f42f7cc743
[dxvk] Make use of the asynchronous pipeline compiler optional
...
Users can enable this by setting DXVK_USE_PIPECOMPILER=1.
2018-05-13 16:02:23 +02:00
Philip Rebohle
2ee80ce1bd
[dxvk] Log start/stop of pipe compiler worker threads
2018-05-13 15:37:31 +02:00
Philip Rebohle
368eea7310
[dxvk] Use derivative pipelines again
2018-05-13 15:37:18 +02:00
Philip Rebohle
3fc9466a07
[dxvk] Fix query scopes
...
Occlusion queries must begin and end in the same render pass.
Fixes a rendering issue in Shadow Warrior 2 on AMD drivers.
2018-05-12 19:46:08 +02:00
Philip Rebohle
5f3b65014f
[dxvk] Reset query pools on the init buffer
2018-05-12 19:45:42 +02:00
Philip Rebohle
3135359ee9
[dxvk] Create a separate command buffer for initialization tasks
...
We'll use this to reset query pools without having to spill
the active render pass. Required to fix a query-related bug.
2018-05-12 19:32:50 +02:00
Philip Rebohle
b805560340
[dxvk] Do not log invalid pipeline state
...
Fixes some log spam in case games attempt to render geometry
with an invalid pipeline state vector.
2018-05-10 21:59:57 +02:00
Philip Rebohle
cfb4791872
[dxvk] Use VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
...
Optimized versions of the pipelines will be compiled asynchronously.
2018-05-10 14:54:44 +02:00
Philip Rebohle
517a7532be
[dxvk] Added DxvkPipelineCompiler
2018-05-10 14:29:13 +02:00
Philip Rebohle
3b132196d3
[dxvk] Add ability to hold two pipeline handles to pipeline instances
2018-05-10 14:15:47 +02:00
Philip Rebohle
010fc6ad49
[dxvk] Implement DxvkGraphicsPipelineInstance
...
This should come in handy when compiling an optimized version of
a pipeline asynchronously. This can be extended to hold multiple
pipeline handles, i.e. one optimized one and one without opts.
Collateral damage: We're not using derivative pipelines anymore,
needs to be re-added at a later point.
2018-05-09 22:23:50 +02:00
Philip Rebohle
c7d2957d8f
[util] Remove duplicate tzcnt function
2018-05-09 20:09:09 +02:00
Philip Rebohle
37456d583e
[dxvk] Move DxvkPipelineCache to DxvkPipeManager
...
Since the pipeline cache isn't used for anything else but compiling
pipelines, keeping this stuff together is much more useful.
2018-05-09 14:26:45 +02:00
Philip Rebohle
47b9fd8b19
[dxvk] Reimplement vertex buffer bindings
...
Reduces the number of Vulkan calls for vertex buffer bindings and
works around incorrect validation errors emitted when applications
do not use a consecutive range of vertex bindings. No performance
impact is expected in most games.
2018-05-09 13:01:52 +02:00
Philip Rebohle
33e511485c
[hud] Fixed uninitialized depth bounds values
2018-05-07 21:53:32 +02:00
Philip Rebohle
cd92d0b992
[dxvk] Allow binding render targets of different sizes
...
In order to not cause Vulkan validation issues, we have
to reduce the framebuffer size. Fixes a regression in
Bioshock Infinite.
2018-05-07 20:46:20 +02:00
Philip Rebohle
ac1d505d14
[dxvk] Do not compute SHA-1 hash of generated shaders
...
We do not need this on this branch.
2018-05-04 00:16:39 +02:00
Philip Rebohle
ae0e5bccdd
[dxvk] Make shader accessible from shader module
2018-05-03 23:56:28 +02:00
Philip Rebohle
33357f1f36
[dxvk] Compute SHA-1 hash of generated shaders
2018-05-03 23:56:22 +02:00
Philip Rebohle
3a3b1eda59
[dxvk] Move render pass out of pipeline state vector
2018-05-03 23:48:45 +02:00
Philip Rebohle
5683422208
Merge branch 'clearopt'
2018-05-02 00:45:17 +02:00
Philip Rebohle
e30a8299e6
[dxvk] Refactor DxvkFramebuffer and DxvkRenderpass
2018-05-02 00:45:10 +02:00
Philip Rebohle
badb93334e
[dxvk] Fix DxvkContext::transformImage
...
We have to spill the render pass before transforming the
image. We don't need the barrier if the old and new
layout are the same.
2018-05-01 23:29:58 +02:00
Philip Rebohle
5e02c1bb2f
[dxvk] Move DxvkPipelineManager instance back to DxvkDevice
2018-05-01 16:56:33 +02:00
Philip Rebohle
d201a1f7c6
[dxvk] Made pipe manager and pipeline classes thread-safe
2018-05-01 16:45:28 +02:00
Philip Rebohle
cf1358b2f4
[dxvk] Fixed partial depth-stencil clear operations
2018-04-30 21:42:16 +02:00
Philip Rebohle
ba53cf92ac
Revert "[dxvk] Refactor DxvkFramebuffer and DxvkRenderpass"
...
This reverts commit 1bbfe770139f222d33bc54e471c8516950abd4b7.
Breaks Path of Exile.
2018-04-30 18:47:35 +02:00
Philip Rebohle
5d5be87402
[dxvk] Oprimize render target clear operations
...
We can save one image layout transition when clearing a render
target by delaying clears until vkCmdBeginRenderPass is called.
2018-04-30 17:04:13 +02:00
Philip Rebohle
1bbfe77013
[dxvk] Refactor DxvkFramebuffer and DxvkRenderpass
2018-04-30 15:47:29 +02:00
Philip Rebohle
1bcae90dd0
[dxvk] Fix image layouts for images using VK_IMAGE_TILING_LINEAR
...
We have to use VK_IMAGE_LAYOUT_GENERAL for those. On top of that,
we should avoid image transitions when the image is in GENERAL
layout anyway in order to save some time on the GPU.
2018-04-29 15:28:50 +02:00
Philip Rebohle
9aa73d1148
[dxvk] Set non-zero framebuffer size when there are no attachments
...
This is required for UAV-only rendering and will be required for
stream output in the future as well.
2018-04-29 11:19:18 +02:00
pchome
1dbf8bf2a1
[dxvk] Fix native build on *nix x86_64 systems ( #328 )
...
* [dxvk] Fix native build on *nix x86_64 systems
> /usr/include/c++/v1/algorithm:2633:1:
> note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned long' vs. 'unsigned long long')
winegcc, clang-tidy and other native build types/tools are affected.
http://en.cppreference.com/w/cpp/language/types#Data_models
> 64 bit systems:
> * LLP64 or 4/4/8 (int and long are 32-bit, pointer is 64-bit)
> * Win64 API
> * LP64 or 4/8/8 (int is 32-bit, long and pointer are 64-bit)
> * Unix and Unix-like systems (Linux, Mac OS X)
http://en.cppreference.com/w/cpp/types/integer#Function_macros_for_minimum-width_integer_constants
Macro `UINT64_C(1)` from `stdint.h` should literally interpret `1` to `1UL` or `1ULL`
```c
# if __WORDSIZE == 64
# define UINT64_C(c) c ## UL
# else
# define UINT64_C(c) c ## ULL
# endif
```
* [dxvk] Fix native build on *nix x86_64 systems
Use explicit template argument instead of 1ull or UINT64_C(1) macro.
2018-04-28 09:08:14 +02:00
Philip Rebohle
1784b8c44d
[d3d11] Merge interop API
2018-04-26 22:20:09 +02:00
Philip Rebohle
8cb3a266f7
[dxvk] Fix potential state tracking issue when updating render targets
2018-04-26 18:43:19 +02:00
Philip Rebohle
962a7f5766
[dxvk] Ignore redundant render target bindings
...
Further reduces render pass count if applications bind render targets
without using them, and then bind the old set of render targets again.
2018-04-26 15:30:18 +02:00