aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
AgeCommit message (Collapse)Author
2020-09-20renderer_opengl: Remove emulated mailbox presentationReinUsesLisp
Emulated mailbox presentation was causing performance issues on Nvidia's OpenGL driver. Remove it.
2020-09-19vk_query_cache: Hack counter destructor to avoid reserving queriesReinUsesLisp
This is a hack to destroy all HostCounter instances before the base class destructor is called. The query cache should be redesigned to have a proper ownership model instead of using shared pointers. For now, destroy the host counter hierarchy from the derived class destructor.
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-09-16video_core: Enforce -Werror=switchReinUsesLisp
This forces us to fix all -Wswitch warnings in video_core.
2020-09-06video_core: Remove all Core::System references in rendererReinUsesLisp
Now that the GPU is initialized when video backends are initialized, it's no longer needed to query components once the game is running: it can be done when yuzu is booting. This allows us to pass components between constructors and in the process remove all Core::System references in the video backend.
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-26Merge pull request #4555 from ReinUsesLisp/fix-primitive-topologybunnei
vk_state_tracker: Fix primitive topology
2020-08-24Merge pull request #4542 from ReinUsesLisp/gpu-init-basebunnei
video_core: Initialize renderer with a GPU
2020-08-22video_core: Initialize renderer with a GPUReinUsesLisp
Add an extra step in GPU initialization to be able to initialize render backends with a valid GPU instance.
2020-08-20vk_state_tracker: Fix primitive topologyReinUsesLisp
State track the current primitive topology with a regular comparison instead of using dirty flags. This fixes a bug in dirty flags for this particular state and it also avoids unnecessary state changes as this property is stored in a frequently changed bit field.
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-20renderer_vulkan: Create a Vulkan 1.0 instance when 1.1 is not availableReinUsesLisp
This commit doesn't make yuzu compatible with Vulkan 1.0 yet, it only creates an 1.0 instance.
2020-08-20Merge pull request #4546 from lioncash/telemetrybunnei
common/telemetry: Migrate namespace into the Common namespace
2020-08-18Merge pull request #4522 from lioncash/vulk-copybunnei
vulkan/wrapper: Avoid unnecessary copy in EnumerateInstanceExtensionProperties()
2020-08-18common/telemetry: Migrate namespace into the Common namespaceLioncash
Migrates the Telemetry namespace into the Common namespace to make the code consistent with the rest of our common code.
2020-08-17Merge pull request #4535 from lioncash/fileutilbunnei
common/fileutil: Convert namespace to Common::FS
2020-08-16Remove unneeded newlines, optional Registry in shader paramsameerj
Addressing feedback from Rodrigo
2020-08-16move thread 1/4 count computation into allocate workers methodameerj
2020-08-16Address feedback, add shader compile notifier, update setting textameerj
2020-08-16Vk Async Worker directly emplace in cacheameerj
2020-08-16Address feedback. Bruteforce delete duplicatesameerj
2020-08-16Vk Async pipeline compilationameerj
2020-08-16common/fileutil: Convert namespace to Common::FSLioncash
Migrates a remaining common file over to the Common namespace, making it consistent with the rest of common files. This also allows for high-traffic FS related code to alias the filesystem function namespace as namespace FS = Common::FS; for more concise typing.
2020-08-14vulkan/wrapper: Avoid unnecessary copy in EnumerateInstanceExtensionProperties()Lioncash
Given this is implicitly creating a std::optional, we can move the vector into it.
2020-08-13General: Tidy up clang-format warnings part 2Lioncash
2020-08-03vulkan: Silence more -Wmissing-field-initializer warningsLioncash
2020-07-25vulkan: Resolve -Wmissing-field-initializer warningsLioncash
2020-07-24Merge pull request #4393 from lioncash/unused5bunnei
vk_rasterizer: Remove unused variable in Clear()
2020-07-23Merge pull request #4394 from lioncash/unused6bunnei
video_core: Remove unused variables
2020-07-21Merge pull request #4359 from ReinUsesLisp/clamp-sharedRodrigo Locatti
renderer_{opengl,vulkan}: Clamp shared memory to host's limit
2020-07-21video_core: Remove unused variablesLioncash
Silences several compiler warnings about unused variables.
2020-07-21vk_rasterizer: Remove unused variable in Clear()Lioncash
The relevant values are already assigned further down in the lambda, so this can be removed entirely.
2020-07-21Merge pull request #4324 from ReinUsesLisp/formatsbunnei
video_core: Fix, add and rename pixel formats
2020-07-18Merge pull request #4364 from lioncash/desig5bunnei
vulkan: Make use of designated initializers where applicable
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-17Merge pull request #4322 from ReinUsesLisp/fix-dynstatebunnei
vk_state_tracker: Fix dirty flags for stencil_enable on VK_EXT_extended_dynamic_state
2020-07-16wrapper: Make use of designated initializers where applicableLioncash
2020-07-16vk_texture_cache: Make use of designated initializers where applicableLioncash
2020-07-16vk_texture_cache: Amend mismatched access masks and indices in UploadBufferLioncash
Discovered while converting relevant parts of the codebase over to designated initializers.
2020-07-16vk_swapchain: Make use of designated initializers where applicableLioncash
2020-07-16vk_stream_buffer: Make use of designated initializers where applicableLioncash
2020-07-16vk_staging_buffer_pool: Make use of designated initializers where applicableLioncash
2020-07-16vk_shader_util: Make use of designated initializers where applicableLioncash
2020-07-16vk_scheduler: Make use of designated initializers where applicableLioncash
2020-07-16vk_sampler_cache: Make use of designated initializers where applicableLioncash
2020-07-16vk_resource_manager: Make use of designated initializers where applicableLioncash
2020-07-16vk_renderpass_cache: Make use of designated initializers where applicableLioncash
2020-07-16vk_rasterizer: Make use of designated initializers where applicableLioncash
2020-07-16vk_query_cache: Make use of designated initializers where applicableLioncash