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