struct drm_framebuffer *fb,
struct dpu_hw_fmt_layout *layout)
{
- int i;
int color;
bool meta = MSM_FORMAT_IS_UBWC(fmt);
- memset(layout, 0, sizeof(struct dpu_hw_fmt_layout));
- layout->width = fb->width;
- layout->height = fb->height;
- layout->num_planes = fmt->num_planes;
-
color = _dpu_format_get_media_color_ubwc(fmt);
if (color < 0) {
DRM_ERROR("UBWC format not supported for fmt: %p4cc\n",
uv_sclines, DPU_UBWC_PLANE_SIZE_ALIGNMENT);
if (!meta)
- goto done;
+ return 0;
layout->num_planes += 2;
layout->plane_pitch[2] = VENUS_Y_META_STRIDE(color, fb->width);
rgb_scanlines, DPU_UBWC_PLANE_SIZE_ALIGNMENT);
if (!meta)
- goto done;
+ return 0;
+
layout->num_planes += 2;
layout->plane_pitch[2] = VENUS_RGB_META_STRIDE(color, fb->width);
rgb_meta_scanlines = VENUS_RGB_META_SCANLINES(color, fb->height);
rgb_meta_scanlines, DPU_UBWC_PLANE_SIZE_ALIGNMENT);
}
-done:
- for (i = 0; i < DPU_MAX_PLANES; i++)
- layout->total_size += layout->plane_size[i];
-
return 0;
}
{
int i;
- memset(layout, 0, sizeof(struct dpu_hw_fmt_layout));
- layout->width = fb->width;
- layout->height = fb->height;
- layout->num_planes = fmt->num_planes;
-
/* Due to memset above, only need to set planes of interest */
if (fmt->fetch_type == MDP_PLANE_INTERLEAVED) {
layout->num_planes = 1;
}
}
- for (i = 0; i < DPU_MAX_PLANES; i++)
- layout->total_size += layout->plane_size[i];
-
return 0;
}
struct dpu_hw_fmt_layout *layout)
{
const struct msm_format *fmt;
+ int ret, i;
if (!layout || !fb) {
DRM_ERROR("invalid pointer\n");
fmt = msm_framebuffer_format(fb);
+ memset(layout, 0, sizeof(struct dpu_hw_fmt_layout));
+ layout->width = fb->width;
+ layout->height = fb->height;
+ layout->num_planes = fmt->num_planes;
+
if (MSM_FORMAT_IS_UBWC(fmt) || MSM_FORMAT_IS_TILE(fmt))
- return _dpu_format_populate_plane_sizes_ubwc(fmt, fb, layout);
+ ret = _dpu_format_populate_plane_sizes_ubwc(fmt, fb, layout);
+ else
+ ret = _dpu_format_populate_plane_sizes_linear(fmt, fb, layout);
- return _dpu_format_populate_plane_sizes_linear(fmt, fb, layout);
+ if (ret)
+ return ret;
+
+ for (i = 0; i < DPU_MAX_PLANES; i++)
+ layout->total_size += layout->plane_size[i];
+
+ return 0;
}
static void _dpu_format_populate_addrs_ubwc(struct drm_framebuffer *fb,