summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_device.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #4204 from ReinUsesLisp/vulkan-1.0bunnei2020-10-191-38/+35
|\ | | | | renderer_vulkan: Create and properly use Vulkan 1.0 instances when 1.1 is not available
| * vk_device: Use Vulkan 1.0 properlyReinUsesLisp2020-08-201-38/+35
| | | | | | | | | | Enable the required capabilities to use Vulkan 1.0 without validation errors and disable those that are not compatible with it.
* | vk_device: Block VK_EXT_extended_dynamic_state for RDNA devicesgoldenx862020-10-091-0/+24
| | | | | | | | | | | | 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.
* | Remove ext_extended_dynamic_state blacklistMatías Locatti2020-09-301-8/+0
| | | | | | 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.
* | renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphoreReinUsesLisp2020-09-191-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | vk_device: Fix driver id check on AMD for VK_EXT_extended_dynamic_stateReinUsesLisp2020-08-311-6/+9
| | | | | | | | | | | | | | | | | | | | '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.
* | vk_device: Blacklist AMD proprietary from VK_EXT_extended_dynamic_stateReinUsesLisp2020-08-291-1/+6
|/ | | | | | 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.
* Vk Async pipeline compilationameerj2020-08-161-0/+2
|
* vulkan: Silence more -Wmissing-field-initializer warningsLioncash2020-08-031-1/+2
|
* Merge pull request #4324 from ReinUsesLisp/formatsbunnei2020-07-211-0/+9
|\ | | | | video_core: Fix, add and rename pixel formats
| * video_core: Fix DXT4 and RGB565ReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement RGBA32_SINT render targetReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement RGBA32_SINT render targetReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement RGBA16_SINT render targetReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement RGBA8_SINT render targetReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement RG32_SINT render targetReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement RG8_SINT render target and fix RG8_UINTReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement R8_SINT render targetReinUsesLisp2020-07-131-0/+1
| |
| * video_core: Implement R8_SNORM render targetReinUsesLisp2020-07-131-0/+1
| |
* | vk_device: Fix build error on old MSVC versionsReinUsesLisp2020-07-181-3/+3
| | | | | | | | | | Designated initializers on old MSVC versions fail to build when they take the address of a constant.
* | vk_device: Make use of designated initializers where applicableLioncash2020-07-141-124/+152
|/ | | | | Avoids redundant repetitions of variable names, and allows assignment all in one statement.
* vk_device: Enable VK_EXT_extended_dynamic_state when availableReinUsesLisp2020-06-271-0/+26
|
* maxwell_to_vk: Add R16UI image formatReinUsesLisp2020-06-021-70/+73
| | | | - Used by Octopath Traveler
* maxwell_to_vk: Add format B8G8R8A8_SRGBMorph2020-05-181-0/+1
| | | | | Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM Used by Bravely Default II
* Merge pull request #3839 from Morph1984/r8g8uiRodrigo Locatti2020-05-091-0/+1
|\ | | | | texture: Implement R8G8UI
| * texture: Implement R8G8UIMorph2020-04-301-0/+1
| | | | | | | | - Used by The Walking Dead: The Final Season
* | Merge pull request #3885 from ReinUsesLisp/viewport-swizzlesbunnei2020-05-081-0/+5
|\ \ | | | | | | video_core: Implement viewport swizzles with NV_viewport_swizzle
| * | vk_graphics_pipeline: Implement viewport swizzles with NV_viewport_swizzleReinUsesLisp2020-05-041-0/+5
| | |
* | | vk_sampler_cache: Use VK_EXT_custom_border_color when availableReinUsesLisp2020-05-051-0/+27
|/ / | | | | | | | | | | | | | | 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.
* / vulkan: Remove unnecessary includesLioncash2020-04-291-1/+0
|/ | | | | | | 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.
* renderer_vulkan: Integrate Nvidia Nsight Aftermath on WindowsReinUsesLisp2020-04-141-13/+22
| | | | | | | | | | | | | | | | | | | | | 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.
* renderer_vulkan: Drop Vulkan-HppReinUsesLisp2020-04-111-255/+315
|
* yuzu: Drop SDL2 and Qt frontend Vulkan requirementsReinUsesLisp2020-04-071-46/+46
| | | | Create Vulkan instances and surfaces from the Vulkan backend.
* vk_device: Add missing ASTC queriesReinUsesLisp2020-04-011-14/+29
|
* video_core: Use native ASTC when availableReinUsesLisp2020-04-011-2/+0
|
* Merge pull request #3501 from ReinUsesLisp/rgba16-snormRodrigo Locatti2020-03-161-0/+1
|\ | | | | video_core: Implement RGBA16_SNORM
| * video_core: Implement RGBA16_SNORMReinUsesLisp2020-03-131-0/+1
| | | | | | | | Implement RGBA16_SNORM with the current API. Nothing special here.
* | vk_device: Enable VK_EXT_transform_feedback when availableReinUsesLisp2020-03-131-7/+34
| |
* | vk_device: Shrink formatless capability name sizeReinUsesLisp2020-03-131-4/+2
|/
* Merge pull request #3417 from ReinUsesLisp/r32ibunnei2020-02-251-0/+1
|\ | | | | texture: Implement R32I
| * texture: Implement R32IReinUsesLisp2020-02-151-0/+1
| |
* | Merge pull request #3434 from namkazt/patch-2Rodrigo Locatti2020-02-211-0/+4
|\ \ | | | | | | vk_shader: Implement ImageLoad
| * | vk_device: remove left over from other branchNguyen Dac Nam2020-02-211-1/+0
| | |
| * | vk_device: setup shaderStorageImageReadWithoutFormatNguyen Dac Nam2020-02-191-0/+5
| |/
* | Merge pull request #3435 from namkazt/patch-3Rodrigo Locatti2020-02-211-0/+1
|\ \ | | | | | | vulkan: add DXT23_SRGB
| * | add eBc2SrgbBlock to formatsNguyen Dac Nam2020-02-181-0/+1
| |/
* / vk_query_cache: Implement generic query cache on VulkanReinUsesLisp2020-02-141-1/+9
|/
* settings: Add settings for graphics backendReinUsesLisp2020-01-291-2/+4
|
* vk_device: Add entry to catch device lossesReinUsesLisp2019-12-191-0/+21
| | | | | | | 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.
* vk_device: Add query for RGBA8UintReinUsesLisp2019-12-191-0/+1
|
* vk_device: Misc changesReinUsesLisp2019-12-091-100/+199
| | | | | | | | | - 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.
* externals: Update Vulkan-HeadersReinUsesLisp2019-12-091-2/+1
|
* vk_device: Add miscellaneous features and minor style changesReinUsesLisp2019-09-131-90/+211
| | | | | | | | | | | | | | | * 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
* vk_device: Let formats array type be deducedReinUsesLisp2019-05-261-33/+33
|
* vk_device: Enable features when available and misc changesReinUsesLisp2019-05-261-28/+108
| | | | | | | | | | | | 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.
* maxwell_to_vk: Initial implementationReinUsesLisp2019-03-041-3/+10
|
* vk_device: Abstract device handling into a classReinUsesLisp2019-02-131-0/+231
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).