dri/nouveau: Initialize tile_flags when allocating a render target.
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 9 Oct 2010 21:26:34 +0000 (23:26 +0200)
committerFrancisco Jerez <currojerez@riseup.net>
Tue, 12 Oct 2010 02:12:56 +0000 (04:12 +0200)
src/mesa/drivers/dri/nouveau/nouveau_surface.c
src/mesa/drivers/dri/nouveau/nv10_state_fb.c

index 33393970a07957ef47795f6223ada086f21f1dc8..b6b5c641c043610a613656219fbf92442e63112d 100644 (file)
@@ -34,8 +34,8 @@ nouveau_surface_alloc(GLcontext *ctx, struct nouveau_surface *s,
                      unsigned flags, unsigned format,
                      unsigned width, unsigned height)
 {
-       unsigned tile_mode, cpp = _mesa_get_format_bytes(format);
-       int ret;
+       unsigned tile_mode = 0, tile_flags = 0;
+       int ret, cpp = _mesa_get_format_bytes(format);
 
        nouveau_bo_ref(NULL, &s->bo);
 
@@ -51,13 +51,21 @@ nouveau_surface_alloc(GLcontext *ctx, struct nouveau_surface *s,
        if (layout == TILED) {
                s->pitch = align(s->pitch, 256);
                tile_mode = s->pitch;
+
+               if (cpp == 4)
+                       tile_flags = NOUVEAU_BO_TILE_32BPP;
+               else if (cpp == 2)
+                       tile_flags = NOUVEAU_BO_TILE_16BPP;
+
+               if (_mesa_get_format_bits(format, GL_DEPTH_BITS))
+                       tile_flags |= NOUVEAU_BO_TILE_ZETA;
+
        } else {
                s->pitch = align(s->pitch, 64);
-               tile_mode = 0;
        }
 
        ret = nouveau_bo_new_tile(context_dev(ctx), flags, 0, s->pitch * height,
-                                 tile_mode, 0, &s->bo);
+                                 tile_mode, tile_flags, &s->bo);
        assert(!ret);
 }
 
index f9f3ebaa8d0a1c42e15259ee24bbc0e394855884..81edbe8172d690e20a4f7ec67d44210b00d6165c 100644 (file)
@@ -64,8 +64,8 @@ setup_lma_buffer(GLcontext *ctx)
 
        if (!nfb->hierz.bo || nfb->hierz.bo->size != size) {
                nouveau_bo_ref(NULL, &nfb->hierz.bo);
-               nouveau_bo_new(context_dev(ctx), NOUVEAU_BO_VRAM, 0, size,
-                              &nfb->hierz.bo);
+               nouveau_bo_new_tile(context_dev(ctx), NOUVEAU_BO_VRAM, 0, size,
+                                   0, NOUVEAU_BO_TILE_ZETA, &nfb->hierz.bo);
        }
 
        nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET,