Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Graphical corruption when using HalQuickRebootRoutine to return to dashboard #507

Closed
abaire opened this issue Sep 17, 2021 · 1 comment · Fixed by #511
Closed

Graphical corruption when using HalQuickRebootRoutine to return to dashboard #507

abaire opened this issue Sep 17, 2021 · 1 comment · Fixed by #511

Comments

@abaire
Copy link
Contributor

abaire commented Sep 17, 2021

When using HalQuickRebootRoutine with a NULL szLaunchPath and a dwLaunchDataType of LDT_NONE (0xFFFFFFFF) there is a brief period of graphical corruption before the dashboard is displayed.

XVideoInit looks like it's doing reasonable things with respect to setting AvSetSavedDataAddress to the framebuffer so I'm not sure what is causing this.

  • I do not see this corruption when doing a trivial launch of another nxdk-built XBE on the same data storage.
  • I confirmed that I can grab the framebuffer via XVideoGetFB, memset it, flush it, and see the change reflected briefly before it's replaced by corruption.
  • Reproduced both in xemu and on hardware, relatively trivial test program at https://github.com/abaire/nxdk_launch_test
@abaire
Copy link
Contributor Author

abaire commented Sep 20, 2021

Playing around with this a bit more, it seems that freeing the framebuffer set by the dashboard and retrieved via AvGetSavedDataAddress at

MmPersistContiguousMemory(previousFB, previousFBSize, FALSE);
is what triggers the problem (if I comment out the lines unpersisting and freeing the previous FB the issue goes away).

I'm not sure if this is an indication that AvSetSavedDataAddress is somehow not working or if the kernel/dashboard/... just blindly uses the memory at 0x80061000 as the framebuffer when initializing the dashboard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

1 participant