aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/vk_device.cpp
AgeCommit message (Collapse)Author
2021-01-04renderer_vulkan: Move device abstraction to vulkan_commonReinUsesLisp
2021-01-03renderer_vulkan: Rename VKDevice to DeviceReinUsesLisp
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.
2021-01-03Merge pull request #5230 from ReinUsesLisp/vulkan-commonRodrigo Locatti
vulkan_common: Move reusable Vulkan abstractions to a separate directory
2021-01-02general: Fix various spelling errorsMorph
2020-12-31vulkan_instance: Allow different Vulkan versions and enforce 1.1ReinUsesLisp
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: Use an array to report lacking device limitsReinUsesLisp
This makes easier to add and tune the required device limits.
2020-12-31vk_device: Stop initialization when device is not suitableReinUsesLisp
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 VKDeviceReinUsesLisp
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 ↵ReinUsesLisp
vulkan_common/vulkan_wrapper.h Allows sharing Vulkan wrapper code between different rendering backends.
2020-12-30video_core: Rewrite the texture cacheReinUsesLisp
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-12-05video_core: Resolve more variable shadowing scenarios pt.2Lioncash
Migrates the video core code closer to enabling variable shadowing warnings as errors. This primarily sorts out shadowing occurrences within the Vulkan code.
2020-10-29General: Resolve a few missing initializer warningsLioncash
Resolves a few -Wmissing-initializer warnings.
2020-10-19Merge pull request #4204 from ReinUsesLisp/vulkan-1.0bunnei
renderer_vulkan: Create and properly use Vulkan 1.0 instances when 1.1 is not available
2020-10-08vk_device: Block VK_EXT_extended_dynamic_state for RDNA devicesgoldenx86
RDNA devices seem to crash when using VK_EXT_extended_dynamic_state in the latest 20.9.2 proprietary Windows drivers. As a workaround, for now we block device names corresponding to current RDNA released products.
2020-09-30Remove ext_extended_dynamic_state blacklistMatías Locatti
Latest AMD 20.9.2 driver fixed this, there's no reason to keep it blocked, as the previous stable signed driver release doesn't include the extension.
2020-09-19renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphoreReinUsesLisp
This reworks how host<->device synchronization works on the Vulkan backend. Instead of "protecting" resources with a fence and signalling these as free when the fence is known to be signalled by the host GPU, use timeline semaphores. Vulkan timeline semaphores allow use to work on a subset of D3D12 fences. As far as we are concerned, timeline semaphores are a value set by the host or the device that can be waited by either of them. Taking advantange of this, we can have a monolithically increasing atomic value for each submission to the graphics queue. Instead of protecting resources with a fence, we simply store the current logical tick (the atomic value stored in CPU memory). When we want to know if a resource is free, it can be compared to the current GPU tick. This greatly simplifies resource management code and the free status of resources should have less false negatives. To workaround bugs in validation layers, when these are attached there's a thread waiting for timeline semaphores.
2020-08-30vk_device: Fix driver id check on AMD for VK_EXT_extended_dynamic_stateReinUsesLisp
'driver_id' can only be known on Vulkan 1.1 after creating a logical device. Move the driver id check to disable VK_EXT_extended_dynamic_state after the logical device is successfully initialized. The Vulkan device will have the extension enabled but it will not be used.
2020-08-28vk_device: Blacklist AMD proprietary from VK_EXT_extended_dynamic_stateReinUsesLisp
Vertex binding's <stride> is bugged on AMD's proprietary drivers when using VK_EXT_extended_dynamic_state. Blacklist it for now while we investigate how to report this issue to AMD.
2020-08-20vk_device: Use Vulkan 1.0 properlyReinUsesLisp
Enable the required capabilities to use Vulkan 1.0 without validation errors and disable those that are not compatible with it.
2020-08-16Vk Async pipeline compilationameerj
2020-08-03vulkan: Silence more -Wmissing-field-initializer warningsLioncash
2020-07-21Merge pull request #4324 from ReinUsesLisp/formatsbunnei
video_core: Fix, add and rename pixel formats
2020-07-17vk_device: Fix build error on old MSVC versionsReinUsesLisp
Designated initializers on old MSVC versions fail to build when they take the address of a constant.
2020-07-13vk_device: Make use of designated initializers where applicableLioncash
Avoids redundant repetitions of variable names, and allows assignment all in one statement.
2020-07-13video_core: Fix DXT4 and RGB565ReinUsesLisp
2020-07-13video_core: Implement RGBA32_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RGBA32_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RGBA16_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RGBA8_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RG32_SINT render targetReinUsesLisp
2020-07-13video_core: Implement RG8_SINT render target and fix RG8_UINTReinUsesLisp
2020-07-13video_core: Implement R8_SINT render targetReinUsesLisp
2020-07-13video_core: Implement R8_SNORM render targetReinUsesLisp
2020-06-26vk_device: Enable VK_EXT_extended_dynamic_state when availableReinUsesLisp
2020-06-02maxwell_to_vk: Add R16UI image formatReinUsesLisp
- Used by Octopath Traveler
2020-05-18maxwell_to_vk: Add format B8G8R8A8_SRGBMorph
Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM Used by Bravely Default II
2020-05-09Merge pull request #3839 from Morph1984/r8g8uiRodrigo Locatti
texture: Implement R8G8UI
2020-05-08Merge pull request #3885 from ReinUsesLisp/viewport-swizzlesbunnei
video_core: Implement viewport swizzles with NV_viewport_swizzle
2020-05-04vk_sampler_cache: Use VK_EXT_custom_border_color when availableReinUsesLisp
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_swizzleReinUsesLisp
2020-04-30texture: Implement R8G8UIMorph
- Used by The Walking Dead: The Final Season
2020-04-28vulkan: Remove unnecessary includesLioncash
Reduces some header churn and reduces rebuilds when some header internals change. While we're at it we can also resolve a missing include in buffer_cache.
2020-04-14renderer_vulkan: Integrate Nvidia Nsight Aftermath on WindowsReinUsesLisp
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-10renderer_vulkan: Drop Vulkan-HppReinUsesLisp
2020-04-07yuzu: Drop SDL2 and Qt frontend Vulkan requirementsReinUsesLisp
Create Vulkan instances and surfaces from the Vulkan backend.
2020-04-01vk_device: Add missing ASTC queriesReinUsesLisp
2020-04-01video_core: Use native ASTC when availableReinUsesLisp
2020-03-15Merge pull request #3501 from ReinUsesLisp/rgba16-snormRodrigo Locatti
video_core: Implement RGBA16_SNORM
2020-03-13vk_device: Enable VK_EXT_transform_feedback when availableReinUsesLisp
2020-03-13vk_device: Shrink formatless capability name sizeReinUsesLisp