aboutsummaryrefslogtreecommitdiff
path: root/src/video_core
AgeCommit message (Collapse)Author
2020-12-31renderer_vulkan: Throw when enumerating devices failsReinUsesLisp
Report device enumeration errors with exceptions to be consistent with other initialization related function calls. Reduces the amount of code to maintain.
2020-12-31renderer_vulkan: Initialize surface in separate fileReinUsesLisp
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.
2020-12-31renderer_vulkan: Catch and report exceptionsReinUsesLisp
Move more Vulkan code to report errors with exceptions and report them through a log before notifying it with an error boolean for backwards compatibility. In the future we can replace the rasterizer two-step initialization to always use exceptions.
2020-12-31renderer_vulkan: Create debug callback on separate file and throwReinUsesLisp
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.
2020-12-31renderer_vulkan: Move instance initialization to a separate fileReinUsesLisp
Simplify Vulkan's backend initialization code by moving it to a separate file, allowing us to initialize a Vulkan instance from different backends.
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-31vulkan_common: Move dynamic library load to a separate fileReinUsesLisp
Allows us to initialize a Vulkan dynamic library from different backends without duplicating code.
2020-12-30half_set: Resolve -Wmaybe-uninitialized warningsLioncash
2020-12-30maxwell_to_vk: Initialize usage variable in SurfaceFormat()Lioncash
Silences a -Wmaybe-uninitialized warning
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-30video_core: Add a delayed destruction ring abstractionReinUsesLisp
2020-12-30host_shaders: Add Vulkan assembler compute shadersReinUsesLisp
2020-12-30host_shaders: Add helper to blit depth stencil fragment shaderReinUsesLisp
2020-12-30host_shaders: Add texture color blit fragment shaderReinUsesLisp
2020-12-30host_shaders: Add shaders to present to the swapchainReinUsesLisp
2020-12-30host_shaders: Add shaders to convert between depth and color imagesReinUsesLisp
2020-12-30host_shaders: Add compute shader to copy BC4 as RG32UI to RGBA8ReinUsesLisp
2020-12-30host_shaders: Add shader to render a full screen triangleReinUsesLisp
2020-12-30host_shaders: Add pitch linear upload compute shaderReinUsesLisp
2020-12-30host_shaders: Add block linear upload compute shadersReinUsesLisp
2020-12-30host_shaders: Add copyright headers to OpenGL present shadersReinUsesLisp
2020-12-30video_core/host_shaders: Add support for prebuilt SPIR-V shadersReinUsesLisp
Add support for building SPIR-V shaders from GLSL and generating headers to include the text of those same GLSL shaders to consume from OpenGL.
2020-12-28gpu: gpu_thread: Ensure MicroProfile is shutdown on exit.bunnei
2020-12-28video_core: gpu_thread: Do not wait when system is powered down.bunnei
2020-12-28video_core: gpu: Implement synchronous mode using threaded GPU.bunnei
2020-12-28video_core: gpu: Refactor out synchronous/asynchronous GPU implementations.bunnei
- We must always use a GPU thread now, even with synchronous GPU.
2020-12-25renderer_vulkan/fixed_pipeline_state: Move enabled bindings to static stateReinUsesLisp
Without using VK_EXT_robustness2, we can't consider the 'enabled' (not null) vertex buffers as dynamic state, as this leads to invalid Vulkan state. Move this to static state that is always hashed and compared in the pipeline key. The bits for enabled vertex buffers are moved into the attribute state bitfield. This is not 'correct' as it's not an attribute state, but that struct has bits to spare, and it's used in an array of 32 elements (the exact same number of vertex buffer bindings).
2020-12-25Merge pull request #5226 from ReinUsesLisp/c4715-vcRodrigo Locatti
video_core: Enforce C4715 (not all control paths return a value)
2020-12-24cmake: Always enable VulkanReinUsesLisp
Removes the unnecesary burden of maintaining separate #ifdef paths and allows us sharing generic Vulkan code across APIs.
2020-12-24video_core: Enforce C4715 (not all control paths return a value)ReinUsesLisp
Most of the time people write code that always returns a value, terminates execution, throws an exception, or uses an unconventional jump primitive. This is not always true when we build without asserts on mainline builds. To avoid introducing undefined behavior on our most used builds, enforce this warning signalling an error and stopping the build from shipping.
2020-12-24vk_shader_decompiler: Silence warning when compiling without assertsReinUsesLisp
2020-12-15Merge pull request #5157 from lioncash/array-dirtybunnei
maxwell_3d: Remove unused dirty_pointer array
2020-12-10Merge pull request #5162 from lioncash/copy-shaderbunnei
gl_shader_decompiler: Elide unnecessary copies within DeclareConstantBuffers()
2020-12-07Merge pull request #5164 from lioncash/containsRodrigo Locatti
video_core: Make use of ordered container contains() where applicable
2020-12-07video_core: Make use of ordered container contains() where applicableLioncash
With C++20, we can use the more concise contains() member function instead of comparing the result of the find() call with the end iterator.
2020-12-07ast: Improve string concat readability in operator()Lioncash
Provides an in-place format string to make it more pleasant to read.
2020-12-07gl_shader_decompiler: Elide unnecessary copies within DeclareConstantBuffers()Lioncash
Resolves a -Wrange-loop-analysis warning.
2020-12-07Merge pull request #5149 from comex/xx-map-intervalbunnei
map_interval: Change field order to address uninitialized field warning
2020-12-07Merge pull request #5159 from lioncash/move-amendRodrigo Locatti
shader_ir: std::move node within DeclareAmend()
2020-12-07buffer_block: Mark interface as nodiscard where applicableLioncash
Prevents logic errors from occurring from unused values.
2020-12-07buffer_block: Remove unnecessary includesLioncash
Reduces the amount of dependencies the header pulls in.
2020-12-07shader_ir: std::move node within DeclareAmend()Lioncash
Same behavior, but elides an unnecessary atomic reference count increment and decrement.
2020-12-07video_core: Remove unnecessary enum class casting in logging messagesLioncash
fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit.
2020-12-07Merge pull request #5152 from comex/xx-overrideLC
renderer_vulkan: Add missing `override` specifier
2020-12-07Merge pull request #5136 from lioncash/video-shadow3LC
video_core: Resolve more variable shadowing scenarios pt.3
2020-12-06maxwell_3d: Move member variables to end of classLioncash
Follows our established coding style.
2020-12-06maxwell_3d: Resolve -Wdocumentation warningLioncash
Removes a documentation comment for a non-existent member.
2020-12-06maxwell_3d: Remove unused dirty_pointer arrayLioncash
This is unused and removing it shrinks the structure by 3584 bytes.
2020-12-06renderer_vulkan: Add missing `override` specifiercomex
2020-12-06map_interval: Change field order to address uninitialized field warningcomex
Clang complains about `new_chunk`'s constructor using the then-uninitialized `first_chunk` (even though it's just to get a pointer into it).