| Age | Commit message (Collapse) | Author |
|
INSERT_PADDING_BYTES_NOINIT is more descriptive of the underlying behavior.
|
|
|
|
Use the Download memory type where it matters.
|
|
Implements the allocator logic to handle download memory types. This
will try to use HOST_CACHED_BIT when available.
|
|
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.
|
|
Allow using the abstraction from the OpenGL backend.
|
|
"Memory manager" collides with the guest GPU memory manager, and a
memory allocator sounds closer to what the abstraction aims to be.
|
|
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.
|
|
common/alignment: Rename AlignBits to AlignUpLog2 and use constraints
|
|
Makes for less code that we need to maintain.
|
|
AlignUpLog2 describes what the function does better than AlignBits.
|
|
These flags are already defined in src/cmake.
|
|
cmake: Enforce -Wunused-function code-base wise
|
|
vulkan_common: Silence missing initializer warnings
|
|
vulkan_device: Enable shaderStorageImageMultisample conditionally
|
|
|
|
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]].
|
|
|
|
Silence warnings explicitly initializing all members on construction.
|
|
Fix Vulkan initialization on ANV.
|
|
Invalid ASTC textures seem to write more bytes here, increase
the size to something that can't make us push out of bounds.
|
|
Avoid out of bound reads on invalid ASTC textures.
Games can bind invalid textures that make us read or write out of bounds.
|
|
yuzu doesn't currently emulate MS image stores. Requiring this makes no
sense for now. Fixes ANV not booting any games on Vulkan.
|
|
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.
|
|
vk_fence_manager: Use timeline semaphores instead of spin waits
|
|
|
|
renderer_vulkan/fixed_pipeline_state: Move enabled bindings to static state
|
|
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.
|
|
Co-authored-by: LC <mathew1800@gmail.com>
|
|
|
|
laying the groundwork for async gpu, although this does not fully implement async nvdec operations
|
|
Ignore the return value on __APPLE__ systems as well
|
|
PAGE_SHIFT is a #define in system headers that leaks into user code on some systems
|
|
gl_texture_cache: Avoid format views on Intel and AMD
|
|
vulkan_common: Move device abstraction to the common directory and allow surfaceless devices
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
This breaks accelerated decoders trying to imageStore into images with
sRGB. The decoders are currently disabled so this won't cause issues at
runtime.
|
|
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.
|
|
vulkan_common: Move reusable Vulkan abstractions to a separate directory
|
|
|
|
Service threads
|
|
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.
|
|
This makes easier to add and tune the required device limits.
|
|
VKDevice::IsSuitable was not being called. To address this issue, check
suitability before initialization and throw an exception if it fails.
By doing this, we can deduplicate some code on queue searches.
Previosuly we would first search if a present and graphics queue
existed, then on initialization we would search again to find the index.
|
|
The Vulkan device abstraction either initializes successfully on the
constructor or throws a Vulkan exception.
|