Stale GL_UNPACK state in gl4es and a missing pre-release GPU sync caused diagonal-banded corruption in the 3D view. Synthetic key press/release must track the real controller button or touch down/up edges, not fire together in one call - fixes a typed movement key sticking forever, then a follow-up that had silently broken A-button jump and on-screen keyboard arrow keys. Also adds force-rebuild.sh for the known stageEngine stale-cache issue.
This commit is contained in:
@@ -427,6 +427,15 @@ bool xr_overlay_render_and_build_layer(XrOverlay *overlay, XrCompositionLayerQua
|
||||
overlay->width, 0, GL_COLOR_BUFFER_BIT, GL_LINEAR);
|
||||
real_glBindFramebuffer(GL_READ_FRAMEBUFFER, (GLuint)prevReadFbo);
|
||||
|
||||
// Without this, nothing here waits for the blit to actually finish on
|
||||
// the GPU before xr_swapchain_release() hands the image back to the
|
||||
// compositor - glBlitFramebuffer only queues the copy. A cross-process
|
||||
// consumer reading the image before the driver has finished writing it
|
||||
// is a textbook source of the diagonal-banded/torn corruption seen on
|
||||
// device (see xr_swapchain_acquire()'s counterpart in OpenGL.cc, which
|
||||
// had the same gap).
|
||||
glFinish();
|
||||
|
||||
xr_swapchain_release(overlay->instance, &overlay->swapchain);
|
||||
|
||||
memset(out_quad, 0, sizeof(*out_quad));
|
||||
|
||||
Reference in New Issue
Block a user