drm: change timing to set color format for primary plane without universal plane
Without universal plane, the weston crashes with null pointer access in set_gbm_format function because that function called before output enable function. By changing timing to set color format for primary plane in this case, this issue fixes. Signed-off-by: Tomohito Esaki <etom@igel.co.jp>
This commit is contained in:
@@ -1389,12 +1389,6 @@ drm_output_set_gbm_format(struct weston_output *base,
|
|||||||
|
|
||||||
if (parse_gbm_format(gbm_format, b->gbm_format, &output->gbm_format) == -1)
|
if (parse_gbm_format(gbm_format, b->gbm_format, &output->gbm_format) == -1)
|
||||||
output->gbm_format = b->gbm_format;
|
output->gbm_format = b->gbm_format;
|
||||||
|
|
||||||
/* Without universal planes, we can't discover which formats are
|
|
||||||
* supported by the primary plane; we just hope that the GBM format
|
|
||||||
* works. */
|
|
||||||
if (!b->universal_planes)
|
|
||||||
output->scanout_plane->formats[0].format = output->gbm_format;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1626,6 +1620,12 @@ drm_output_init_crtc(struct drm_output *output, drmModeRes *resources)
|
|||||||
goto err_crtc;
|
goto err_crtc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Without universal planes, we can't discover which formats are
|
||||||
|
* supported by the primary plane; we just hope that the GBM format
|
||||||
|
* works. */
|
||||||
|
if (!b->universal_planes)
|
||||||
|
output->scanout_plane->formats[0].format = output->gbm_format;
|
||||||
|
|
||||||
/* Failing to find a cursor plane is not fatal, as we'll fall back
|
/* Failing to find a cursor plane is not fatal, as we'll fall back
|
||||||
* to software cursor. */
|
* to software cursor. */
|
||||||
output->cursor_plane =
|
output->cursor_plane =
|
||||||
|
|||||||
Reference in New Issue
Block a user