Lines Matching defs:layout

33 is_r8g8(const struct fdl_layout *layout)
35 return layout->cpp == 2 &&
36 util_format_get_nr_components(layout->format) == 2;
40 fdl6_get_ubwc_blockwidth(const struct fdl_layout *layout,
57 if (is_r8g8(layout)) {
61 } else if (layout->format == PIPE_FORMAT_Y8_UNORM) {
67 uint32_t cpp = fdl_cpp_shift(layout);
74 fdl6_tile_alignment(struct fdl_layout *layout, uint32_t *heightalign)
76 layout->pitchalign = fdl_cpp_shift(layout);
79 if (is_r8g8(layout) || layout->cpp == 1) {
80 layout->pitchalign = 1;
82 } else if (layout->cpp == 2) {
83 layout->pitchalign = 2;
90 if (layout->ubwc)
91 layout->base_align = 4096;
92 else if (layout->cpp == 1)
93 layout->base_align = 64;
94 else if (layout->cpp == 2)
95 layout->base_align = 128;
97 layout->base_align = 256;
104 fdl6_layout(struct fdl_layout *layout, enum pipe_format format,
113 layout->width0 = width0;
114 layout->height0 = height0;
115 layout->depth0 = depth0;
116 layout->mip_levels = mip_levels;
118 layout->cpp = util_format_get_blocksize(format);
119 layout->cpp *= nr_samples;
120 layout->cpp_shift = ffs(layout->cpp) - 1;
122 layout->format = format;
123 layout->nr_samples = nr_samples;
124 layout->layer_first = !is_3d;
126 fdl6_get_ubwc_blockwidth(layout, &ubwc_blockwidth, &ubwc_blockheight);
129 layout->ubwc = false;
131 if (layout->ubwc || util_format_is_depth_or_stencil(format))
132 layout->tile_all = true;
134 /* in layer_first layout, the level (slice) contains just one
137 uint32_t layers_in_level = layout->layer_first ? 1 : array_size;
143 if (layout->tile_mode) {
144 fdl6_tile_alignment(layout, &heightalign);
146 layout->base_align = 64;
147 layout->pitchalign = 0;
153 if (layout->cpp > 4)
154 layout->pitchalign = fdl_cpp_shift(layout) - 2;
160 layout->pitchalign = fdl_cpp_shift(layout);
166 fdl_set_pitchalign(layout, layout->pitchalign + 6);
170 layout->pitch0 = explicit_layout->pitch;
171 if (align(layout->pitch0, 1 << layout->pitchalign) != layout->pitch0)
179 /* With mipmapping enabled, UBWC layout is power-of-two sized,
188 layout->ubwc_width0 = align(DIV_ROUND_UP(ubwc_width0, ubwc_blockwidth),
197 struct fdl_slice *slice = &layout->slices[level];
198 struct fdl_slice *ubwc_slice = &layout->ubwc_slices[level];
199 uint32_t tile_mode = fdl_tile_mode(layout, level);
200 uint32_t pitch = fdl_pitch(layout, level);
217 slice->offset = offset + layout->size;
231 slice->size0 = u_minify(layout->slices[0].size0, level * 2);
236 uint32_t pitch = fdl_pitch(layout, level);
237 if (pitch != fdl_pitch(layout, level - 1) / 2)
254 layout->size += slice->size0 * depth * layers_in_level;
256 if (layout->ubwc) {
258 layout->size = align(layout->size, 4096);
260 uint32_t meta_pitch = fdl_ubwc_pitch(layout, level);
266 ubwc_slice->offset = offset + layout->ubwc_layer_size;
267 layout->ubwc_layer_size += ubwc_slice->size0;
271 if (layout->layer_first) {
272 layout->layer_size = align(layout->size, 4096);
273 layout->size = layout->layer_size * array_size;
281 if (layout->ubwc) {
283 layout->slices[level].offset += layout->ubwc_layer_size * array_size;
284 layout->size += layout->ubwc_layer_size * array_size;
288 layout->size += offset;