diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sna/sna_accel.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index b3fc05ba..e8997602 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -508,9 +508,14 @@ sna_pixmap_create_scratch(ScreenPtr screen, sna->freed_pixmap = NULL; pixmap->usage_hint = CREATE_PIXMAP_USAGE_SCRATCH; - pixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER; pixmap->refcnt = 1; + pixmap->drawable.width = width; + pixmap->drawable.height = height; + pixmap->drawable.depth = depth; + pixmap->drawable.bitsPerPixel = bpp; + pixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER; + priv = _sna_pixmap_reset(pixmap); } else { pixmap = create_pixmap(sna, screen, 0, 0, depth, @@ -518,6 +523,11 @@ sna_pixmap_create_scratch(ScreenPtr screen, if (pixmap == NullPixmap) return NullPixmap; + pixmap->drawable.width = width; + pixmap->drawable.height = height; + pixmap->drawable.depth = depth; + pixmap->drawable.bitsPerPixel = bpp; + priv = _sna_pixmap_attach(sna, pixmap); if (!priv) { fbDestroyPixmap(pixmap); @@ -525,6 +535,9 @@ sna_pixmap_create_scratch(ScreenPtr screen, } } + pixmap->devKind = PixmapBytePad(width, depth); + pixmap->devPrivate.ptr = NULL; + priv->gpu_bo = kgem_create_2d(&sna->kgem, width, height, bpp, tiling, 0); @@ -537,12 +550,6 @@ sna_pixmap_create_scratch(ScreenPtr screen, priv->header = true; sna_damage_all(&priv->gpu_damage, width, height); - pixmap->drawable.width = width; - pixmap->drawable.height = height; - pixmap->drawable.depth = depth; - pixmap->drawable.bitsPerPixel = bpp; - pixmap->devKind = PixmapBytePad(width, depth); - pixmap->devPrivate.ptr = NULL; return pixmap; } |