aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines
AgeCommit message (Collapse)Author
2021-07-22vk_graphics_pipeline: Implement conservative renderingReinUsesLisp
2021-07-22shader: Unify shader stage typesReinUsesLisp
2021-07-22vulkan: Use VK_EXT_provoking_vertex when availableReinUsesLisp
2021-07-22DMA: Restrict optimised path for BlockToLinear further.FernandoS27
2021-07-22shader: Primitive Vulkan integrationReinUsesLisp
2021-07-22shader: Remove old shader managementReinUsesLisp
2021-07-15Buffer cache: Fixes, Clang and Feedback.Fernando Sahmkow
2021-07-14DMAEngine: Revert flushing from Pitch to BlpockLinear.Fernando Sahmkow
2021-07-13DMAEngine: Accelerate BufferClearFernando Sahmkow
2021-07-11accelerateDMA: Accelerate Buffer Copies.Fernando Sahmkow
2021-07-08Out of bound blit (#6531)Feng Chen
* Fix out of bound blit error * Fix code read * Fix ci error Co-authored-by: Feng Chen <chen.feng@gloritysolutions.com>
2021-06-23maxwell3d: Add missing return in default SizeInBytes() caseLioncash
We were returning '1' in ComponentCount()'s default case but were neglecting to do the same with SizeInBytes().
2021-06-01buffer_cache: Simplify uniform disabling logicameerj
2021-04-14Merge pull request #6196 from bunnei/asserts-settingbunnei
core: settings: Add setting for debug assertions and disable by default.
2021-04-14common: Move settings to common from core.bunnei
- Removes a dependency on core and input_common from common.
2021-04-12engine_interface: Add missing virtual destructorLioncash
Eliminates a potential bug vector related to inheritance. Plus, we should generally be specifying the destructor as virtual within purely virtual interfaces to begin with.
2021-02-13video_core: Reimplement the buffer cacheReinUsesLisp
Reimplement the buffer cache using cached bindings and page level granularity for modification tracking. This also drops the usage of shared pointers and virtual functions from the cache. - Bindings are cached, allowing to skip work when the game changes few bits between draws. - OpenGL Assembly shaders no longer copy when a region has been modified from the GPU to emulate constant buffers, instead GL_EXT_memory_object is used to alias sub-buffers within the same allocation. - OpenGL Assembly shaders stream constant buffer data using glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In theory this should save one hash table resolve inside the driver compared to glBufferSubData. - A new OpenGL stream buffer is implemented based on fences for drivers that are not Nvidia's proprietary, due to their low performance on partial glBufferSubData calls synchronized with 3D rendering (that some games use a lot). - Most optimizations are shared between APIs now, allowing Vulkan to cache more bindings than before, skipping unnecesarry work. This commit adds the necessary infrastructure to use Vulkan object from OpenGL. Overall, it improves performance and fixes some bugs present on the old cache. There are still some edge cases hit by some games that harm performance on some vendors, this are planned to be fixed in later commits.
2021-02-13gpu: Report renderer errors with exceptionsReinUsesLisp
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-24maxwell_3d: Silence array bounds warningsReinUsesLisp
2021-01-15common/common_funcs: Rename INSERT_UNION_PADDING_{BYTES,WORDS} to _NOINITReinUsesLisp
INSERT_PADDING_BYTES_NOINIT is more descriptive of the underlying behavior.
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-15Merge pull request #5157 from lioncash/array-dirtybunnei
maxwell_3d: Remove unused dirty_pointer array
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-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-05maxwell_dma: Rename RenderEnable::Mode::FALSE and TRUE to avoid name conflictcomex
On Apple platforms, FALSE and TRUE are defined as macros by <mach/boolean.h>, which is included by various system headers. Note that there appear to be no actual users of the names to fix up.
2020-12-04video_core: Resolve more variable shadowing scenariosLioncash
Resolves variable shadowing scenarios up to the end of the OpenGL code to make it nicer to review. The rest will be resolved in a following commit.
2020-11-26vk_shader_decompiler: Implement force early fragment testsReinUsesLisp
Force early fragment tests when the 3D method is enabled. The established pipeline cache takes care of recompiling if needed. This is implemented only on Vulkan to avoid invalidating the shader cache on OpenGL.
2020-11-20Merge pull request #4953 from lioncash/shader-shadowbunnei
shader_bytecode: Eliminate variable shadowing
2020-11-20shader_bytecode: Make use of [[nodiscard]] where applicableLioncash
Ensures that all queried values are made use of.
2020-11-20shader_bytecode: Eliminate variable shadowingLioncash
2020-11-11maxwell_3d: Use insert instead of loop push_backReinUsesLisp
This reduces the overhead of bounds checking on each element. It won't reduce the cost of allocation because usually this vector's capacity is usually large enough to hold whatever we push to it.
2020-11-11maxwell_3d: Move code to separate functionsReinUsesLisp
Deduplicate some code and put it in separate functions so it's easier to understand and profile.
2020-10-28shader/arithmetic: Implement FCMP immediate + register variantReinUsesLisp
Trivially add the encoding for this.
2020-10-09video_core: Enforce -Wclass-memaccessReinUsesLisp
2020-10-02video_core: Enforce -Wunused-variable and -Wunused-but-set-variableReinUsesLisp
2020-09-22General: Make use of std::nullopt where applicableLioncash
Allows some implementations to avoid completely zeroing out the internal buffer of the optional, and instead only set the validity byte within the structure. This also makes it consistent how we return empty optionals.
2020-09-18fermi_2d: Make use of designated initializersLioncash
Same behavior, less repetition. We can also ensure all members of Config are initialized.
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-16Merge pull request #4519 from lioncash/semibunnei
maxwell_3d: Resolve -Wextra-semi warning
2020-08-14maxwell_3d: Resolve -Wextra-semi warningLioncash
Semicolons after a function definition aren't necessary.
2020-08-10textures/decoders: Fix block linear to pitch copiesReinUsesLisp
There were two issues with block linear copies. First the swizzling was wrong and this commit reimplements them. The other issue was that these copies are generally used to download render targets from the GPU and yuzu was not downloading them from host GPU memory unless the extreme GPU accuracy setting was selected. This commit enables cached memory reads for all accuracy levels. - Fixes level thumbnails in Super Mario Maker 2.
2020-07-10video_core/textures: Add and use SwizzleSliceToVoxel, and minor style changesReinUsesLisp
Change GOB sizes from free-functions to constexpr constants. Add SwizzleSliceToVoxel, a function that swizzles a 2D array of pixels into a 3D texture and use it for 3D copies.
2020-07-07maxwell_dma: Rename registers to match official docs and reorderReinUsesLisp
Rename registers in the MaxwellDMA class to match Nvidia's official documentation. This one can be found here: https://github.com/NVIDIA/open-gpu-doc/blob/master/classes/dma-copy/clb0b5.h While we are at it, reorganize the code in MaxwellDMA to be separated in different functions.
2020-06-26Merge pull request #4147 from ReinUsesLisp/hset2-immbunnei
shader/half_set: Implement HSET2_IMM
2020-06-24Addressed issuesDavid Marcec
2020-06-24Macro HLE supportDavid Marcec
2020-06-22shader/half_set: Implement HSET2_IMMReinUsesLisp
Add HSET2_IMM. Due to the complexity of the encoding avoid using BitField unions and read the relevant bits from the code itself. This is less error prone.
2020-06-13Merge pull request #4049 from ReinUsesLisp/separate-samplersbunnei
shader/texture: Join separate image and sampler pairs offline