glamor: Always allocate precisely the requested pixmap size
authorKeith Packard <keithp@keithp.com>
Tue, 8 Apr 2014 08:01:28 +0000 (01:01 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 17 Apr 2014 22:01:26 +0000 (15:01 -0700)
Using a pixmap as a tile or stipple means that we must have the
underlying FBO match the pixmap geometry exactly. We may want to add
some complexity here to migrate pixmaps into exact sized objects as
necessary, but for now, make the server work correctly by skipping
this optimization.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
glamor/glamor_fbo.c

index 4f6da67..d0215be 100644 (file)
@@ -367,10 +367,11 @@ glamor_create_fbo(glamor_screen_private *glamor_priv,
     if (flag == GLAMOR_CREATE_PIXMAP_MAP)
         goto no_tex;
 
-    if (flag == GLAMOR_CREATE_PIXMAP_FIXUP)
-        cache_flag = GLAMOR_CACHE_EXACT_SIZE;
-    else
-        cache_flag = 0;
+    /* Tiling from textures requires exact pixmap sizes. As we don't
+     * know which pixmaps will be used as tiles, just allocate
+     * everything at the requested size
+     */
+    cache_flag = GLAMOR_CACHE_EXACT_SIZE;
 
     fbo = glamor_pixmap_fbo_cache_get(glamor_priv, w, h, format, cache_flag);
     if (fbo)