[Mesa-dev] [PATCH] egl_dri2: Allow both 24 and 32 bit X visuals for RGBA configs

Marek Olšák maraeo at gmail.com
Thu Nov 6 10:28:52 PST 2014


If there's no feedback for so long, I suggest you commit the patch
without review. If it fixes a bug, that's one more reason to commit
it.

Marek

On Thu, Nov 6, 2014 at 2:12 PM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> Humble ping x2
>
> On 14/10/14 15:25, Emil Velikov wrote:
>> Humble ping.
>>
>> On 23/09/14 01:25, Emil Velikov wrote:
>>> From: Sjoerd Simons <sjoerd.simons at collabora.co.uk>
>>>
>>> When using RGBA EGLConfigs allow both RGB and RGBA X visuals, such that
>>> application can decide whether they want to use RGBA (and have the
>>> compositor blend their windows).
>>>
>>> On my system with this change EGLConfigs with a 24 bit visual comes up
>>> first, as such applications blindly picking the first EGLConfig will
>>> still get an RGB X visual.
>>>
>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67676
>>> ---
>>>
>>> Hello gents,
>>>
>>> This patch has been stuck in bugzilla since February this year. Bringing
>>> it around here to gather greater exposure and perhaps some
>>> comments/reviews.
>>>
>>> -Emil
>>>
>>>  src/egl/drivers/dri2/egl_dri2.c     |  5 +++++
>>>  src/egl/drivers/dri2/platform_x11.c | 17 +++++++++--------
>>>  2 files changed, 14 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
>>> index 20a7243..2ed90a7 100644
>>> --- a/src/egl/drivers/dri2/egl_dri2.c
>>> +++ b/src/egl/drivers/dri2/egl_dri2.c
>>> @@ -110,6 +110,11 @@ EGLint dri2_to_egl_attribute_map[] = {
>>>  static EGLBoolean
>>>  dri2_match_config(const _EGLConfig *conf, const _EGLConfig *criteria)
>>>  {
>>> +
>>> +   if (criteria->NativeVisualID != EGL_DONT_CARE &&
>>> +        conf->NativeVisualID != criteria->NativeVisualID)
>>> +      return EGL_FALSE;
>>> +
>>>     if (_eglCompareConfigs(conf, criteria, NULL, EGL_FALSE) != 0)
>>>        return EGL_FALSE;
>>>
>>> diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c
>>> index a7a7338..3395fb7 100644
>>> --- a/src/egl/drivers/dri2/platform_x11.c
>>> +++ b/src/egl/drivers/dri2/platform_x11.c
>>> @@ -672,14 +672,15 @@ dri2_x11_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy,
>>>          dri2_add_config(disp, dri2_dpy->driver_configs[j], id++,
>>>                          surface_type, config_attrs, rgba_masks);
>>>
>>> -            /* Allow a 24-bit RGB visual to match a 32-bit RGBA EGLConfig.
>>> -             * Otherwise it will only match a 32-bit RGBA visual.  On a
>>> -             * composited window manager on X11, this will make all of the
>>> -             * EGLConfigs with destination alpha get blended by the
>>> -             * compositor.  This is probably not what the application
>>> -             * wants... especially on drivers that only have 32-bit RGBA
>>> -             * EGLConfigs! */
>>> -            if (d.data->depth == 24) {
>>> +            /* Allow both 24-bit RGB visual and 32 bit RGBA to match a 32-bit
>>> +             * RGBA EGLConfig.  Otherwise it will only match a 32-bit RGBA
>>> +             * visual.  On a composited window manager on X11, this will make
>>> +             * all of the EGLConfigs with destination alpha get blended by the
>>> +             * compositor.  This is probably not what the application wants...
>>> +             * especially on drivers that only have 32-bit RGBA EGLConfigs!
>>> +             * Allowing both allows applications to make the decision whether
>>> +             * 32 bit visuals are intended */
>>> +            if (d.data->depth == 24 || d.data->depth == 32) {
>>>                 rgba_masks[3] =
>>>                    ~(rgba_masks[0] | rgba_masks[1] | rgba_masks[2]);
>>>                 dri2_add_config(disp, dri2_dpy->driver_configs[j], id++,
>>>
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list