Hans-Kristian Arntzen
1d51818d8f
vkd3d: Fix compile error introduced by bad rebase.
...
Somehow the rebase got really screwed up :\
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:42:30 +02:00
Hans-Kristian Arntzen
a8f623e60d
vkd3d: Negate upload_hvv config.
...
Enable resizable BAR style allocations by default, and add option to
disable it.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
12066a2b67
vkd3d: Add debug config to log resizable BAR allocations.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
710fa98918
vkd3d: Setup resizable bar budget.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
cec741706d
vkd3d: Refactor out memory topology queries.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
abdaeb136d
vkd3d: Add a memory budget per memory type.
...
For resizable BAR, we don't want to endlessly promote UPLOAD heaps to
BAR since VRAM is precious. The aim is to set a fixed budget where we
can keep allocating until full, at which point we fall back to plain HOST.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
e0451bb541
vkd3d: Handle fallbacks properly in suballocator.
...
With BAR budgets, what will happen is that
- Small allocation is requested
- A new chunk is requested
- try_suballocate_memory will end up calling allocate_memory, which
allocates a fallback memory type
- Subsequent small allocators will always end up allocating a new
fallback memory block, never reusing existing blocks.
- System memory is rapidly exhausted once apps start hitting against
budget.
The fix is to add flags which explicitly do not attempt to fallback
allocate. This makes it possible to handle fallbacks at the appropriate
level in try_suballocate_memory instead.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
cb94cfd10c
vkd3d: Fix silly typo in global mask.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
426cdc9218
vkd3d: Destroy GLOBAL_BUFFER for some early error out paths.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
69d4f55219
vkd3d: Refactor VkDeviceMemory allocation to keep track of type/size.
...
We will need to consider some form of budgeting, so make sure that all
allocation and freeing is done in a central place.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 16:10:57 +02:00
Hans-Kristian Arntzen
a590db2508
tests: Add test for host visible render target.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
d402255349
tests: Add reduced test for ReadWriteSubresource to 2D images.
...
3D linear images are not well supported.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
b4521ebbd8
tests: Add tests for various ways to map 2D textures.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
8d49d3e9ae
vkd3d: Add extra validation for mapping textures.
...
D3D12 validation layers complain if you try to map mipmapped 3D volumes
for ... some reason. The error is very explicit, so I assume it's
intentional :)
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
9fd422a0fd
vkd3d: Fix default layout check when using LINEAR tiled images.
...
Match behavior of d3d12_resource_pick_layout.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
41295eff6c
vkd3d: Consider CPU availibility when selecting memory types.
...
Need to consider that based on host visibility requirements, we need to
select either LINEAR or OPTIMAL image types, and those tiling modes can
have different memory requirements.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
132638be67
vkd3d: Add more logging when linear image allocation fails.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
50f2c35b44
vkd3d: Add stricter ROW_MAJOR texture validation.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Hans-Kristian Arntzen
961fef84de
vkd3d: Allow map of texture as long as ppData is NULL.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-16 15:35:57 +02:00
Joshua Ashton
9c0fa91ca5
vkd3d: Add shader quirks for Psychonauts 2
...
Works around a game bug. It uses texture() inside divergent control flow.
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-09-15 11:52:39 +02:00
Hans-Kristian Arntzen
3081887757
vkd3d: Add 12_2 to list of valid feature levels.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-14 21:18:29 +02:00
Hans-Kristian Arntzen
0e216b2b10
vkd3d: Narrow workaround for global pipeline cache.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-08 18:37:55 +02:00
Hans-Kristian Arntzen
11086a94e0
vkd3d: Add macros to parse/build NV driver versions.
...
The bit offsets are a bit different from Vulkan API.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-08 18:37:55 +02:00
Hans-Kristian Arntzen
d2b3238b2d
tests: Add tests for creating DS formats without ALLOW_DEPTH_STENCIL.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-07 13:31:28 +02:00
Hans-Kristian Arntzen
fcaeca8d27
vkd3d: Allow typeless depth-stencil formats without ALLOW_DEPTH_STENCIL.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-07 13:31:28 +02:00
Hans-Kristian Arntzen
403d1f9743
vkd3d: Workaround huge memory overhead for individual VkPipelineCaches.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-07 13:21:54 +02:00
Hans-Kristian Arntzen
b8f0cd6eb6
dxil-spirv: Update submodule.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-07 12:10:06 +02:00
Hans-Kristian Arntzen
1d5acef691
tests: Add test for footprint -> depth-stencil copy.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-06 17:00:51 +02:00
Hans-Kristian Arntzen
a3267ba8e5
vkd3d: Fix copies between footprint and DS aspects.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-06 17:00:51 +02:00
Hans-Kristian Arntzen
fa1d82e141
vkd3d: Fix regressions when introducing null-copy elision.
...
Need to initialize the set mask so that copies happen properly
on default-initialized descriptors. Also, move the current_null_type to
metadata so that it's properly copied on descriptor copy.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-03 12:24:26 +02:00
Rodrigo Locatti
b4cb5a37f8
vkd3d: Optimize repeated null descriptor updates
...
There are titles clearing the same descriptors constantly.
This leads to unnecessary updates that can become costly.
This commit introduces a new flag to track when D3D12 descriptors are
not null, and skips clearing them if they are already null.
Descriptors are assumed to be null by default.
This fixes a performance regression introduced by
9983a1720f
Signed-off-by: Rodrigo Locatti <rlocatti@nvidia.com>
2021-09-02 21:21:34 +02:00
Philip Rebohle
7fea3527ed
vkd3d: Remove deferred clears.
...
Emitting render pass clears while we're in the process of starting
a render pass overrides dsv layout tracking info.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2021-09-02 17:11:35 +02:00
Hans-Kristian Arntzen
b05145b421
tests: Add test for depth testing against null DSV.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 17:10:47 +02:00
Hans-Kristian Arntzen
ff74ad0ec5
vkd3d: Skip draw call if doing depth test on null DSV.
...
D3D12 validation layer errors out, so unless we can prove that specific
behavior is relied upon, we should be okay to just ignore.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 17:10:47 +02:00
Hans-Kristian Arntzen
b54a1a6c2b
vkd3d: Fix MSVC build.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 16:56:39 +02:00
Hans-Kristian Arntzen
00e4397467
vkd3d: Ignore depth/stencil test if DSVFormat does not have that aspect.
...
Fix some validation errors in F1 2021.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 16:25:27 +02:00
Hans-Kristian Arntzen
6f8ebaae7e
tests: Add test for planar footprints.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 12:21:22 +02:00
Hans-Kristian Arntzen
bc9bd9c482
vkd3d: Fix member types in vkd3d_format.
...
No need to use size_t.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 12:21:22 +02:00
Hans-Kristian Arntzen
7b67de7d0e
vkd3d: Generalize get_plane_footprints.
...
Get information directly from vkd3d_format and allow for subsampled
formats in the future.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 12:21:22 +02:00
Hans-Kristian Arntzen
3d5010555e
vkd3d: Add d3d12_resource_desc_get_sub_resource_count.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 12:21:22 +02:00
Hans-Kristian Arntzen
5c2376faf5
vkd3d: Handle multiplanar formats in GetCopyableFootprints.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-02 12:21:22 +02:00
Hans-Kristian Arntzen
b8881ff693
vkd3d-common: Log TID in Wine's format.
...
Allows us to stay sane when correlating logs.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-09-01 15:41:59 +02:00
Hans-Kristian Arntzen
d9bdd515a4
tests: Check for Native16Bit support before testing dot2add.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-30 23:06:26 +02:00
Hans-Kristian Arntzen
566cf1ed78
tests: Rename get_rt_lib() to something that allows for more libs.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-28 12:16:42 +02:00
Hans-Kristian Arntzen
9a92d62465
tests: Use RT factory for main RT PSO as well.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-28 12:16:42 +02:00
Hans-Kristian Arntzen
fb8d8616b7
tests: Introduce a factory for building RTPSO subobject lists.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-28 12:16:42 +02:00
Hans-Kristian Arntzen
6aecbe2482
tests: Refactor out RT collection creation.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-28 12:16:42 +02:00
Hans-Kristian Arntzen
dda18f0fcd
tests: Hoist out helper function to create a complete RTAS.
...
Have a single helper function to create RTASes with X * Y quads.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-28 12:16:42 +02:00
Hans-Kristian Arntzen
c1f848ed3b
vkd3d: Only look at SourceRTAS when updating.
...
Be more robust against garbage inputs.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-28 12:16:42 +02:00
Hans-Kristian Arntzen
af2d41f6f8
tests: Use helper functions to build top-level acceleration structures.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2021-08-28 12:16:42 +02:00