skyline/app
Billy Laws e45e7546c8 Redesign buffer megabuffering
Due to the frequency at which is is called megabuffering performance is critical to the performance of the entire emulator, especially in high-drawcall-count scenarios. After the view redesign, megabuffering on a per-view level was no longer possible nor desirable, and thus megabuffering was modified to just copy for every usage of a view. This worked great at the time since there were other bottlenecks, however gpu-new has since removed almost all of them and megabuffering is now a major sore point. Fix this by megabuffering small chunks and storing them in a page-table like structure within the buffer, these chunks can be referenced by multiple views and will be smartly invalidated whenever the sequence number or execution number changes to avoid any sequencing issues. In addition to this, to help the case where almost the whole buffer is read every single frame across a set of multiple views, an optimisation to skip the chunked tracking and use one large single megabuffer allocation and one single memcpy has been introduced. This reduces the overall amount of time spent in memcpy since large memcpys are quicker.
2022-11-02 17:46:07 +00:00
..
libraries Support using in-app renderdoc API to capture individual executions 2022-11-02 17:46:07 +00:00
src/main Redesign buffer megabuffering 2022-11-02 17:46:07 +00:00
.gitignore libNX FS Initalization (v0.3) 2019-10-18 16:22:38 +05:30
build.gradle Introduce a releasedebug build variant 2022-10-17 18:39:32 +02:00
CMakeLists.txt Support using in-app renderdoc API to capture individual executions 2022-11-02 17:46:07 +00:00
proguard-rules.pro Add kotlinx.serialization-json dependencies 2022-08-06 22:00:19 +05:30