1 /*
2 * Copyright © 2018 Rob Clark <[email protected]>
3 * Copyright © 2018 Google, Inc.
4 * SPDX-License-Identifier: MIT
5 *
6 * Authors:
7 * Rob Clark <[email protected]>
8 */
9
10 #include <inttypes.h>
11 #include <stdio.h>
12
13 #include "freedreno_layout.h"
14
15 void
fdl_layout_buffer(struct fdl_layout * layout,uint32_t size)16 fdl_layout_buffer(struct fdl_layout *layout, uint32_t size)
17 {
18 layout->width0 = size;
19 layout->height0 = 1;
20 layout->depth0 = 1;
21 layout->cpp = 1;
22 layout->cpp_shift = 0;
23 layout->size = size;
24 layout->format = PIPE_FORMAT_R8_UINT;
25 layout->nr_samples = 1;
26 }
27
28 const char *
fdl_tile_mode_desc(const struct fdl_layout * layout,int level)29 fdl_tile_mode_desc(const struct fdl_layout *layout, int level)
30 {
31 if (fdl_ubwc_enabled(layout, level))
32 return "UBWC";
33 else if (fdl_tile_mode(layout, level) == 0) /* TILE6_LINEAR and friends */
34 return "linear";
35 else
36 return "tiled";
37 }
38
39 void
fdl_dump_layout(struct fdl_layout * layout)40 fdl_dump_layout(struct fdl_layout *layout)
41 {
42 for (uint32_t level = 0;
43 level < ARRAY_SIZE(layout->slices) && layout->slices[level].size0;
44 level++) {
45 struct fdl_slice *slice = &layout->slices[level];
46 struct fdl_slice *ubwc_slice = &layout->ubwc_slices[level];
47
48 fprintf(
49 stderr,
50 "%s: %ux%ux%u@%ux%u:\t%2u: stride=%4u, size=%6u,%6u, "
51 "aligned_height=%3u, offset=0x%x,0x%x, layersz %5" PRIu64 ",%5" PRIu64 " %s\n",
52 util_format_name(layout->format), u_minify(layout->width0, level),
53 u_minify(layout->height0, level), u_minify(layout->depth0, level),
54 layout->cpp, layout->nr_samples, level, fdl_pitch(layout, level),
55 slice->size0, ubwc_slice->size0,
56 slice->size0 / fdl_pitch(layout, level), slice->offset,
57 ubwc_slice->offset, layout->layer_size, layout->ubwc_layer_size,
58 fdl_tile_mode_desc(layout, level));
59 }
60 }
61