summaryrefslogtreecommitdiffstats
path: root/src/video_core/vulkan_common (follow)
Commit message (Collapse)AuthorAgeFilesLines
* shader: Initial OpenGL implementationReinUsesLisp2021-07-231-1/+1
|
* vulkan_device: Require shaderClipDistance and shaderCullDistance featuresReinUsesLisp2021-07-231-2/+4
|
* shader: Fix bugs and build issues on GCCRodrigo Locatti2021-07-231-1/+1
|
* shader: Require dual source blendingReinUsesLisp2021-07-231-1/+2
|
* shader: Implement PIXLD.MY_INDEXReinUsesLisp2021-07-231-1/+2
|
* spirv: Implement ViewportMask with NV_viewport_array2ReinUsesLisp2021-07-232-0/+11
|
* shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp2021-07-231-1/+2
|
* spirv: Rework storage buffers and shader memoryReinUsesLisp2021-07-231-1/+28
|
* shader: Implement ATOM/S and REDameerj2021-07-232-0/+20
|
* nsight_aftermath_tracker: Report used shaders to Nsight AftermathReinUsesLisp2021-07-234-15/+16
|
* shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp2021-07-232-15/+61
|
* shader: Implement VOTEameerj2021-07-232-0/+7
|
* shader: Add partial rasterizer integrationReinUsesLisp2021-07-231-0/+15
|
* shader: Add denorm flush supportReinUsesLisp2021-07-233-26/+35
|
* spirv: Add lower fp16 to fp32 passReinUsesLisp2021-07-231-5/+5
|
* Merge pull request #6502 from ameerj/vendor-titleMorph2021-06-282-0/+24
|\ | | | | main: Add GPU Vendor name to running title bar
| * video_core: Add GPU vendor name to window title barameerj2021-06-212-0/+24
| |
* | vulkan_device: Make device memory match the rest of the fileReinUsesLisp2021-06-252-19/+18
| | | | | | | | Match the style in the file.
* | Merge pull request #6465 from FernandoS27/sex-on-the-beachMai M2021-06-234-5/+43
|\ \ | | | | | | GPU: Implement a garbage collector for GPU Caches (project Reaper+)
| * | Reaper: Correct size calculation on Vulkan.Fernando Sahmkow2021-06-171-5/+3
| | |
| * | Reaper: Change memory restrictions on TC depending on host memory on VK.Fernando Sahmkow2021-06-172-0/+23
| | |
| * | vulkan_memory_allocator: Release allocations with no commitsReinUsesLisp2021-06-162-5/+22
| | |
* | | common: fs: Remove [[nodiscard]] attribute on Remove* functionsMorph2021-06-221-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.
* | vulkan_debug_callback: Skip logging known false-positive validation errorsameerj2021-06-181-0/+8
|/ | | | Avoids overwhelming the log with validation errors that are not applicable
* vulkan_memory_allocator: Allow textures to be allocated in host memoryReinUsesLisp2021-05-272-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.
* common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)Morph2021-05-263-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
* common: Move settings to common from core.bunnei2021-04-151-1/+1
| | | | - Removes a dependency on core and input_common from common.
* vulkan_device: Enable EXT_robustness2 featuresJoshua Ashton2021-04-111-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")
* vulkan_common: enable OpenGL interop on other UnicesJan Beich2021-03-302-5/+5
|
* vulkan_device: Require VK_EXT_robustness2ReinUsesLisp2021-02-132-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.
* vk_staging_buffer_pool: Add stream buffer for small uploadsReinUsesLisp2021-02-132-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.
* vulkan_device: Enable robustBufferAccessReinUsesLisp2021-02-131-1/+2
| | | | | Fix regression on Pascal on Animal Crossing: New Horizons, fixing a validation error.
* video_core: Reimplement the buffer cacheReinUsesLisp2021-02-131-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.
* vulkan_common: Expose interop and headless devicesReinUsesLisp2021-02-134-21/+100
|
* vulkan_common: Make interop extensions mandatoryReinUsesLisp2021-02-131-0/+6
|
* vulkan_device: Enable robust buffersReinUsesLisp2021-02-131-2/+4
|
* vulkan_device: Use designated initializers for featuresReinUsesLisp2021-02-131-60/+59
|
* vulkan_wrapper: Add memory barrier pipeline barrier helperReinUsesLisp2021-02-131-0/+6
|
* vulkan_device: Fix formatting of constantsReinUsesLisp2021-02-131-10/+6
|
* vulkan_wrapper: Add interop functionsReinUsesLisp2021-02-132-1/+41
|
* vulkan_instance: Initialize Vulkan instance in a separate threadReinUsesLisp2021-02-131-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.
* vulkan_wrapper: Pull Windows symbolsReinUsesLisp2021-02-131-0/+11
|
* gpu: Report renderer errors with exceptionsReinUsesLisp2021-02-132-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.
* vulkan_device: Blacklist Intel from float16 math (#5798)Rodrigo Locatti2021-01-271-0/+5
| | | | Astral Chain crashes Intel's SPIR-V compiler when using fp16. Disable this while the vendor works on a fix.
* Merge pull request #5807 from ReinUsesLisp/vc-warningsLC2021-01-241-0/+1
|\ | | | | video_core: Silence the remaining gcc warnings and enforce them
| * video_core: Silence -Wmissing-field-initializers warningsReinUsesLisp2021-01-241-0/+1
| |
* | vulkan_device: Lift VK_EXT_extended_dynamic_state blacklist on RDNAReinUsesLisp2021-01-251-23/+0
|/ | | | It seems to be safe to use this on new drivers.
* nsight_aftermath_tracker: Fix build issues when enabledReinUsesLisp2021-01-232-16/+5
| | | | Fixes a bunch of build errors when Nsight Aftermath is properly enabled.
* Merge pull request #5745 from lioncash/documentationRodrigo Locatti2021-01-171-3/+2
|\ | | | | video_core: Resolve -Wdocumentation warnings
| * video_core: Resolve -Wdocumentation warningsLioncash2021-01-171-3/+2
| | | | | | | | Silences some -Wdocumentation warnings on Clang.
* | vulkan_debug_callback: Add missing header guardLioncash2021-01-171-0/+2
|/ | | | Prevents inclusion issues from occurring.
* vulkan_memory_allocator: Remove unnecesary 'device' memory from commitsReinUsesLisp2021-01-152-15/+15
|
* vulkan_memory_allocator: Add allocation support for download typesReinUsesLisp2021-01-152-55/+91
| | | | | Implements the allocator logic to handle download memory types. This will try to use HOST_CACHED_BIT when available.
* vulkan_memory_allocator: Add "download" memory usage hintReinUsesLisp2021-01-152-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.
* vulkan_common: Move allocator to the common directoryReinUsesLisp2021-01-152-0/+322
| | | | Allow using the abstraction from the OpenGL backend.
* Merge pull request #5350 from ReinUsesLisp/vk-init-warnsRodrigo Locatti2021-01-152-145/+146
|\ | | | | vulkan_common: Silence missing initializer warnings
| * vulkan_common: Silence missing initializer warningsReinUsesLisp2021-01-152-145/+146
| | | | | | | | Silence warnings explicitly initializing all members on construction.
* | vulkan_device: Enable shaderStorageImageMultisample conditionallyReinUsesLisp2021-01-152-18/+20
|/ | | | Fix Vulkan initialization on ANV.
* vulkan_device: Remove requirement on shaderStorageImageMultisampleReinUsesLisp2021-01-131-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.
* vulkan_library: Common::DynamicLibrary::Open is [[nodiscard]]MerryMage2021-01-071-1/+1
| | | | Ignore the return value on __APPLE__ systems as well
* vulkan_device: Allow creating a device without surfaceReinUsesLisp2021-01-041-3/+3
|
* renderer_vulkan/nsight_aftermath_tracker: Move to vulkan_commonReinUsesLisp2021-01-044-4/+302
|
* renderer_vulkan: Move device abstraction to vulkan_commonReinUsesLisp2021-01-042-0/+1189
|
* vulkan_instance: Allow different Vulkan versions and enforce 1.1ReinUsesLisp2020-12-312-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.
* renderer_vulkan: Remove two step initialization on VKDeviceReinUsesLisp2020-12-312-6/+3
| | | | | The Vulkan device abstraction either initializes successfully on the constructor or throws a Vulkan exception.
* renderer_vulkan: Throw when enumerating devices failsReinUsesLisp2020-12-314-11/+8
| | | | | | Report device enumeration errors with exceptions to be consistent with other initialization related function calls. Reduces the amount of code to maintain.
* renderer_vulkan: Initialize surface in separate fileReinUsesLisp2020-12-313-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.
* renderer_vulkan: Create debug callback on separate file and throwReinUsesLisp2020-12-315-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.
* renderer_vulkan: Move instance initialization to a separate fileReinUsesLisp2020-12-312-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.
* vulkan_common: Rename renderer_vulkan/wrapper.h to vulkan_common/vulkan_wrapper.hReinUsesLisp2020-12-312-0/+2141
| | | | Allows sharing Vulkan wrapper code between different rendering backends.
* vulkan_common: Move dynamic library load to a separate fileReinUsesLisp2020-12-312-0/+49
Allows us to initialize a Vulkan dynamic library from different backends without duplicating code.