1 /*
2 * Copyright © 2018 Rob Clark <robclark@freedesktop.org>
3 * SPDX-License-Identifier: MIT
4 *
5 * Authors:
6 * Rob Clark <robclark@freedesktop.org>
7 */
8
9 #include "fd5_resource.h"
10
11 static void
setup_lrz(struct fd_resource * rsc)12 setup_lrz(struct fd_resource *rsc)
13 {
14 struct fd_screen *screen = fd_screen(rsc->b.b.screen);
15 fdl5_lrz_layout_init(&rsc->lrz_layout, rsc->b.b.width0, rsc->b.b.height0,
16 rsc->b.b.nr_samples);
17 rsc->lrz = fd_bo_new(screen->dev, rsc->lrz_layout.lrz_total_size,
18 FD_BO_NOMAP, "lrz");
19 }
20
21 uint32_t
fd5_setup_slices(struct fd_resource * rsc)22 fd5_setup_slices(struct fd_resource *rsc)
23 {
24 struct pipe_resource *prsc = &rsc->b.b;
25
26 if (FD_DBG(LRZ) && has_depth(prsc->format) && !is_z32(prsc->format))
27 setup_lrz(rsc);
28
29 fdl5_layout(&rsc->layout, prsc->format, fd_resource_nr_samples(prsc),
30 prsc->width0, prsc->height0, prsc->depth0, prsc->last_level + 1,
31 prsc->array_size, prsc->target == PIPE_TEXTURE_3D);
32
33 return rsc->layout.size;
34 }
35