summaryrefslogtreecommitdiffstats
path: root/src/video_core/vulkan_common/vulkan_device.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2024-02-19shader_recompiler: throw on missing geometry streams in geometry shadersLiam1-0/+5
2024-01-07Fix typos in video_coreViktor Szépe1-1/+1
2023-12-19shader_recompiler: ignore clip distances beyond driver support levelLiam1-0/+4
2023-11-19renderer_vulkan: ignore viewport stores on non-supporting driversLiam1-0/+4
2023-11-19Vulkan: Be more generous with pipeline workers for AndroidFernando Sahmkow1-0/+7
2023-10-19Manually robust on Maxwell and earlierKelebek11-0/+18
2023-10-03ci: fix new codespell errorsLiam1-1/+1
2023-09-25renderer_vulkan: Implement MSAA copiesGPUCode1-0/+5
2023-09-23Query Cachge: Fully rework Vulkan's query cacheFernando Sahmkow1-0/+6
2023-09-21renderer_vulkan: Correct component order for A4B4G4R4_UNORMGPUCode1-0/+8
2023-09-16Vulkan: add temporary workaround for AMDVLKFernando Sahmkow1-2/+1
2023-09-16Vulkan: Implement Depth Bias ControlFernando Sahmkow1-0/+15
2023-08-11vulkan_device: disable features associated with unloaded extensionsLiam1-0/+9
2023-08-03vulkan_device: Fix subgroup_size_control detection on Vulkan 1.3Ameer J1-2/+2
2023-08-03vulkan_device: Fix VK_EXT_subgroup_size_control detectionAmeer J1-1/+1
2023-08-01vulkan_device: Test depth stencil blit support by formatMorph1-23/+29
2023-07-04video_core: vulkan_device: Disable timeline semaphore on Turnip, fix qcom version check.bunnei1-7/+1
2023-07-01renderer_vulkan: Add support for VK_KHR_image_format_listGPUCode1-0/+6
2023-06-28video_core: Add BCn decoding supportGPUCode1-5/+10
2023-06-28renderer_vulkan: Add more feature checkingGPUCode1-0/+16
2023-06-28renderer_vulkan: Don't assume debug tool with debug rendererGPUCode1-1/+1
* Causes crashes because mali drivers don't support debug utils
2023-06-28renderer_vulkan: Bump minimum SPIRV versionGPUCode1-1/+1
* 1.3 is guaranteed on all 1.1 drivers
2023-06-28renderer_vulkan: Respect viewport limitGPUCode1-0/+4
2023-06-19vulkan_device: Remove brace initializertoast29031-1/+1
Co-authored-by: Tobias <thm.frey@gmail.com>
2023-06-18video_core: Formalize HasBrokenComputelat9nq1-0/+23
Also limits it to only affected Intel proprietrary driver versions. vulkan_device: Move broken compute determination vk_device: Remove errant back quote
2023-06-18renderer_vulkan: Use VMA for imagesGPUCode1-0/+5
2023-06-18externals: Add vma and initialize itlat9nq1-0/+3
video_core: Move vma implementation to library
2023-06-18vulkan_device: Remove external memory extensionlat9nq1-11/+0
Unused in yuzu. Enables yuzu to boot games in Wine using Vulkan.
2023-06-10shader_recompiler: translate f64 to f32 when unsupported on hostLiam1-0/+5
2023-06-10shader_recompiler: remove barriers in conditional control flow when device lacks supportLiam1-0/+5
2023-06-06Updated to lexicographical order suggestionsCarlos Estrague / Mrc_munir1-3/+3
2023-06-06Make VK_EXT_robustness2 optionalCarlos Estrague / Mrc_munir1-4/+4
For some reason nvidia implemented Vulkan 1.2 supported without support for VK_EXT_robustness2 in tegra X1/X2 . Fix vulkan work in TX1/TX2 L4T drivers .
2023-06-03android: video_core: Disable problematic compute shaders.bunnei1-0/+4
- Fixes #104.
2023-06-03video_core: Enable support_descriptor_aliasing on Turnip, disable storage atomic otherwise.bunnei1-0/+5
2023-06-03Implement scaled vertex buffer format emulationBilly Laws1-0/+5
These formats are unsupported by mobile GPUs so they need to be emulated in shaders instead.
2023-05-06Log object names with debug renderer, add a GPU address to ImageViewsKelebek11-1/+2
2023-04-15vulkan: use plain fences when timeline semaphores are not availableLiam1-1/+5
2023-04-08video_core: Enable ImageGather with subpixel offset on IntelWollnashorn1-5/+0
2023-04-08shader_recompiler: Add subpixel offset for correct rounding at `ImageGather`Wollnashorn1-0/+5
On AMD a subpixel offset of 1/512 of the texel size is applied to the texture coordinates at a ImageGather call to ensure the rounding at the texel centers is done the same way as in Maxwell or other Nvidia architectures. See https://www.reedbeta.com/blog/texture-gathers-and-coordinate-precision/ for more details why this might be necessary. This should fix shadow artifacts at object edges in Zelda: Breath of the Wild (#9957, #6956).
2023-03-12general: fix spelling mistakesLiam1-4/+4
2023-01-10vulkan_common: fix indirect draw with countLiam1-0/+1
2023-01-09vulkan_device: refactor feature testingLiam1-148/+293
2023-01-07renderer_vulkan: disable clock boost on unvalidated devicesLiam1-0/+2
2023-01-05renderer_vulkan: implement fallback path for null descriptorsLiam1-0/+5
2023-01-01MacroHLE: Final cleanup and fixes.Fernando Sahmkow1-26/+26
2023-01-01Vulkan: Implement Dynamic State 3Fernando Sahmkow1-6/+18
2023-01-01Vulkan: Implement Dynamic States 2Fernando Sahmkow1-0/+17
2023-01-01MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect.Fernando Sahmkow1-0/+1
2022-12-14Vulkan: Add support for VK_EXT_depth_clip_control.FernandoS271-0/+6
2022-12-13Fix validation errors on less compatible Intel GPUyzct123451-0/+10
2022-12-04vulkan_common: clean up extension usageLiam1-1/+1
2022-11-27Vulkan: update initializationLiam1-5/+11
Co-authored-by: bylaws <bylaws@users.noreply.github.com>
2022-04-23general: Convert source file copyright comments over to SPDXMorph1-3/+2
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.
2022-03-25Garbage Collection: Redesign the algorithm to do a better use of memory.Fernando Sahmkow1-0/+11
2022-03-19video_core: Reduce unused includesameerj1-1/+0
2022-02-21vulkan_device: fix missing format in ANVvoidanix1-0/+5
Currently Mesa's ANV driver does not support VK_FORMAT_B5G6R5_UNORM_PACK16, implement an alternative for it.
2021-12-24vk_texture_cache: Use 3D scale helpers for MSAA texture scaling on Intel Windows driversameerj1-0/+5
Fixes a crash when scaling MSAA textures in titles such as Sonic Colors Ultimate.
2021-12-18Vulkan: Fix the checks for primitive restart extension.Fernando Sahmkow1-7/+10
2021-12-18Vulkan: Implement VK_EXT_primitive_topology_list_restartFernando Sahmkow1-0/+10
2021-11-16vk_texture_cache: Fix unsupported blit format error checkingameerj1-4/+4
2021-09-24vk_texture_cache: Disable cube compatibility flag on non-mesa AMD GCN4 and earlierameerj1-0/+6
Fixes rainbow textures on BOTW.
2021-09-23Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan.Fernando Sahmkow1-0/+5
2021-09-13Vulkan/Descriptors: Increase sets per pool on AMFD propietary driver.Fernando Sahmkow1-0/+5
2021-08-29vulkan_device: Enable VK_KHR_swapchain_mutable_format if availableameerj1-0/+6
Silences validation errors when creating sRGB image views of linear swapchain images
2021-08-25vulkan_device: Add a check for int8 supportameerj1-2/+8
Silences validation errors when shaders use int8 without specifying its support to the API
2021-07-28renderer_vulkan: Add setting to log pipeline statisticsReinUsesLisp1-0/+6
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.
2021-07-23vulkan_device: Blacklist ampere devices from float16 mathameerj1-3/+3
2021-07-23vk_graphics_pipeline: Implement smooth linesReinUsesLisp1-0/+6
2021-07-23shader: Rework varyings and implement passthrough geometry shadersReinUsesLisp1-0/+6
Put all varyings into a single std::bitset with helpers to access it. Implement passthrough geometry shaders using host's.
2021-07-23vk_graphics_pipeline: Implement conservative renderingReinUsesLisp1-0/+6
2021-07-23shader: Emulate 64-bit integers when not supportedReinUsesLisp1-0/+5
Useful for mobile and Intel Xe devices.
2021-07-23vk_graphics_pipeline: Use VK_KHR_push_descriptor when availableReinUsesLisp1-0/+12
~51% faster on Nvidia compared to previous method.
2021-07-23vulkan: Add VK_EXT_vertex_input_dynamic_state supportReinUsesLisp1-0/+6
Reduces the number of total pipelines generated on Vulkan. Tested on Super Smash Bros. Ultimate.
2021-07-23vulkan: Use VK_EXT_provoking_vertex when availableReinUsesLisp1-0/+6
2021-07-23vulkan: Conditionally use shaderInt16ReinUsesLisp1-0/+6
Add support for Polaris AMD devices.
2021-07-23vulkan: Enable depth bounds and use it conditionallyReinUsesLisp1-0/+6
Intel devices pre-Xe don't support this.
2021-07-23vulkan_device: Enable float64 and int64 conditionallyReinUsesLisp1-0/+2
Add Intel Xe support.
2021-07-23shader: Fix bugs and build issues on GCCRodrigo Locatti1-1/+1
2021-07-23spirv: Implement ViewportMask with NV_viewport_array2ReinUsesLisp1-0/+6
2021-07-23shader: Implement ATOM/S and REDameerj1-0/+6
2021-07-23nsight_aftermath_tracker: Report used shaders to Nsight AftermathReinUsesLisp1-1/+2
2021-07-23shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when availableReinUsesLisp1-15/+27
2021-07-23shader: Implement VOTEameerj1-0/+6
2021-07-23shader: Add denorm flush supportReinUsesLisp1-16/+17
2021-06-25vulkan_device: Make device memory match the rest of the fileReinUsesLisp1-17/+16
Match the style in the file.
2021-06-21video_core: Add GPU vendor name to window title barameerj1-0/+3
2021-06-17Reaper: Change memory restrictions on TC depending on host memory on VK.Fernando Sahmkow1-0/+9
2021-02-13vulkan_device: Require VK_EXT_robustness2ReinUsesLisp1-1/+0
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-13vulkan_common: Expose interop and headless devicesReinUsesLisp1-2/+2
2021-02-13gpu: Report renderer errors with exceptionsReinUsesLisp1-1/+1
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-15vulkan_device: Enable shaderStorageImageMultisample conditionallyReinUsesLisp1-17/+18
Fix Vulkan initialization on ANV.
2021-01-04renderer_vulkan/nsight_aftermath_tracker: Move to vulkan_commonReinUsesLisp1-2/+3
2021-01-04renderer_vulkan: Move device abstraction to vulkan_commonReinUsesLisp1-0/+0
2021-01-03renderer_vulkan: Rename VKDevice to DeviceReinUsesLisp1-4/+4
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.
2020-12-31vulkan_instance: Allow different Vulkan versions and enforce 1.1ReinUsesLisp1-7/+2
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-31vk_device: Stop initialization when device is not suitableReinUsesLisp1-2/+2
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.
2020-12-31renderer_vulkan: Remove two step initialization on VKDeviceReinUsesLisp1-3/+0
The Vulkan device abstraction either initializes successfully on the constructor or throws a Vulkan exception.
2020-12-31vulkan_common: Rename renderer_vulkan/wrapper.h to vulkan_common/vulkan_wrapper.hReinUsesLisp1-1/+1
Allows sharing Vulkan wrapper code between different rendering backends.
2020-12-30video_core: Rewrite the texture cacheReinUsesLisp1-0/+34
The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues.
2020-08-20vk_device: Use Vulkan 1.0 properlyReinUsesLisp1-3/+9
Enable the required capabilities to use Vulkan 1.0 without validation errors and disable those that are not compatible with it.
2020-08-16Address feedback, add shader compile notifier, update setting textameerj1-1/+4
2020-08-16Vk Async pipeline compilationameerj1-0/+5
2020-07-16renderer_{opengl,vulkan}: Clamp shared memory to host's limitReinUsesLisp1-0/+5
This stops shaders from failing to build when the exceed host's shared memory size limit. An error is logged.
2020-06-27vk_device: Enable VK_EXT_extended_dynamic_state when availableReinUsesLisp1-0/+6
2020-05-05vk_sampler_cache: Use VK_EXT_custom_border_color when availableReinUsesLisp1-0/+6
This should fix grass interactions on Breath of the Wild on Vulkan. It is currently untested against validation layers. Nvidia's Windows 443.09 beta driver or Linux 440.66.12 is required for now.
2020-05-04vk_graphics_pipeline: Implement viewport swizzles with NV_viewport_swizzleReinUsesLisp1-0/+6
2020-04-22vk_memory_manager: Remove unified memory model flagReinUsesLisp1-5/+0
All drivers (even Intel) seem to have a device local memory type that is not host visible. Remove this flag so all devices follow the same path. This fixes a crash when trying to map to host device local memory on integrated devices.
2020-04-14renderer_vulkan: Integrate Nvidia Nsight Aftermath on WindowsReinUsesLisp1-1/+8
Adds optional support for Nsight Aftermath. It is enabled through ENABLE_NSIGHT_AFTERMATH in cmake. A path to the SDK has to be provided by the environment variable NSIGHT_AFTERMATH_SDK. Nsight Aftermath allows an application to generate "minidumps" of the GPU state when a device loss happens. By analysing these on Nsight we can know what a game was doing and why it triggered a device loss. The dump is generated inside %APPDATA%\yuzu\log\gpucrash and this directory is deleted every time a new instance is initialized with Nsight enabled. To enable it on yuzu there has a to be a driver and device capable of running Nsight Aftermath on Vulkan. That means only Turing based GPUs on the latest stable driver, beta drivers won't work for now. It is manually enabled in Configuration>Debug>Enable Graphics Debugging because when using all debugging capabilities there is a runtime cost.
2020-04-13renderer_vulkan: Remove Nvidia checkpointsReinUsesLisp1-5/+0
2020-04-11renderer_vulkan: Drop Vulkan-HppReinUsesLisp1-41/+37
2020-04-07yuzu: Drop SDL2 and Qt frontend Vulkan requirementsReinUsesLisp1-11/+10
Create Vulkan instances and surfaces from the Vulkan backend.
2020-03-13vk_device: Enable VK_EXT_transform_feedback when availableReinUsesLisp1-0/+6
2020-03-13vk_device: Shrink formatless capability name sizeReinUsesLisp1-20/+19
2020-02-19vk_device: add check for shaderStorageImageReadWithoutFormatNguyen Dac Nam1-0/+7
2019-12-19vk_device: Add entry to catch device lossesReinUsesLisp1-0/+9
VK_NV_device_diagnostic_checkpoints allows us to push data to a Vulkan queue and then query it even after a device loss. This allows us to push the current pipeline object and see what was the call that killed the device.
2019-12-09vk_device: Misc changesReinUsesLisp1-17/+77
- Setup more features and requirements. - Improve logging for missing features. - Collect telemetry parameters. - Add queries for more image formats. - Query push constants limits. - Optionally enable some extensions.
2019-09-13vk_device: Add miscellaneous features and minor style changesReinUsesLisp1-18/+44
* Increase minimum Vulkan requirements * Require VK_EXT_vertex_attribute_divisor * Require depthClamp, samplerAnisotropy and largePoints features * Search and expose VK_KHR_uniform_buffer_standard_layout * Search and expose VK_EXT_index_type_uint8 * Search and expose native float16 arithmetics * Track current driver with VK_KHR_driver_properties * Query and expose SSBO alignment * Query more image formats * Improve logging overall * Minor style changes * Minor rephrasing of commentaries
2019-05-26vk_device: Enable features when available and misc changesReinUsesLisp1-15/+43
Keeps track of native ASTC support, VK_EXT_scalar_block_layout availability and SSBO range. Check for independentBlend and vertexPipelineStorageAndAtomics as a required feature. Always enable it. Use vk::to_string format to log Vulkan enums. Style changes.
2019-02-13vk_device: Abstract device handling into a classReinUsesLisp1-0/+116
VKDevice contains all the data required to manage and initialize a physical device. Its intention is to be passed across Vulkan objects to query device-specific data (for example the logical device and the dispatch loader).