Rodrigo Locatti
fd873fd369
Merge pull request #5262 from ReinUsesLisp/buffer-base
...
buffer_cache/buffer_base: Add a range tracking buffer container and tests
2021-01-16 19:48:26 -03:00
Rodrigo Locatti
c17ee0da5d
Merge pull request #5297 from ReinUsesLisp/vulkan-allocator-common
...
vulkan_memory_allocator: Improvements to the memory allocator
2021-01-15 21:50:05 -03:00
LC
8be9e5b48b
Merge pull request #5358 from ReinUsesLisp/rename-insert-padding
...
common/common_funcs: Rename INSERT_UNION_PADDING_{BYTES,WORDS} to _NOINIT
2021-01-15 16:19:46 -05:00
ReinUsesLisp
3ff978aa4f
common/common_funcs: Rename INSERT_UNION_PADDING_{BYTES,WORDS} to _NOINIT
...
INSERT_PADDING_BYTES_NOINIT is more descriptive of the underlying behavior.
2021-01-15 16:27:28 -03:00
ReinUsesLisp
301e2b5b7a
vulkan_memory_allocator: Remove unnecesary 'device' memory from commits
2021-01-15 16:19:40 -03:00
ReinUsesLisp
432f045dba
vk_texture_cache: Use Download memory types for texture flushes
...
Use the Download memory type where it matters.
2021-01-15 16:19:40 -03:00
ReinUsesLisp
8f22f5470c
vulkan_memory_allocator: Add allocation support for download types
...
Implements the allocator logic to handle download memory types. This
will try to use HOST_CACHED_BIT when available.
2021-01-15 16:19:39 -03:00
ReinUsesLisp
72541af3bc
vulkan_memory_allocator: Add "download" memory usage hint
...
Allow users of the allocator to hint memory usage for downloads. This
removes the non-descriptive boolean passed for "host visible" or not
host visible memory commits, and uses an enum to hint device local,
upload and download usages.
2021-01-15 16:19:39 -03:00
ReinUsesLisp
fade63b58e
vulkan_common: Move allocator to the common directory
...
Allow using the abstraction from the OpenGL backend.
2021-01-15 16:19:39 -03:00
ReinUsesLisp
c2b550987b
renderer_vulkan: Rename Vulkan memory manager to memory allocator
...
"Memory manager" collides with the guest GPU memory manager, and a
memory allocator sounds closer to what the abstraction aims to be.
2021-01-15 16:19:39 -03:00
ReinUsesLisp
e996f1ad09
vk_memory_manager: Improve memory manager and its API
...
Fix a bug where the memory allocator could leave gaps between commits.
To fix this the allocation algorithm was reworked, although it's still
short in number of lines of code.
Rework the allocation API to self-contained movable objects instead of
naively using an unique_ptr to do the job for us. Remove the VK prefix.
2021-01-15 16:19:36 -03:00
LC
9754a8145c
Merge pull request #5357 from ReinUsesLisp/alignment-log2
...
common/alignment: Rename AlignBits to AlignUpLog2 and use constraints
2021-01-15 03:12:36 -05:00
Lioncash
8620de6b20
common/bit_util: Replace CLZ/CTZ operations with standardized ones
...
Makes for less code that we need to maintain.
2021-01-15 02:15:32 -05:00
ReinUsesLisp
fe494a0ccd
common/alignment: Rename AlignBits to AlignUpLog2
...
AlignUpLog2 describes what the function does better than AlignBits.
2021-01-15 04:13:33 -03:00
ReinUsesLisp
cc2c3e447f
video_core/cmake: Remove Werror flags already defined code-base wide
...
These flags are already defined in src/cmake.
2021-01-15 03:37:34 -03:00
LC
28e78d81b2
Merge pull request #5351 from ReinUsesLisp/vc-unused-functions
...
cmake: Enforce -Wunused-function code-base wise
2021-01-15 01:36:51 -05:00
Rodrigo Locatti
185388f341
Merge pull request #5350 from ReinUsesLisp/vk-init-warns
...
vulkan_common: Silence missing initializer warnings
2021-01-15 03:32:01 -03:00
LC
76b465f3ef
Merge pull request #5349 from ReinUsesLisp/anv-fix
...
vulkan_device: Enable shaderStorageImageMultisample conditionally
2021-01-15 01:17:00 -05:00
ReinUsesLisp
06e0506cb3
cmake: Enforce -Wunused-function code-base wide
2021-01-15 03:09:48 -03:00
ReinUsesLisp
71264ce9a7
video_core: Enforce -Wunused-function
...
Stops us from merging code with unused functions in the future.
If something is invoked behind conditionally evaluated code in
a way that the language can't see it (e.g. preprocessor macros), the
potentially unused function should use [[maybe_unused]].
2021-01-15 02:59:25 -03:00
ReinUsesLisp
3e03391a49
vk_buffer_cache: Remove unused function
2021-01-15 02:58:55 -03:00
ReinUsesLisp
be8fd5490e
vulkan_common: Silence missing initializer warnings
...
Silence warnings explicitly initializing all members on construction.
2021-01-15 02:55:11 -03:00
ReinUsesLisp
ba2ea7eeac
vulkan_device: Enable shaderStorageImageMultisample conditionally
...
Fix Vulkan initialization on ANV.
2021-01-15 02:47:05 -03:00
ReinUsesLisp
22be115eb2
astc: Increase integer encoded vector size
...
Invalid ASTC textures seem to write more bytes here, increase
the size to something that can't make us push out of bounds.
2021-01-15 02:24:36 -03:00
ReinUsesLisp
0ec71b78fb
astc: Return zero on out of bound bits
...
Avoid out of bound reads on invalid ASTC textures.
Games can bind invalid textures that make us read or write out of bounds.
2021-01-15 02:24:36 -03:00
ReinUsesLisp
d9a15a935b
vulkan_device: Remove requirement on shaderStorageImageMultisample
...
yuzu doesn't currently emulate MS image stores. Requiring this makes no
sense for now. Fixes ANV not booting any games on Vulkan.
2021-01-13 06:21:33 -03:00
ReinUsesLisp
a4bfae1b55
buffer_cache/buffer_base: Add a range tracking buffer container
...
It keeps track of the modified CPU and GPU ranges on a CPU page
granularity, notifying the given rasterizer about state changes
in the tracking behavior of the buffer.
Use a small vector optimization to store buffers smaller than 256 KiB
locally instead of using free store memory allocations.
2021-01-13 04:14:58 -03:00
bunnei
de1a316369
Merge pull request #5311 from ReinUsesLisp/fence-wait
...
vk_fence_manager: Use timeline semaphores instead of spin waits
2021-01-12 21:00:05 -08:00
bunnei
8eea7c1176
Merge pull request #5231 from ReinUsesLisp/dyn-bindings
...
renderer_vulkan/fixed_pipeline_state: Move enabled bindings to static state
2021-01-08 12:24:46 -08:00
ReinUsesLisp
154a7653f9
vk_fence_manager: Use timeline semaphores instead of spin waits
...
With timeline semaphores we can avoid creating objects. Instead of
creating an event, grab the current tick from the scheduler and flush
the current command buffer. When the fence has to be queried/waited, we
can do so against the master semaphore instead of spinning on an event.
If Vulkan supported NVN like events or fences, we could signal from the
command buffer and wait for that without splitting things in two
separate command buffers.
2021-01-08 02:47:28 -03:00
Ameer J
16392a23cc
remove inaccurate reference
...
Co-authored-by: LC <mathew1800@gmail.com>
2021-01-07 14:33:45 -05:00
ameerj
06cef3355e
fix for nvdec disabled, cleanup host1x
2021-01-07 14:33:45 -05:00
ameerj
2c27127d04
nvdec syncpt incorporation
...
laying the groundwork for async gpu, although this does not fully implement async nvdec operations
2021-01-07 14:33:45 -05:00
MerryMage
21199cb965
vulkan_library: Common::DynamicLibrary::Open is [[nodiscard]]
...
Ignore the return value on __APPLE__ systems as well
2021-01-07 17:37:47 +00:00
MerryMage
aace20afc7
texture_cache: Replace PAGE_SHIFT with PAGE_BITS
...
PAGE_SHIFT is a #define in system headers that leaks into user code on some systems
2021-01-07 16:51:34 +00:00
Morph
e8d40559d5
Merge pull request #5288 from ReinUsesLisp/workaround-garbage
...
gl_texture_cache: Avoid format views on Intel and AMD
2021-01-06 15:39:51 +08:00
bunnei
275b96a0e2
Merge pull request #5289 from ReinUsesLisp/vulkan-device
...
vulkan_common: Move device abstraction to the common directory and allow surfaceless devices
2021-01-05 17:44:56 -08:00
LC
2a6e6306d8
Merge pull request #5292 from ReinUsesLisp/empty-set
...
vk_rasterizer: Skip binding empty descriptor sets on compute
2021-01-04 21:32:57 -05:00
ReinUsesLisp
1ccf805367
vk_rasterizer: Skip binding empty descriptor sets on compute
...
Fixes unit tests where compute shaders had no descriptors in the set,
making Vulkan drivers crash when binding an empty set.
2021-01-04 17:56:39 -03:00
ReinUsesLisp
ac1e4734c2
vulkan_device: Allow creating a device without surface
2021-01-04 02:22:22 -03:00
ReinUsesLisp
d235cf3933
renderer_vulkan/nsight_aftermath_tracker: Move to vulkan_common
2021-01-04 02:22:22 -03:00
ReinUsesLisp
3753553b6a
renderer_vulkan: Move device abstraction to vulkan_common
2021-01-04 02:22:22 -03:00
ReinUsesLisp
7d904fef2e
gl_texture_cache: Avoid format views on Intel and AMD
...
Intel and AMD proprietary drivers are incapable of rendering to texture
views of different formats than the original texture. Avoid creating
these at a cache level. This will consume more memory, emulating them
with copies.
2021-01-04 02:06:40 -03:00
ReinUsesLisp
3a49c1a691
gl_texture_cache: Create base images with sRGB
...
This breaks accelerated decoders trying to imageStore into images with
sRGB. The decoders are currently disabled so this won't cause issues at
runtime.
2021-01-04 01:54:54 -03:00
ReinUsesLisp
974d731926
renderer_vulkan: Rename VKDevice to Device
...
The "VK" prefix predates the "Vulkan" namespace. It was carried around
the codebase for consistency. "VKDevice" currently is a bad alias with
"VkDevice" (only an upcase character of difference) that can cause
confusion. Rename all instances of it.
2021-01-03 17:51:48 -03:00
Rodrigo Locatti
7265e80c12
Merge pull request #5230 from ReinUsesLisp/vulkan-common
...
vulkan_common: Move reusable Vulkan abstractions to a separate directory
2021-01-03 17:38:29 -03:00
Morph
a745d87971
general: Fix various spelling errors
2021-01-02 10:23:41 -05:00
bunnei
25d607f5f6
Merge pull request #5208 from bunnei/service-threads
...
Service threads
2020-12-30 22:06:05 -08:00
ReinUsesLisp
cdbee27692
vulkan_instance: Allow different Vulkan versions and enforce 1.1
...
For listing the available physical devices we can use Vulkan 1.0.
Now that MoltenVK supports 1.1 we can require it for running games.
Add missing documentation.
2020-12-31 02:07:34 -03:00
ReinUsesLisp
7344a7c447
vk_device: Use an array to report lacking device limits
...
This makes easier to add and tune the required device limits.
2020-12-31 02:07:34 -03:00