From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org
Subject: [Bug 109330] New: GL_ALPHA_BITS set to non-zero with
EGL_PLATFORM_GBM_MESA
Date: Sat, 12 Jan 2019 13:59:45 +0000
Message-ID:
Bug ID
109330
Summary
GL_ALPHA_BITS set to non-zero with EGL_PLATFORM_GBM_MESA
Product
Mesa
Version
unspecified
Hardware
Other
OS
All
Status
NEW
Severity
normal
Priority
medium
Component
Drivers/DRI/nouveau
Assignee
nouveau@lists.freedesktop.org
Reporter
contact@emersion.fr
QA Contact
nouveau@lists.freedesktop.org
When creating an EGL context with EGL_PLATFORM_GBM_MESA and EG=
L_ALPHA_SIZE=3D1,
Nouveau produces completely transparent images when using glReadPixels. Note
that my code works with other drivers (i915, amdgpu), only Nouveau is affec=
ted.
How to reproduce:
1. Create an EGL context with these attribs:
static const EGLint config_attribs[] =3D {
EGL_RED_SIZE, 1,
EGL_GREEN_SIZE, 1,
EGL_BLUE_SIZE, 1,
EGL_ALPHA_SIZE, 1,
EGL_NONE,
};
Set platform to EGL_PLATFORM_GBM_MESA and visual to GBM_FORMAT_ARGB8888.
2. Try to get the alpha size:
eglGetConfigAttrib(EGL_ALPHA_SIZE)
glGetIntegerv(GL_ALPHA_BITS)
Both return 8, meaning an alpha channel is present.
3. Try to read pixels with glReadPixels and GL_BGRA_EXT. The resulting image
has an alpha channel which sets the pixels to be completely transparent.
Editing the image with gimp reveals that inverting the alpha channel makes =
the
image correct.
Software is wlroots [1] with grim [2]. To reproduce, compile both, start
rootston, run grim. Let me know if you need more info.
[1]: https://github.com/swayw=
m/wlroots
[2]: https://github.com/emersi=
on/grim