| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
|
| |
|
| |
|
|\
| |
| | |
Vulkan: Use 3D helpers for MSAA scaling on NV drivers 510+
|
| |
| |
| |
| | |
Nvidia Vulkan drivers 510+ crash when blitting MSAA images. Fall-back to 3D scale helpers for MSAA image scaling.
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
| |
RDNA2 devices running under the RADV driver were crashing when VK_EXT_vertex_input_dynamic_state was enabled.
Blacklisting these devices until a proper fix is established.
|
|
|
|
|
| |
Currently Mesa's ANV driver does not support
VK_FORMAT_B5G6R5_UNORM_PACK16, implement an alternative for it.
|
| |
|
|
|
|
| |
Fixes a crash when scaling MSAA textures in titles such as Sonic Colors Ultimate.
|
| |
|
| |
|
| |
|
|
|
|
| |
- Used by Immortals Fenyx Rising
|
|
|
|
| |
It should be noted that on Windows, only nvidia gpus support this format natively as of this commit.
|
| |
|
|
|
| |
- Used by Dragon Quest Builders
|
|\
| |
| | |
Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan.
|
| | |
|
|/
|
|
| |
Fixes rainbow textures on BOTW.
|
|\
| |
| | |
vulkan_debug_callback: Ignore InvalidCommandBuffer-VkDescriptorSet errors
|
| |
| |
| |
| |
| |
| | |
This validation error is spammed on some titles, asserting that VkDescriptorSet 0x0[] was destroyed.
This is likely a validation layer bug when using VK_KHR_push_descriptor, which can avoid using traditional VkDescriptorSet. It should be safe to ignore for now.
|
| |
| |
| |
| | |
This variable was going out of scope before its usage in the vulkan device creation, causing a crash on very specific drivers.
|
|/
|
|
|
| |
This reverts commit 62e88d0e7455e37840db7e2a8e199bc6ca176966, reversing
changes made to edf3da346f4ec0ca492b427f4f693d56e84abc52.
|
|\
| |
| | |
Vulkan: Disable VK_EXT_SAMPLER_FILTER_MINMAX in GCN AMD
|
| | |
|
|\ \
| |/
|/| |
Vulkan: Blacklist Int8Float16 Extension on AMD on driver 21.9.1
|
| | |
|
|\ \
| | |
| | | |
Vulkan/Descriptors: Increase sets per pool on AMD propietary driver.
|
| |/ |
|
|/
|
|
| |
Silences validation errors when creating sRGB image views of linear swapchain images
|
|
|
|
| |
Silences validation errors when shaders use int8 without specifying its support to the API
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use VK_KHR_pipeline_executable_properties when enabled and available to
log statistics about the pipeline cache in a game.
For example, this is on Turing GPUs when generating a pipeline cache
from Super Smash Bros. Ultimate:
Average pipeline statistics
==========================================
Code size: 6433.167
Register count: 32.939
More advanced results could be presented, at the moment it's just an
average of all 3D and compute pipelines.
|
|
|
|
| |
We should be using the passed in object type instead.
|
|
|
|
|
| |
Causes crashes on Link's Awakening intro. It's hard to debug if it's our
fault due to bugs in validation layers.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
|
| |
|
|
|
|
| |
Useful for mobile and Intel Xe devices.
|
|
|
|
| |
~51% faster on Nvidia compared to previous method.
|
| |
|
| |
|
|
|
|
| |
Also add a setting for enable Nsight Aftermath.
|
| |
|
|
|
|
|
| |
Reduces the number of total pipelines generated on Vulkan.
Tested on Super Smash Bros. Ultimate.
|
| |
|
| |
|
|
|
|
| |
Add support for Polaris AMD devices.
|
|
|
|
| |
Intel devices pre-Xe don't support this.
|
|
|
|
| |
Add Intel Xe support.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
main: Add GPU Vendor name to running title bar
|
| | |
|
| |
| |
| |
| | |
Match the style in the file.
|
|\ \
| | |
| | | |
GPU: Implement a garbage collector for GPU Caches (project Reaper+)
|
| | | |
|
| | | |
|
| | | |
|
| |/
|/|
| |
| |
| |
| | |
There are a lot of scenarios where we don't particularly care whether or not the removal operation and just simply attempt a removal.
As such, removing the [[nodiscard]] attribute is best for these functions.
|
|/
|
|
| |
Avoids overwhelming the log with validation errors that are not applicable
|
|
|
|
|
| |
Allow Vulkan's allocator to use host memory when there's no more device
local memory. This delays OOM, but it will eventually still happen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* common: fs: fs_types: Create filesystem types
Contains various filesystem types used by the Common::FS library
* common: fs: fs_util: Add std::string to std::u8string conversion utility
* common: fs: path_util: Add utlity functions for paths
Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library
* common: fs: file: Rewrite the IOFile implementation
* common: fs: Reimplement Common::FS library using std::filesystem
* common: fs: fs_paths: Add fs_paths to replace common_paths
* common: fs: path_util: Add the rest of the path functions
* common: Remove the previous Common::FS implementation
* general: Remove unused fs includes
* string_util: Remove unused function and include
* nvidia_flags: Migrate to the new Common::FS library
* settings: Migrate to the new Common::FS library
* logging: backend: Migrate to the new Common::FS library
* core: Migrate to the new Common::FS library
* perf_stats: Migrate to the new Common::FS library
* reporter: Migrate to the new Common::FS library
* telemetry_session: Migrate to the new Common::FS library
* key_manager: Migrate to the new Common::FS library
* bis_factory: Migrate to the new Common::FS library
* registered_cache: Migrate to the new Common::FS library
* xts_archive: Migrate to the new Common::FS library
* service: acc: Migrate to the new Common::FS library
* applets/profile: Migrate to the new Common::FS library
* applets/web: Migrate to the new Common::FS library
* service: filesystem: Migrate to the new Common::FS library
* loader: Migrate to the new Common::FS library
* gl_shader_disk_cache: Migrate to the new Common::FS library
* nsight_aftermath_tracker: Migrate to the new Common::FS library
* vulkan_library: Migrate to the new Common::FS library
* configure_debug: Migrate to the new Common::FS library
* game_list_worker: Migrate to the new Common::FS library
* config: Migrate to the new Common::FS library
* configure_filesystem: Migrate to the new Common::FS library
* configure_per_game_addons: Migrate to the new Common::FS library
* configure_profile_manager: Migrate to the new Common::FS library
* configure_ui: Migrate to the new Common::FS library
* input_profiles: Migrate to the new Common::FS library
* yuzu_cmd: config: Migrate to the new Common::FS library
* yuzu_cmd: Migrate to the new Common::FS library
* vfs_real: Migrate to the new Common::FS library
* vfs: Migrate to the new Common::FS library
* vfs_libzip: Migrate to the new Common::FS library
* service: bcat: Migrate to the new Common::FS library
* yuzu: main: Migrate to the new Common::FS library
* vfs_real: Delete the contents of an existing file in CreateFile
Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now.
* input_profiles: Don't iterate the input profile dir if it does not exist
Silences an error produced in the log if the directory does not exist.
* game_list_worker: Skip parsing file if the returned VfsFile is nullptr
Prevents crashes in GetLoader when the virtual file is nullptr
* common: fs: Validate paths for path length
* service: filesystem: Open the mod load directory as read only
|
|
|
|
| |
- Removes a dependency on core and input_common from common.
|
|
|
|
|
|
| |
When this was being made mandatory, these enablement of these features was removed, but this is still needed.
Fixes: 757fd1e91716 ("vulkan_device: Require VK_EXT_robustness2")
|
| |
|
|
|
|
|
|
|
| |
We are already using robustness2 features without requiring it
explicitly, causing potential crashes on drivers without the extension.
Requiring this at boot allows better diagnostics for it and formalizes
our usage on the extension.
|
|
|
|
|
|
|
|
| |
This uses a ring buffer similar to OpenGL's stream buffer for small
uploads. This stops us from allocating several small buffers, reducing
memory fragmentation and cache locality.
It uses dedicated allocations when possible.
|
|
|
|
|
| |
Fix regression on Pascal on Animal Crossing: New Horizons, fixing a
validation error.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reimplement the buffer cache using cached bindings and page level
granularity for modification tracking. This also drops the usage of
shared pointers and virtual functions from the cache.
- Bindings are cached, allowing to skip work when the game changes few
bits between draws.
- OpenGL Assembly shaders no longer copy when a region has been modified
from the GPU to emulate constant buffers, instead GL_EXT_memory_object
is used to alias sub-buffers within the same allocation.
- OpenGL Assembly shaders stream constant buffer data using
glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In
theory this should save one hash table resolve inside the driver
compared to glBufferSubData.
- A new OpenGL stream buffer is implemented based on fences for drivers
that are not Nvidia's proprietary, due to their low performance on
partial glBufferSubData calls synchronized with 3D rendering (that
some games use a lot).
- Most optimizations are shared between APIs now, allowing Vulkan to
cache more bindings than before, skipping unnecesarry work.
This commit adds the necessary infrastructure to use Vulkan object from
OpenGL. Overall, it improves performance and fixes some bugs present on
the old cache. There are still some edge cases hit by some games that
harm performance on some vendors, this are planned to be fixed in later
commits.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Workaround an issue on Nvidia where creating a Vulkan instance from an
active OpenGL thread disables threaded optimization on the driver.
This optimization is important to have good performance on Nvidia
OpenGL.
|
| |
|
|
|
|
|
|
| |
Instead of using a two step initialization to report errors, initialize
the GPU renderer and rasterizer on the constructor and report errors
through std::runtime_error.
|
|
|
|
| |
Astral Chain crashes Intel's SPIR-V compiler when using fp16.
Disable this while the vendor works on a fix.
|
|\
| |
| | |
video_core: Silence the remaining gcc warnings and enforce them
|
| | |
|
|/
|
|
| |
It seems to be safe to use this on new drivers.
|
|
|
|
| |
Fixes a bunch of build errors when Nsight Aftermath is properly enabled.
|
|\
| |
| | |
video_core: Resolve -Wdocumentation warnings
|
| |
| |
| |
| | |
Silences some -Wdocumentation warnings on Clang.
|
|/
|
|
| |
Prevents inclusion issues from occurring.
|
| |
|
|
|
|
|
| |
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.
|
|\
| |
| | |
vulkan_common: Silence missing initializer warnings
|
| |
| |
| |
| | |
Silence warnings explicitly initializing all members on construction.
|
|/
|
|
| |
Fix Vulkan initialization on ANV.
|
|
|
|
|
| |
yuzu doesn't currently emulate MS image stores. Requiring this makes no
sense for now. Fixes ANV not booting any games on Vulkan.
|
|
|
|
| |
Ignore the return value on __APPLE__ systems as well
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
The Vulkan device abstraction either initializes successfully on the
constructor or throws a Vulkan exception.
|
|
|
|
|
|
| |
Report device enumeration errors with exceptions to be consistent with
other initialization related function calls. Reduces the amount of code
to maintain.
|
|
|
|
|
|
| |
Move surface initialization code to a separate file. It's unlikely to
use this code outside of Vulkan, but keeping platform-specific code
(Win32, Xlib, Wayland) in its own translation unit keeps things cleaner.
|
|
|
|
|
|
|
|
| |
Initialize debug callbacks (messenger) from a separate file. This allows
sharing code with different backends.
Change our Vulkan error handling to use exceptions instead of error
codes, simplifying the initialization process.
|
|
|
|
|
|
| |
Simplify Vulkan's backend initialization code by moving it to a separate
file, allowing us to initialize a Vulkan instance from different
backends.
|
|
|
|
| |
Allows sharing Vulkan wrapper code between different rendering backends.
|
|
Allows us to initialize a Vulkan dynamic library from different backends
without duplicating code.
|