Lines Matching +full:fetch +full:- +full:depth
3 * Copyright © 2018-2019 Google, Inc.
39 layout->width0 = width0; in fdl5_layout()
40 layout->height0 = height0; in fdl5_layout()
41 layout->depth0 = depth0; in fdl5_layout()
43 layout->cpp = util_format_get_blocksize(format); in fdl5_layout()
44 layout->cpp *= nr_samples; in fdl5_layout()
45 layout->cpp_shift = ffs(layout->cpp) - 1; in fdl5_layout()
47 layout->format = format; in fdl5_layout()
48 layout->nr_samples = nr_samples; in fdl5_layout()
49 layout->layer_first = !is_3d; in fdl5_layout()
51 uint32_t heightalign = layout->cpp == 1 ? 32 : 16; in fdl5_layout()
55 uint32_t layers_in_level = layout->layer_first ? 1 : array_size; in fdl5_layout()
58 if (layout->cpp < 4 && layout->tile_mode) in fdl5_layout()
64 uint32_t depth = u_minify(depth0, level); in fdl5_layout() local
65 struct fdl_slice *slice = &layout->slices[level]; in fdl5_layout()
74 /* The blits used for mem<->gmem work at a granularity of in fdl5_layout()
75 * 32x32, which can cause faults due to over-fetch on the in fdl5_layout()
76 * last level. The simple solution is to over-allocate a in fdl5_layout()
77 * bit the last level to ensure any over-fetch is harmless. in fdl5_layout()
81 if (level == mip_levels - 1) in fdl5_layout()
85 slice->offset = layout->size; in fdl5_layout()
89 * sizes for high levels, but the hw auto-sizer is buggy (or at least in fdl5_layout()
94 if (level <= 1 || layout->slices[level - 1].size0 > 0xf000) { in fdl5_layout()
95 slice->size0 = align(nblocksy * pitch, 4096); in fdl5_layout()
97 slice->size0 = layout->slices[level - 1].size0; in fdl5_layout()
100 slice->size0 = nblocksy * pitch; in fdl5_layout()
103 layout->size += slice->size0 * depth * layers_in_level; in fdl5_layout()
106 if (layout->layer_first) { in fdl5_layout()
107 layout->layer_size = align(layout->size, 4096); in fdl5_layout()
108 layout->size = layout->layer_size * array_size; in fdl5_layout()