-
Notifications
You must be signed in to change notification settings - Fork 107
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
mgc::ShmBuffer: Fix texture setup synchronisation #3800
Merged
Merged
Conversation
This file contains 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
`GL_TEXTURE_BINDING_2D` is how you query the current `GL_TEXTURE_2D` 🤦♀️
Because we're on an `EGLContextExecutor` we're probably on a different thread to where the GL state is going to be used, *and* we don't have implicit flushing with `eglMakeCurrent` happening (because the context just stays current on the `EGLContextExecutor`. If the GL implementation has per-thread execution queues (for example, amdgpu by default), this might mean that the texture setup commands aren't visible to command stream that's actually using the texture. Explicitly `glFlush()` after our texture setup, to ensure these commands are visible to any `EGLContext` that might need them.
Fixes the bug but...
|
Looks like MockGL is missing glFlush |
AlanGriffiths
approved these changes
Mar 6, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes more sense than my hack
Saviq
pushed a commit
that referenced
this pull request
Mar 6, 2025
Because we're on an `EGLContextExecutor` we're probably on a different thread to where the GL state is going to be used, *and* we don't have implicit flushing with `eglMakeCurrent` happening (because the context just stays current on the `EGLContextExecutor`. If the GL implementation has per-thread execution queues (for example, amdgpu by default), this might mean that the texture setup commands aren't visible to command stream that's actually using the texture. Explicitly `glFlush()` after our texture setup, to ensure these commands are visible to any `EGLContext` that might need them. Closes: #3792
Saviq
pushed a commit
that referenced
this pull request
Mar 6, 2025
Because we're on an `EGLContextExecutor` we're probably on a different thread to where the GL state is going to be used, *and* we don't have implicit flushing with `eglMakeCurrent` happening (because the context just stays current on the `EGLContextExecutor`. If the GL implementation has per-thread execution queues (for example, amdgpu by default), this might mean that the texture setup commands aren't visible to command stream that's actually using the texture. Explicitly `glFlush()` after our texture setup, to ensure these commands are visible to any `EGLContext` that might need them. Closes: #3792
Saviq
pushed a commit
that referenced
this pull request
Mar 6, 2025
Because we're on an `EGLContextExecutor` we're probably on a different thread to where the GL state is going to be used, *and* we don't have implicit flushing with `eglMakeCurrent` happening (because the context just stays current on the `EGLContextExecutor`. If the GL implementation has per-thread execution queues (for example, amdgpu by default), this might mean that the texture setup commands aren't visible to command stream that's actually using the texture. Explicitly `glFlush()` after our texture setup, to ensure these commands are visible to any `EGLContext` that might need them. Closes: #3792
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.
Because we're on an
EGLContextExecutor
we're probably on a differentthread to where the GL state is going to be used, and we don't
have implicit flushing with
eglMakeCurrent
happening (becausethe context just stays current on the
EGLContextExecutor
.If the GL implementation has per-thread execution queues (for example,
amdgpu by default), this might mean that the texture setup commands
aren't visible to command stream that's actually using the
texture.
Explicitly
glFlush()
after our texture setup, to ensurethese commands are visible to any
EGLContext
that mightneed them.
Closes: #3792