Comment 24 for bug 1515539

Revision history for this message
In , Psychonaut (psychonaut) wrote :

(In reply to Orion Poplawski from comment #16)
> Any progress here? Anything that can be done to help? This machine is
> becoming pretty unusable.

If you follow the link to the openSUSE bug from my original report, you'll find that two workarounds have been suggested (one from Stefan Dirsch in Comment #5 and one from Egbert Eich in Comment #7). The first one seems to have worked for me; the second one I haven't tested.

I reproduce Egbert Eich's comment here, as it contains technical information which may be of use to the Intel driver developers:

> I've chased this issue on Intel Ilk for weeks. This is the same gen
> as you have used for the log you posted on fd.o. I don't know which
> other GPUs you have used.
>
> I've been able to trace this to the 2D textures COGL uses to store
> glyphs and icons in (as sub-textures) called 'atlases': when a new
> object needs to be cached, COGLS tries to find room in the current
> atlas. If there is no room it tries to resize the atlas. If the
> maximum size of the texture is reached it creates a new 'atlas'.
>
> What I found was, that once the texture size exceeded 4kx4k (the
> i965_dri.so driver announces a max texture level of 14 - ie. a size
> of 8kx8k) the content got corrupted, ie some elemends got lost during
> copying. However, what I also found was that this depended on the
> blit mode used for atlases: the blit modes can be specified with the
> environment variable COGL_ATLAS_DEFAULT_BLIT_MODE - available
> settings are: 'texture-render'. 'framebuffer', 'copy-tex-sub-image',
> 'get-tex-data'. 'texture-render' is the default. Specifying any of
> the others made the issue go away for me.
>
> I've never gotten around to dump the opengl state and shaders used in
> this mode to generate a simple test case which would have allowed to
> debug the intel driver.
>
> The workaround I suggested to our customer was to set the environment
> variable:
>
> COGL_ATLAS_DEFAULT_BLIT_MODE=framebuffer
>
> in /etc/environment. This made things work for him
>
> You may want to give this a try as well.
>
> Please let me know if it does the job.