On 02/11/2015 09:53 AM, Tom Stellard wrote: > Using GBM_FORMAT_ABGR8888 was causing the B and G components to > be swapped for some piglit tests. > --- > > I have no idea if this fix is correct, but based on an IRC discussion: > http://people.freedesktop.org/~cbrill/dri-log/?channel=dri-devel&date=2015-02-05 > > Using the wrong format here is the reason that B and G outputs were swapped. > I'm not sure what format we should be using instead.
This might fix the bug you're facing, but it continues the mistake that
caused the bug in the first place: Waffle is guessing, and guessing badly,
which GBM_FORMAT is backing the EGLConfig.
I think the correct fix is to eliminate the guessing. Rewriting
wgbm_config_get_gbm_format() to look like this should do the trick:
uint32_t
wgbm_config_get_gbm_format(struct wegl_config *wegl_config)
{
EGLint gbm_format;
...
ok = plat->eglGetConfigAttrib(..., EGL_NATIVE_VISUAL_ID, &gbm_format);
if (!ok) {
// emit error
return 0;
}
return gbm_format;
}
Waffle's X11/EGL backend does something very similar when creating during window
creation. See
[https://github.com/waffle-gl/waffle/blob/master/src/waffle/xegl/xegl_window.c#L79]
>
> src/waffle/gbm/wgbm_config.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/src/waffle/gbm/wgbm_config.c b/src/waffle/gbm/wgbm_config.c
> index 480c2bf..5229210 100644
> --- a/src/waffle/gbm/wgbm_config.c
> +++ b/src/waffle/gbm/wgbm_config.c
> @@ -50,10 +50,8 @@ wgbm_config_get_gbm_format(const struct wcore_config_attrs
> *attrs)
> return 0;
> }
>
> - if (attrs->alpha_size <= 0)
> + if (attrs->alpha_size <= 8)
> return GBM_FORMAT_XRGB8888;
> - else if (attrs->alpha_size <= 8)
> - return GBM_FORMAT_ABGR8888;
>
> return 0;
> }
signature.asc
Description: OpenPGP digital signature
_______________________________________________ waffle mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/waffle

