-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Description
As per https://discord.com/channels/1410429555188961342/1410435424249450610/1410993383987744838
The general issue here is that when creating a framebuffer via https://github.com/devkitPro/libctru/blob/e09a49a08fa469bc08fb62e9d29bfe6407c0232a/libctru/source/gfx.c#L125-L158 we immediately present the framebuffer and turn of GSGPU's "force black" setting. When doing this with a CPU-side buffer, this is fine, as it's initialized to all 0's, but when it's a GPU-side buffer it can have anything in it. And until you present again, this remains on screen. As a result, you are forced to display a single frame of garbage on both displays.
A few proposed solutions:
- Call
GSPGPU_SetLcdForceBlack(0x1)
right after init, blanking out the display again, so we can clear it properly and call present again ourselves, burning a single frame of startup time and performing redundant startup work. - Submit a patch to libctru to fix it.
- Implement the startup routine ourselves, with a fork of libctru exposing the required statics.
- Compile libctru within ctru-sys, allowing us to apply patches prior to a build.
Metadata
Metadata
Assignees
Labels
No labels