Bug 37417

Summary: No Alpha Channel for all XPixmaps with KWin+GLES
Product: Mesa Reporter: Martin Flöser <mgraesslin>
Component: Drivers/Gallium/r600Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED MOVED QA Contact:
Severity: normal    
Priority: medium    
Version: 7.10   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: ARGB window without alpha channel

Description Martin Flöser 2011-05-20 11:36:05 UTC
Created attachment 46961 [details]
ARGB window without alpha channel

After updating mesa on Debian Testing to package version 7.10.2-2 everything mapped from a XPixmap lost the Alpha Channel. ARGB windows are no longer translucent (screenshot attached) as well everything else mapped from an XPixmap. This only affects OpenGL ES/EGL build of KWin, building against desktop GL/GLX does not show the symptoms.

Debug output of KWin with GLES:

OpenGL vendor string:                   X.Org
OpenGL renderer string:                 Gallium 0.4 on AMD RV710
OpenGL version string:                  OpenGL ES 2.0 Mesa 7.10.2
OpenGL shading language version string: OpenGL ES GLSL ES 1.0.16
Driver:                                 R600G
GPU class:                              R700
OpenGL version:                         2.0
GLSL version:                           1.0.16
Mesa version:                           7.10.2
X server version:                       1.10.1
Linux kernel version:                   2.6.38
Direct rendering:                       yes
Requires strict binding:                yes
GLSL shaders:                           yes
Texture NPOT support:                   yes

Debug output of KWin with GLX:

OpenGL vendor string:                   Advanced Micro Devices, Inc.
OpenGL renderer string:                 Mesa DRI R600 (RV710 954F) 20090101  TCL DRI2
OpenGL version string:                  2.1 Mesa 7.10.2
OpenGL shading language version string: 1.20
Driver:                                 R600C
GPU class:                              R700
OpenGL version:                         2.1
GLSL version:                           1.20
Mesa version:                           7.10.2
X server version:                       1.10.1
Linux kernel version:                   2.6.38
Direct rendering:                       yes
Requires strict binding:                no
GLSL shaders:                           yes
Texture NPOT support:                   yes


This worked fine until update of the package. KWin has not changed (recent master, build from today).

If you need any help to investigate, please ask. We want to push the GLES build of KWin with our upcoming release (beta 1 next week).
Comment 1 Martin Flöser 2011-06-04 01:04:43 UTC
FYI: the problem is not present when using Mesa 7.11 as of fc48de4fabcf3a42a1cd7d447790afefc7d27af8 from May 26th
Comment 2 Benjamin Franzke 2011-06-13 16:04:26 UTC
First, some more information would have been useful, as its not clear which egl driver you're using.
Therefore its better to use EGL_LOG_LEVEL=debug than some selfmade debug output.

As you're using the r600 gallium driver (for the non-working case) and egl_gallium is the default egldriver, i assume you are using that.
If so, please apply af767ee1133058bb24e2183e8bf2846424c96ee0 and 0364c08d7f219ef3a250a4fd8396aacfdddf0368 from git master.

If that doesnt work, just bisect.

btw: For egl its good to test an alternative egl driver, and see if that works.
That would be EGL_DRIVER=egl_dri2.
Comment 3 Martin Flöser 2011-06-16 13:13:27 UTC
I just recompiled KWin against the mesa shipped by debian testing and the problem is still present. Here the debug output:

libEGL debug: EGL search path is /usr/lib/egl
libEGL debug: added /usr/lib/egl/egl_gallium.so to module array
libEGL debug: added /usr/lib/egl/egl_dri2.so to module array
libEGL debug: added /usr/lib/egl/egl_glx.so to module array
libEGL debug: dlopen(/usr/lib/egl/egl_gallium.so)
libEGL info: use X11 for display 0x9a00c0
libEGL debug: searching for pipe module r600
libEGL debug: loaded /usr/lib/egl/pipe_r600.so
libEGL debug: the best driver is Gallium (score 100)
libEGL debug: searching for st module GLESv2
libEGL debug: loaded /usr/lib/egl/st_GLESv2.so


Testing with egl_dri2 is not possible, I get the following error message:

libEGL debug: dlopen(/usr/lib/egl/egl_dri2.so)
libEGL debug: failed to open ${ORIGIN}/dri/r600_dri.so: ${ORIGIN}/dri/r600_dri.so: cannot open shared object file: No such file or directory

libEGL warning: DRI2: failed to open any driver (search paths ${ORIGIN}/dri)


