summaryrefslogtreecommitdiffstats
path: root/src/video_core/vulkan_common (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-07-23shader: Initial OpenGL implementationReinUsesLisp1-1/+1
2021-07-23vulkan_device: Require shaderClipDistance and shaderCullDistance featuresReinUsesLisp1-2/+4
2021-07-23shader: Fix bugs and build issues on GCCRodrigo Locatti1-1/+1
2021-07-23shader: Require dual source blendingReinUsesLisp1-1/+2
2021-07-23shader: Implement PIXLD.MY_INDEXReinUsesLisp1-1/+2
2021-07-23spirv: Implement ViewportMask with NV_viewport_array2ReinUsesLisp2-0/+11
2021-07-23shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp1-1/+2
2021-07-23spirv: Rework storage buffers and shader memoryReinUsesLisp1-1/+28
2021-07-23shader: Implement ATOM/S and REDameerj2-0/+20
2021-07-23nsight_aftermath_tracker: Report used shaders to Nsight AftermathReinUsesLisp4-15/+16
2021-07-23shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp2-15/+61
2021-07-23shader: Implement VOTEameerj2-0/+7
2021-07-23shader: Add partial rasterizer integrationReinUsesLisp1-0/+15
2021-07-23shader: Add denorm flush supportReinUsesLisp3-26/+35
2021-07-23spirv: Add lower fp16 to fp32 passReinUsesLisp1-5/+5
2021-06-25vulkan_device: Make device memory match the rest of the fileReinUsesLisp2-19/+18
Match the style in the file.
2021-06-22common: fs: Remove [[nodiscard]] attribute on Remove* functionsMorph1-1/+1
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.
2021-06-21video_core: Add GPU vendor name to window title barameerj2-0/+24
2021-06-18vulkan_debug_callback: Skip logging known false-positive validation errorsameerj1-0/+8
Avoids overwhelming the log with validation errors that are not applicable
2021-06-17Reaper: Correct size calculation on Vulkan.Fernando Sahmkow1-5/+3
2021-06-17Reaper: Change memory restrictions on TC depending on host memory on VK.Fernando Sahmkow2-0/+23
2021-06-16vulkan_memory_allocator: Release allocations with no commitsReinUsesLisp2-5/+22
2021-05-27vulkan_memory_allocator: Allow textures to be allocated in host memoryReinUsesLisp2-31/+43
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.
2021-05-26common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)Morph3-24/+34
* 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
2021-04-15common: Move settings to common from core.bunnei1-1/+1
- Removes a dependency on core and input_common from common.
2021-04-11vulkan_device: Enable EXT_robustness2 featuresJoshua Ashton1-0/+9
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")
2021-03-30vulkan_common: enable OpenGL interop on other UnicesJan Beich2-5/+5
2021-02-13vulkan_device: Require VK_EXT_robustness2ReinUsesLisp2-37/+14
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.
2021-02-13vk_staging_buffer_pool: Add stream buffer for small uploadsReinUsesLisp2-7/+18
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.
2021-02-13vulkan_device: Enable robustBufferAccessReinUsesLisp1-1/+2
Fix regression on Pascal on Animal Crossing: New Horizons, fixing a validation error.
2021-02-13video_core: Reimplement the buffer cacheReinUsesLisp1-1/+1
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.
2021-02-13vulkan_common: Expose interop and headless devicesReinUsesLisp4-21/+100
2021-02-13vulkan_common: Make interop extensions mandatoryReinUsesLisp1-0/+6
2021-02-13vulkan_device: Enable robust buffersReinUsesLisp1-2/+4
2021-02-13vulkan_device: Use designated initializers for featuresReinUsesLisp1-60/+59
2021-02-13vulkan_wrapper: Add memory barrier pipeline barrier helperReinUsesLisp1-0/+6
2021-02-13vulkan_device: Fix formatting of constantsReinUsesLisp1-10/+6
2021-02-13vulkan_wrapper: Add interop functionsReinUsesLisp2-1/+41
2021-02-13vulkan_instance: Initialize Vulkan instance in a separate threadReinUsesLisp1-1/+5
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.
2021-02-13vulkan_wrapper: Pull Windows symbolsReinUsesLisp1-0/+11
2021-02-13gpu: Report renderer errors with exceptionsReinUsesLisp2-1/+4
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.
2021-01-27vulkan_device: Blacklist Intel from float16 math (#5798)Rodrigo Locatti1-0/+5
Astral Chain crashes Intel's SPIR-V compiler when using fp16. Disable this while the vendor works on a fix.
2021-01-25vulkan_device: Lift VK_EXT_extended_dynamic_state blacklist on RDNAReinUsesLisp1-23/+0
It seems to be safe to use this on new drivers.
2021-01-24video_core: Silence -Wmissing-field-initializers warningsReinUsesLisp1-0/+1
2021-01-23nsight_aftermath_tracker: Fix build issues when enabledReinUsesLisp2-16/+5
Fixes a bunch of build errors when Nsight Aftermath is properly enabled.
2021-01-17video_core: Resolve -Wdocumentation warningsLioncash1-3/+2
Silences some -Wdocumentation warnings on Clang.
2021-01-17vulkan_debug_callback: Add missing header guardLioncash1-0/+2
Prevents inclusion issues from occurring.
2021-01-15vulkan_memory_allocator: Remove unnecesary 'device' memory from commitsReinUsesLisp2-15/+15
2021-01-15vulkan_memory_allocator: Add allocation support for download typesReinUsesLisp2-55/+91
Implements the allocator logic to handle download memory types. This will try to use HOST_CACHED_BIT when available.
2021-01-15vulkan_memory_allocator: Add "download" memory usage hintReinUsesLisp2-10/+38
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-15vulkan_common: Move allocator to the common directoryReinUsesLisp2-0/+322
Allow using the abstraction from the OpenGL backend.
2021-01-15vulkan_common: Silence missing initializer warningsReinUsesLisp2-145/+146
Silence warnings explicitly initializing all members on construction.
2021-01-15vulkan_device: Enable shaderStorageImageMultisample conditionallyReinUsesLisp2-18/+20
Fix Vulkan initialization on ANV.
2021-01-13vulkan_device: Remove requirement on shaderStorageImageMultisampleReinUsesLisp1-1/+0
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-07vulkan_library: Common::DynamicLibrary::Open is [[nodiscard]]MerryMage1-1/+1
Ignore the return value on __APPLE__ systems as well
2021-01-04vulkan_device: Allow creating a device without surfaceReinUsesLisp1-3/+3
2021-01-04renderer_vulkan/nsight_aftermath_tracker: Move to vulkan_commonReinUsesLisp4-4/+302
2021-01-04renderer_vulkan: Move device abstraction to vulkan_commonReinUsesLisp2-0/+1189
2020-12-31vulkan_instance: Allow different Vulkan versions and enforce 1.1ReinUsesLisp2-13/+27
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-31renderer_vulkan: Remove two step initialization on VKDeviceReinUsesLisp2-6/+3
The Vulkan device abstraction either initializes successfully on the constructor or throws a Vulkan exception.
2020-12-31renderer_vulkan: Throw when enumerating devices failsReinUsesLisp4-11/+8
Report device enumeration errors with exceptions to be consistent with other initialization related function calls. Reduces the amount of code to maintain.
2020-12-31renderer_vulkan: Initialize surface in separate fileReinUsesLisp3-0/+104
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.
2020-12-31renderer_vulkan: Create debug callback on separate file and throwReinUsesLisp5-45/+79
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.
2020-12-31renderer_vulkan: Move instance initialization to a separate fileReinUsesLisp2-0/+173
Simplify Vulkan's backend initialization code by moving it to a separate file, allowing us to initialize a Vulkan instance from different backends.
2020-12-31vulkan_common: Rename renderer_vulkan/wrapper.h to vulkan_common/vulkan_wrapper.hReinUsesLisp2-0/+2141
Allows sharing Vulkan wrapper code between different rendering backends.
2020-12-31vulkan_common: Move dynamic library load to a separate fileReinUsesLisp2-0/+49
Allows us to initialize a Vulkan dynamic library from different backends without duplicating code.