summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-02-13yuzu/config: Disable assembly shaders by defaultReinUsesLisp
Due to BindBufferRangeNV limitations and poor quality code emission from our side, assembly shaders are currently slower than GLSL. Their build time and feature advantages are still relevant, but they are outweighted by their runtime performance.
2021-02-13renderer_opengl: Remove interopReinUsesLisp
Remove unused interop code from the OpenGL backend.
2021-02-13gl_buffer_cache: Drop interop based parameter buffer workaroundsReinUsesLisp
Sacrify runtime performance to avoid generating kernel exceptions on Windows due to our abusive aliasing of interop buffer objects.
2021-02-13buffer_cache: Heuristically detect stream buffersReinUsesLisp
Detect when a memory region has been joined several times and increase the size of the created buffer on those instances. The buffer is assumed to be a "stream buffer", increasing its size should stop us from constantly recreating it and fragmenting memory.
2021-02-13buffer_cache: Split CreateBuffer in separate functionsReinUsesLisp
Allow adding functionality to each function without making CreateBuffer more complex.
2021-02-13buffer_cache: Skip cache on small uploads on VulkanReinUsesLisp
Ports from OpenGL the optimization to skip small 3D uniform buffer uploads. This will take advantage of the previously introduced stream buffer. Fixes instances where the staging buffer offset was being ignored.
2021-02-13vk_staging_buffer_pool: Add stream buffer for small uploadsReinUsesLisp
This uses a ring buffer similar to OpenGL's stream buffer for small uploads. This stops us from allocating several small buffers, reducing memory fragmentation and cache locality. It uses dedicated allocations when possible.
2021-02-13vulkan_device: Enable robustBufferAccessReinUsesLisp
Fix regression on Pascal on Animal Crossing: New Horizons, fixing a validation error.
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-13vulkan_common: Expose interop and headless devicesReinUsesLisp
2021-02-13vulkan_common: Make interop extensions mandatoryReinUsesLisp
2021-02-13vulkan_device: Enable robust buffersReinUsesLisp
2021-02-13vulkan_device: Use designated initializers for featuresReinUsesLisp
2021-02-13vulkan_wrapper: Add memory barrier pipeline barrier helperReinUsesLisp
2021-02-13vulkan_device: Fix formatting of constantsReinUsesLisp
2021-02-13vulkan_wrapper: Add interop functionsReinUsesLisp
2021-02-13vulkan_instance: Initialize Vulkan instance in a separate threadReinUsesLisp
Workaround an issue on Nvidia where creating a Vulkan instance from an active OpenGL thread disables threaded optimization on the driver. This optimization is important to have good performance on Nvidia OpenGL.
2021-02-13vulkan_wrapper: Pull Windows symbolsReinUsesLisp
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-02-13tests/buffer_base: Add cached CPU writes testsReinUsesLisp
Ensure the behavior of the previous commit in tests.
2021-02-13buffer_base: Add support for cached CPU writesReinUsesLisp
Some games usually write memory pages currently used by the GPU, causing rendering issues (e.g. flashing geometry and shadows on Link's Awakening). To workaround this issue, Guest CPU writes are delayed until the command buffer finishes processing, but the pages are updated immediately. The overall behavior is: - CPU writes are cached until they are flushed, they update the page state, but don't change the modification state. Cached writes stop pages from being flushed, in case games have meaningful data in it. - Command processing writes (e.g. push constants) update the page state and are marked to the command processor as dirty. They don't remove the state of cached writes.
2021-02-12Merge pull request #5877 from ameerj/res-limit-usagebunnei
kernel: More accurately utilize resource_limit
2021-02-12kernel: More accurately reserve and release resourcesameerj
2021-02-12kernel: KScopedReservation implementationameerj
This implements KScopedReservation, allowing resource limit reservations to be more HW accurate, and release upon failure without requiring too many conditionals.
2021-02-12kernel: Unify result codes (#5890)Chloe
* kernel: Unify result codes Drop the usage of ERR_NAME convention in kernel for ResultName. Removed seperation between svc_results.h & errors.h as we mainly include both most of the time anyways. * oops * rename errors to svc_results
2021-02-11Merge pull request #5902 from lioncash/core-warnbunnei
core: Silence various warnings on Clang 12
2021-02-11Merge pull request #5869 from german77/mousePanningbunnei
input_common: Add mouse panning
2021-02-10Merge pull request #5908 from Morph1984/swkbd-finalizebunnei
software_keyboard: Implement Finalize request command
2021-02-10software_keyboard: Implement Finalize request commandMorph
2021-02-10Merge pull request #5893 from lioncash/inputbunnei
configure_input_player_widget: Minor cleanup
2021-02-09Merge pull request #5904 from lat9nq/common-sized-deallocLC
common: Add -fsized-deallocation as a Clang flag
2021-02-09Merge pull request #5905 from lat9nq/core-sized-deallocLC
core: Add -fsized-dealloction as a Clang flag
2021-02-09Merge pull request #5903 from lat9nq/config-silence-warnsLC
configure_input_player_widget: Silence unused variable warnings
2021-02-09configure_input_player_widget: Silence unused variable warningslat9nq
Prevents clang 11 from throwing an error since these variables are unused.
2021-02-09common: Add -fsized-deallocation as a Clang flaglat9nq
Prevents an operator delete error when compiling with Clang 11.
2021-02-09core: Add -fsized-dealloction as a Clang flaglat9nq
Prevents a operator delete error when compiling with Clang 11.
2021-02-09Merge pull request #5901 from lioncash/input-warnAmeer J
udp: Silence warnings on Clang 12
2021-02-09Merge pull request #5900 from lioncash/unused-funcbunnei
video_core: Remove unused functions and variables
2021-02-09bsd: Remove usage of optional emplace() with no argumentsLioncash
Clang 12 currently falls over in the face of this.
2021-02-09am/controller: Remove [[fallthrough]] from unreachable pathLioncash
Prevents warnings on clang 12. This path is reachable on other variations of the build that disable the unreachable macro.
2021-02-09nfp: Correct uninitialized size being used within GetTagInfo()Lioncash
We were previously the name of the object being initialized within its own initializer, which results in uninitialized data being read.
2021-02-09udp: Silence unused member variable warningsLioncash
Simply mark them as unused for now.
2021-02-09udp/client: Define ClientData constructor/destructor in cpp fileLioncash
Prevents compilation errors on clang 12 due to incomplete types within a unique_ptr member.
2021-02-09gl_rasterizer: Remove unused variablesLioncash
Resolves warnings on clang 12
2021-02-09texture_cache/util: Remove unused functionsLioncash
Silences a few warnings on clang 12.
2021-02-09configure_input_player_widget: Reduce duplication of array accessors where ↵Lioncash
applicable Reduces the amount of code to read in expressions a little bit by separating constituents out a little.
2021-02-09configure_input_player_widget: Avoid nontrivial copies where applicableLioncash
Previously a function was copying an array of 20 std::string instances by value.
2021-02-08Settings: Add depth to Joysticks on Pro Controller preview (#5894)Jatoxo
* Add some depth to ProJoysticks * address comments * clang * address nits * fix wrong inner_offset when offset.x was 0
2021-02-09Merge pull request #5899 from ameerj/ffmpeg-revertMorph
cmake: Revert FFmpeg 4.3.1 update for Windows builds
2021-02-08cmake: Revert FFmpeg 4.3.1 update for Windows buildsameerj
The new 4.3.1 externals build seems to not be compatible with yuzu. This also fixes an oversight when renaming CMake variables.