Further testing, like adding patches and bisecting, I will not be able to do before I have time for it (maybe at the weekend), but as it is a driver from distribution packages I cannot apply the patches on what I have here. I would have to switch to self compiled mesa. And as already said, I am not able to reproduce with 7.11, so I don't know whether I will be able to reproduce on 7.10 branch when self-compile.
Comment 4 Michel Dänzer 2011-06-17 01:40:53 UTC
(In reply to comment #3)
> libEGL debug: failed to open ${ORIGIN}/dri/r600_dri.so:
> ${ORIGIN}/dri/r600_dri.so: cannot open shared object file: No such file or
> directory

FWIW, you should be able to work around this, e.g. with the environment variable LIBGL_DRIVERS_PATH=/usr/lib/dri .
Comment 5 Martin Flöser 2011-06-17 12:09:30 UTC
Thanks for the hint with the driver path. I just tried with the egl_dri2 driver and there the issue is *not* present.

Here the debug output:

libEGL debug: EGL search path is /usr/lib/egl
libEGL debug: added /usr/lib/egl/egl_dri2.so to module array
libEGL debug: added /usr/lib/egl/egl_gallium.so to module array
libEGL debug: added /usr/lib/egl/egl_glx.so to module array
libEGL debug: dlopen(/usr/lib/egl/egl_dri2.so)
libEGL debug: DRI2: dlopen(/usr/lib/dri/r600_dri.so)
libEGL debug: DRI2: found extension `DRI_Core'
libEGL info: DRI2: found extension DRI_Core version 1
libEGL debug: DRI2: found extension `DRI_Legacy'
libEGL debug: DRI2: found extension `DRI_DRI2'
libEGL info: DRI2: found extension DRI_DRI2 version 2
libEGL debug: DRI2: found extension `DRI_ReadDrawable'
libEGL debug: DRI2: found extension `DRI_CopySubBuffer'
libEGL debug: DRI2: found extension `DRI_SwapControl'
libEGL debug: DRI2: found extension `DRI_MediaStreamCounter'
libEGL debug: DRI2: found extension `DRI_TexBuffer'
libEGL info: DRI2: found extension DRI_TexBuffer version 2
libEGL debug: DRI2: found extension `DRI2_Flush'
libEGL info: DRI2: found extension DRI2_Flush version 3
libEGL debug: DRI2: found extension `DRI_IMAGE'
libEGL info: DRI2: found extension DRI_IMAGE version 1
libEGL debug: DRI2: found extension `DRI_CONFIG_QUERY'
libEGL debug: the best driver is DRI2 (score 100)
libEGL debug: DRI2: dlopen(/usr/lib/dri/r600_dri.so)
libEGL debug: DRI2: found extension `DRI_Core'
libEGL info: DRI2: found extension DRI_Core version 1
libEGL debug: DRI2: found extension `DRI_Legacy'
libEGL debug: DRI2: found extension `DRI_DRI2'
libEGL info: DRI2: found extension DRI_DRI2 version 2
libEGL debug: DRI2: found extension `DRI_ReadDrawable'
libEGL debug: DRI2: found extension `DRI_CopySubBuffer'
libEGL debug: DRI2: found extension `DRI_SwapControl'
libEGL debug: DRI2: found extension `DRI_MediaStreamCounter'
libEGL debug: DRI2: found extension `DRI_TexBuffer'
libEGL info: DRI2: found extension DRI_TexBuffer version 2
libEGL debug: DRI2: found extension `DRI2_Flush'
libEGL info: DRI2: found extension DRI2_Flush version 3
libEGL debug: DRI2: found extension `DRI_IMAGE'
libEGL info: DRI2: found extension DRI_IMAGE version 1
libEGL debug: DRI2: found extension `DRI_CONFIG_QUERY'
libEGL debug: the best driver is DRI2 (score 100)
Comment 6 Martin Flöser 2011-06-18 00:59:31 UTC
(In reply to comment #1)
> FYI: the problem is not present when using Mesa 7.11 as of
> fc48de4fabcf3a42a1cd7d447790afefc7d27af8 from May 26th
I have to correct myself. I just noticed that I had gallium disabled in my master build.

With master (as of 2fe39b46) and egl gallium driver the same problem occurs. With egl_dri2 the problem does not occur.

I will try to bisect.
Comment 7 Martin Flöser 2011-06-18 02:14:18 UTC
I am not able to find a clean revision - I went back as far as revisions from January, which just let KWin crash.

Is there anything else I can do to help you investigate the issue?
Comment 8 Fredrik Höglund 2011-06-22 11:28:43 UTC
Make sure you run "make realclean" when the glapi files have changed.
Comment 9 GitLab Migration User 2019-09-18 18:58:29 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/396.

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.