glamor regression caused by 9c679d06 (Re: xserver: Branch 'master' - 5 commits)
Michel Dänzer
michel at daenzer.net
Wed Jul 1 03:10:23 PDT 2015
On 01.07.2015 07:09, Eric Anholt wrote:
> Michel Dänzer <michel at daenzer.net> writes:
>
>> 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.
>
> You still get the glamor_pixmap_fbo struct, with the ->tex field. It's
> just that the fbo->fb isn't created. Yeah, naming in glamor is
> terrible.
>
> I've been poking around trying to find anything wrong with this change,
> and haven't come up with anything (though I've come up with a giant pile
> of other cleanups). I also haven't managed to reproduce anything on my
> Intel development system, including scrolling around in gtkterm and
> resizing my webpages to try to blow out the glyph cache.
On this machine, logging into an Xfce session, starting iceweasel and
opening a random website seems pretty reliable for reproducing it. Text
quickly starts disappearing all over the place in iceweasel and in the
Xfce panel.
On another machine, I haven't been able to reproduce it yet either.
However, I've seen another radeon user on IRC mention it, so it doesn't
seem to be just me.
> Can you figure out anything else that might be happening when the
> failure occurs? Atlas replacement seems like the obvious thing.
It doesn't fill up an atlas or even switch between atlases for different
formats inside glamor_composite_glyphs.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the xorg-devel
mailing list