Christoph Bumiller
2011-Dec-07 18:23 UTC
[Nouveau] [PATCH] dri2: fix allocation of Z16 depth attachments
--- src/nouveau_dri2.c | 4 +++- src/nv_accel_common.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c index d14443f..b99893f 100644 --- a/src/nouveau_dri2.c +++ b/src/nouveau_dri2.c @@ -46,6 +46,8 @@ nouveau_dri2_create_buffer(DrawablePtr pDraw, unsigned int attachment, ppix->refcnt++; } else { + /* 'format' is just depth */ + unsigned int depth = NOUVEAU_ALIGN(format, 2); unsigned int usage_hint = NOUVEAU_CREATE_PIXMAP_TILED; if (attachment == DRI2BufferDepth || @@ -55,7 +57,7 @@ nouveau_dri2_create_buffer(DrawablePtr pDraw, unsigned int attachment, usage_hint |= NOUVEAU_CREATE_PIXMAP_SCANOUT; ppix = pScreen->CreatePixmap(pScreen, pDraw->width, - pDraw->height, pDraw->depth, + pDraw->height, depth, usage_hint); } diff --git a/src/nv_accel_common.c b/src/nv_accel_common.c index 3219dbe..51cc66a 100644 --- a/src/nv_accel_common.c +++ b/src/nv_accel_common.c @@ -71,7 +71,7 @@ nouveau_allocate_surface(ScrnInfoPtr scrn, int width, int height, int bpp, tile_mode = 0x00; if (usage_hint & NOUVEAU_CREATE_PIXMAP_ZETA) - tile_flags = 0x1100; /* S8Z24 */ + tile_flags = (bpp == 16) ? 0x0100 : 0x1100; /* Z16 : Z24S8 */ else tile_flags = 0xfe00; @@ -90,7 +90,7 @@ nouveau_allocate_surface(ScrnInfoPtr scrn, int width, int height, int bpp, tile_mode = 0; if (usage_hint & NOUVEAU_CREATE_PIXMAP_ZETA) - tile_flags = 0x22800; + tile_flags = (bpp == 16) ? 0x26c00 : 0x22800; else if (usage_hint & NOUVEAU_CREATE_PIXMAP_SCANOUT) tile_flags = (bpp == 16 ? 0x7000 : 0x7a00); else -- 1.7.3.4
Apparently Analagous Threads
- [PATCH 1/2] exa: Pre-G80 tiling support.
- [PATCH 1/2] accel_common: do not initialise the flags twice
- [PATCH xf86-video-nouveau] nv4/exa: tiling is unsupported pre-nv10, reduce alignment requirements
- [Bug 80738] New: Possible wrong variable used in nouveau_allocate_surface
- [PATCH ddx] Add support for VRAM-less devices to the ddx