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)
|
||||
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
|
||||
@@ -1626,6 +1620,12 @@ drm_output_init_crtc(struct drm_output *output, drmModeRes *resources)
|
||||
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
|
||||
* to software cursor. */
|
||||
output->cursor_plane =
|
||||
|
||||
Reference in New Issue
Block a user