skyline/app/src/main
Billy Laws 3d31ade35f Implement an alternative buffer path using direct memory importing
By importing guest memory directly onto the host GPU we can avoid many of the complexities that occur with memory tracking as well as the heavy performance overhead in some situations. Since it's still desired to support the traditional buffer method, as it's faster in some cases and more widely supported, most of the exposed buffer methods have been split into two variants with just a small amount of shared code. While in most cases the code is simpler, one area with more complexity is handling CPU accesses that need to be sequenced, since we don't have any place we can easily apply writes to on the GPFIFO thread that wont also impact the buffer on the GPU, to solve this, when the GPU is actively using a buffer's contents, an interval list is used to keep track of any GPFIO-written regions on the CPU and any CPU reads to them will instead be directed to a shadow of the buffer with just those writes applied. Once the GPU has finished using buffer contents the shadow can then be removed as all writes will have been done by the GPU.

The main caveat of this is that it requires tying host sync to guest sync, this can reduce performance in games which double buffer command buffers as it prevents us from fully saturating the CPU with the GPFIFO thread.
2023-01-08 19:30:52 +00:00
..
assets Implement full profile picture support 2022-12-27 22:53:41 +05:30
cpp Implement an alternative buffer path using direct memory importing 2023-01-08 19:30:52 +00:00
java/emu/skyline Implement an alternative buffer path using direct memory importing 2023-01-08 19:30:52 +00:00
res Implement an alternative buffer path using direct memory importing 2023-01-08 19:30:52 +00:00
shaders Implement a helper shader for partial clears 2022-11-19 12:49:05 +00:00
AndroidManifest.xml Run emulation in a separate process 2022-11-11 11:49:33 +00:00