Summary: | New Mesa master now results in warnings in glrender (and subsurfaces and simple-egl), black screen | ||
---|---|---|---|
Product: | Wayland | Reporter: | n3rdopolis <bluescreen_avenger> |
Component: | weston | Assignee: | Wayland bug list <wayland-bugs> |
Status: | RESOLVED NOTOURBUG | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | emil.l.velikov |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
n3rdopolis
2016-09-12 03:58:35 UTC
Yes, it does. You have to stick to an older Mesa until we fix it in Weston by starting to use libepoxy I believe. But I also heard someone say libepoxy does not build without X11 yet (I have not confirmed), so that would need fixing too. The reason is, that Khronos decided to stop declaring any OpenGL ES 2 core functions unless GL_GLEXT_PROTOTYPES is defined. IMO that is wrong on multiple levels: "GLEXT" refers to extension functions, not core functions; it breaks existing applications just like in this bug report. Traditionally using GL_GLEXT_PROTOTYPES means "I do not care about the portability of my program between different GL implementations." Therefore we should not simply use it and it will expose far too much. My own speculation is, based on what GL_GLEXT_PROTOTYPES used to mean, is that libGLESv2.so will at some point actually stop exporting any GL ES 2.0 core functions. This will break all existing application binaries. It is probably all part of an attempt to fix the issue that different (GL ES) implementations export different sets of functions. Khronos' decision is one that makes everyone equally unhappy, so at least it's not favouring anyone. In the end, we need to start getting also the GL ES core functions via eglGetProcAddress(). This is probably easiest to do by relying on libepoxy (Xwayland/glamor already requires it, and I hear recent GTK+ 3.x too). It will only work when EGL_KHR_get_all_proc_addresses extension is supported, so one needs a fallback to dlsym(). It's not too complicated, but very unfruitful to write and maintain ourselves, hence libepoxy. If you are too bored, there is a related discussion that gives some background here: https://lists.freedesktop.org/archives/mesa-dev/2016-June/120763.html Obviously Khronos went its own way, already in March 2015 I hear. I also hear there are bug reports open at Khronos, so let's see if things change again. Until this issue has been resolved, you can use the following patch: https://lists.freedesktop.org/archives/wayland-devel/2016-September/031027.html Make sure you install libepoxy first. https://github.com/anholt/libepoxy Should be fixed in mesa with commit 63faf7de619be093c883318e90b5e317b9cb0eb1 Author: Emil Velikov <emil.velikov@collabora.com> Date: Mon Sep 12 13:26:40 2016 +0100 Remove GL_GLEXT_PROTOTYPES guards from non-ext headers. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.