Lines Matching refs:layout
33 is_r8g8(struct fdl_layout *layout) in is_r8g8() argument
35 return layout->cpp == 2 && in is_r8g8()
36 util_format_get_nr_components(layout->format) == 2; in is_r8g8()
40 fdl6_get_ubwc_blockwidth(struct fdl_layout *layout, uint32_t *blockwidth, in fdl6_get_ubwc_blockwidth() argument
57 if (is_r8g8(layout)) { in fdl6_get_ubwc_blockwidth()
63 uint32_t cpp = fdl_cpp_shift(layout); in fdl6_get_ubwc_blockwidth()
70 fdl6_tile_alignment(struct fdl_layout *layout, uint32_t *heightalign) in fdl6_tile_alignment() argument
72 layout->pitchalign = fdl_cpp_shift(layout); in fdl6_tile_alignment()
75 if (is_r8g8(layout) || layout->cpp == 1) { in fdl6_tile_alignment()
76 layout->pitchalign = 1; in fdl6_tile_alignment()
78 } else if (layout->cpp == 2) { in fdl6_tile_alignment()
79 layout->pitchalign = 2; in fdl6_tile_alignment()
86 if (layout->cpp == 1) in fdl6_tile_alignment()
87 layout->base_align = 64; in fdl6_tile_alignment()
88 else if (layout->cpp == 2) in fdl6_tile_alignment()
89 layout->base_align = 128; in fdl6_tile_alignment()
91 layout->base_align = 256; in fdl6_tile_alignment()
98 fdl6_layout(struct fdl_layout *layout, enum pipe_format format, in fdl6_layout() argument
107 layout->width0 = width0; in fdl6_layout()
108 layout->height0 = height0; in fdl6_layout()
109 layout->depth0 = depth0; in fdl6_layout()
111 layout->cpp = util_format_get_blocksize(format); in fdl6_layout()
112 layout->cpp *= nr_samples; in fdl6_layout()
113 layout->cpp_shift = ffs(layout->cpp) - 1; in fdl6_layout()
115 layout->format = format; in fdl6_layout()
116 layout->nr_samples = nr_samples; in fdl6_layout()
117 layout->layer_first = !is_3d; in fdl6_layout()
119 fdl6_get_ubwc_blockwidth(layout, &ubwc_blockwidth, &ubwc_blockheight); in fdl6_layout()
122 layout->ubwc = false; in fdl6_layout()
124 if (layout->ubwc || util_format_is_depth_or_stencil(format)) in fdl6_layout()
125 layout->tile_all = true; in fdl6_layout()
130 uint32_t layers_in_level = layout->layer_first ? 1 : array_size; in fdl6_layout()
136 if (layout->tile_mode) { in fdl6_layout()
137 fdl6_tile_alignment(layout, &heightalign); in fdl6_layout()
139 layout->base_align = 64; in fdl6_layout()
140 layout->pitchalign = 0; in fdl6_layout()
146 if (layout->cpp > 4) in fdl6_layout()
147 layout->pitchalign = fdl_cpp_shift(layout) - 2; in fdl6_layout()
153 layout->pitchalign = fdl_cpp_shift(layout); in fdl6_layout()
159 fdl_set_pitchalign(layout, layout->pitchalign + 6); in fdl6_layout()
163 layout->pitch0 = explicit_layout->pitch; in fdl6_layout()
164 if (align(layout->pitch0, 1 << layout->pitchalign) != layout->pitch0) in fdl6_layout()
181 layout->ubwc_width0 = align(DIV_ROUND_UP(ubwc_width0, ubwc_blockwidth), in fdl6_layout()
188 struct fdl_slice *slice = &layout->slices[level]; in fdl6_layout()
189 struct fdl_slice *ubwc_slice = &layout->ubwc_slices[level]; in fdl6_layout()
190 uint32_t tile_mode = fdl_tile_mode(layout, level); in fdl6_layout()
191 uint32_t pitch = fdl_pitch(layout, level); in fdl6_layout()
215 slice->offset = offset + layout->size; in fdl6_layout()
224 if (level < 1 || layout->slices[level - 1].size0 > 0xf000) { in fdl6_layout()
227 slice->size0 = layout->slices[level - 1].size0; in fdl6_layout()
233 layout->size += slice->size0 * depth * layers_in_level; in fdl6_layout()
235 if (layout->ubwc) { in fdl6_layout()
237 layout->size = align(layout->size, 4096); in fdl6_layout()
239 uint32_t meta_pitch = fdl_ubwc_pitch(layout, level); in fdl6_layout()
245 ubwc_slice->offset = offset + layout->ubwc_layer_size; in fdl6_layout()
246 layout->ubwc_layer_size += ubwc_slice->size0; in fdl6_layout()
250 if (layout->layer_first) { in fdl6_layout()
251 layout->layer_size = align(layout->size, 4096); in fdl6_layout()
252 layout->size = layout->layer_size * array_size; in fdl6_layout()
260 if (layout->ubwc) { in fdl6_layout()
262 layout->slices[level].offset += layout->ubwc_layer_size * array_size; in fdl6_layout()
263 layout->size += layout->ubwc_layer_size * array_size; in fdl6_layout()
267 layout->size += offset; in fdl6_layout()