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
Fix EGL bugs #5730
Fix EGL bugs #5730
Conversation
The current state of this PR passes our current buildbot testing, however there are still issues with EGL on the opengl JIT tests (which are not tested on CI). Set
Where 36054 is
|
Turns out that OpenGL ES does not allow for 3-channel framebuffers for floating point; only 1, 2, and 4 are allowed (and even then only with an appropriate extension). In plain OpenGL, it automatically converts 3-channel to 4-channel behind the scenes. Rather than introduce our own conversions, I'm just adding a clearer error message when OpenGL ES is active (EGL prefers GLES) and skipping the tests that use 3-channel float buffers. In 3.2 the extension is standardized, but still without 3-channel support. See Table 8.10 (page 163, 181 in the PDF) here: https://www.khronos.org/registry/OpenGL/specs/es/3.2/es_spec_3.2.pdf |
I'm trying to fix the outstanding EGL bugs on the buildbots before releasing v11. But when trying to repro locally, I ran into a new set of bugs!
USE_RUNTIME
is broken because theegl
backend has to match across all runtime targets. So I added that to thematching_features
list in Target.cpp__attribute__((destructor))
functions. This causes the EGL device-release to call a function in an unmapped page and segfault. I tried re-querying the location of one of the symbols, but it's apparently cached so the best I could do was explicitly release the device before main exits in the GLSL app.