This fixes an issue where the DRM planes do not support the same pixel formats. The current implementation selects a DRM plane without checking whether the pixel format is supported or not. As a consequence modetest may try to set up a plane not supporting the user request-format, which fails. Modetest has to check the supported formats accross the plane list before selecting a candidate. Signed-off-by: Fabien Dessenne <fabien.dessenne@xxxxxx> --- tests/modetest/modetest.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index 4761c60..866ea82 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -951,7 +951,7 @@ static int set_plane(struct device *dev, struct plane_arg *p) int crtc_x, crtc_y, crtc_w, crtc_h; struct crtc *crtc = NULL; unsigned int pipe; - unsigned int i; + unsigned int i, j; /* Find an unused plane which can be connected to our CRTC. Find the * CRTC index first, then iterate over available planes. @@ -974,8 +974,11 @@ static int set_plane(struct device *dev, struct plane_arg *p) if (!ovr) continue; - if ((ovr->possible_crtcs & (1 << pipe)) && !ovr->crtc_id) - plane_id = ovr->plane_id; + if ((ovr->possible_crtcs & (1 << pipe)) && !ovr->crtc_id) { + for (j = 0; j < ovr->count_formats; j++) + if (!strncmp(p->format_str, (char *) &ovr->formats[j], 4)) + plane_id = ovr->plane_id; + } } if (!plane_id) { -- 1.9.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel