glamor regression caused by 9c679d06 (Re: xserver: Branch 'master' - 5 commits)

Michel Dänzer michel at daenzer.net
Tue Jun 30 03:01:42 PDT 2015


On 30.06.2015 13:02, Keith Packard wrote:
> 
> commit 9c679d06055cc62aa9209318705e87dc33fba4c8
> Author: Eric Anholt <eric at anholt.net>
> Date:   Sun May 31 16:07:01 2015 -0700
> 
>     glamor: Skip actual FBO setup in our glyph atlas.
>     
>     VC4 (and many GLES2 renderers) can't render to GL_ALPHA, so our pixmap
>     would end up as GLAMOR_MEMORY and our dereference of the FBO would
>     setfault.  Instead, tell the pixmap creation that we don't need an FBO
>     at all.  Our glyph upload path was already glTexImage for non-a1, and
>     a more general software fallback for a1 (since the glyph is also in
>     system memory).
>     
>     Signed-off-by: Eric Anholt <eric at anholt.net>
>     Reviewed-by: Keith Packard <keithp at keithp.com>
> 
> diff --git a/glamor/glamor_composite_glyphs.c b/glamor/glamor_composite_glyphs.c
> index 47bf647..c30cbed 100644
> --- a/glamor/glamor_composite_glyphs.c
> +++ b/glamor/glamor_composite_glyphs.c
> @@ -112,7 +112,8 @@ glamor_glyph_atlas_init(ScreenPtr screen, struct glamor_glyph_atlas *atlas)
>      PictFormatPtr               format = atlas->format;
>  
>      atlas->atlas = glamor_create_pixmap(screen, glamor_priv->glyph_atlas_dim,
> -                                        glamor_priv->glyph_atlas_dim, format->depth, 0);
> +                                        glamor_priv->glyph_atlas_dim, format->depth,
> +                                        GLAMOR_CREATE_FBO_NO_FBO);
>      atlas->x = 0;
>      atlas->y = 0;
>      atlas->row_height = 0;

This change broke text rendering of GTK+2 apps (at least
iceweasel/Firefox, icedove/Thunderbird and the Xfce panel) for me with
the radeon driver. Most of the text disappears (some of it only "after a
while").

Looking at the glamor code, it doesn't seem to be as simple as setting
GLAMOR_CREATE_FBO_NO_FBO and not getting an FBO. E.g.
glamor_glyphs_flush() uses glamor_pixmap_fbo_at() to get the atlas
texture identifier.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the xorg-devel mailing list