display: synchronize macOS SDL window creation - #114
Open
Jerome Haxhiaj (jeromehaxhiaj-qti) wants to merge 1 commit into
Open
display: synchronize macOS SDL window creation#114Jerome Haxhiaj (jeromehaxhiaj-qti) wants to merge 1 commit into
Jerome Haxhiaj (jeromehaxhiaj-qti) wants to merge 1 commit into
Conversation
The GL switch path invokes the window-create callback and then immediately creates the SDL GL context, initializes the QEMU GL shader, and creates the surface texture. The macOS display bridge previously used fork_on_systemc(), so the callback could return before the SystemC thread had created the native SDL window. This allowed GL setup and the first framebuffer update to race with window creation and could leave an invalid display state or crash during GL refresh. After simulation starts, release QEMU's I/O-thread lock while synchronously running the window-create operation on the SystemC thread, then reacquire the lock before returning to the GL switch path. This preserves the required macOS main-thread affinity while guaranteeing that the window exists before context and texture creation continue. During elaboration, retain the non-blocking behavior to avoid waiting for a SystemC job before the simulation kernel is running. Signed-off-by: Jerome Haxhiaj <jhaxhiaj@qti.qualcomm.com>
Jerome Haxhiaj (jeromehaxhiaj-qti)
requested a review
from Mark Burton (markfoodyburton)
September 1, 2026 13:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The GL switch path invokes the window-create callback and then immediately creates the SDL GL context, initializes the QEMU GL shader, and creates the surface texture. The macOS display bridge previously used fork_on_systemc(), so the callback could return before the SystemC thread had created the native SDL window. This allowed GL setup and the first framebuffer update to race with window creation and could leave an invalid display state or crash during GL refresh.
After simulation starts, release QEMU's I/O-thread lock while synchronously running the window-create operation on the SystemC thread, then reacquire the lock before returning to the GL switch path. This preserves the required macOS main-thread affinity while guaranteeing that the window exists before context and texture creation continue.
During elaboration, retain the non-blocking behavior to avoid waiting for a SystemC job before the simulation kernel is running.