- 13 Feb, 2021 18 commits
-
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
Fix regression on Pascal on Animal Crossing: New Horizons, fixing a validation error.
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
Ensure the behavior of the previous commit in tests.
-
ReinUsesLisp authored
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.
-
bunnei authored
kernel: More accurately utilize resource_limit
-
ameerj authored
-
- 12 Feb, 2021 3 commits
-
-
ameerj authored
This implements KScopedReservation, allowing resource limit reservations to be more HW accurate, and release upon failure without requiring too many conditionals.
-
Chloe authored
* 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
-
bunnei authored
core: Silence various warnings on Clang 12
-
- 11 Feb, 2021 3 commits
- 10 Feb, 2021 8 commits
-
-
bunnei authored
configure_input_player_widget: Minor cleanup
-
LC authored
common: Add -fsized-deallocation as a Clang flag
-
LC authored
core: Add -fsized-dealloction as a Clang flag
-
LC authored
configure_input_player_widget: Silence unused variable warnings
-
lat9nq authored
Prevents clang 11 from throwing an error since these variables are unused.
-
lat9nq authored
Prevents an operator delete error when compiling with Clang 11.
-
lat9nq authored
Prevents a operator delete error when compiling with Clang 11.
-
Ameer J authored
udp: Silence warnings on Clang 12
-
- 09 Feb, 2021 8 commits
-
-
bunnei authored
video_core: Remove unused functions and variables
-
Lioncash authored
Clang 12 currently falls over in the face of this.
-
Lioncash authored
Prevents warnings on clang 12. This path is reachable on other variations of the build that disable the unreachable macro.
-
Lioncash authored
We were previously the name of the object being initialized within its own initializer, which results in uninitialized data being read.
-
Lioncash authored
Simply mark them as unused for now.
-
Lioncash authored
Prevents compilation errors on clang 12 due to incomplete types within a unique_ptr member.
-
Lioncash authored
Resolves warnings on clang 12
-
Lioncash authored
Silences a few warnings on clang 12.
-