• Home
  • Raw
  • Download

Lines Matching +full:fetch +full:- +full:depth

3  * Copyright © 2018-2019 Google, Inc.
4 * SPDX-License-Identifier: MIT
21 layout->width0 = width0; in fdl5_layout()
22 layout->height0 = height0; in fdl5_layout()
23 layout->depth0 = depth0; in fdl5_layout()
25 layout->cpp = util_format_get_blocksize(format); in fdl5_layout()
26 layout->cpp *= nr_samples; in fdl5_layout()
27 layout->cpp_shift = ffs(layout->cpp) - 1; in fdl5_layout()
29 layout->format = format; in fdl5_layout()
30 layout->nr_samples = nr_samples; in fdl5_layout()
31 layout->layer_first = !is_3d; in fdl5_layout()
33 uint32_t heightalign = layout->cpp == 1 ? 32 : 16; in fdl5_layout()
37 uint32_t layers_in_level = layout->layer_first ? 1 : array_size; in fdl5_layout()
40 if (layout->cpp < 4 && layout->tile_mode) in fdl5_layout()
46 uint32_t depth = u_minify(depth0, level); in fdl5_layout() local
47 struct fdl_slice *slice = &layout->slices[level]; in fdl5_layout()
56 /* The blits used for mem<->gmem work at a granularity of in fdl5_layout()
57 * 32x32, which can cause faults due to over-fetch on the in fdl5_layout()
58 * last level. The simple solution is to over-allocate a in fdl5_layout()
59 * bit the last level to ensure any over-fetch is harmless. in fdl5_layout()
63 if (level == mip_levels - 1) in fdl5_layout()
67 slice->offset = layout->size; in fdl5_layout()
71 * sizes for high levels, but the hw auto-sizer is buggy (or at least in fdl5_layout()
76 if (level <= 1 || layout->slices[level - 1].size0 > 0xf000) { in fdl5_layout()
77 slice->size0 = align(nblocksy * pitch, 4096); in fdl5_layout()
79 slice->size0 = layout->slices[level - 1].size0; in fdl5_layout()
82 slice->size0 = nblocksy * pitch; in fdl5_layout()
85 layout->size += slice->size0 * depth * layers_in_level; in fdl5_layout()
88 if (layout->layer_first) { in fdl5_layout()
89 layout->layer_size = align64(layout->size, 4096); in fdl5_layout()
90 layout->size = layout->layer_size * array_size; in fdl5_layout()