modetest: only select plane with matching format
Don't assume that a plane supports any kind of pixelformat but do a check first. v2: Simplify the format check. Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>main
parent
85ede61136
commit
360a7eacd4
|
@ -960,6 +960,18 @@ page_flip_handler(int fd, unsigned int frame,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool format_support(const drmModePlanePtr ovr, uint32_t fmt)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ovr->count_formats; ++i) {
|
||||||
|
if (ovr->formats[i] == fmt)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static int set_plane(struct device *dev, struct plane_arg *p)
|
static int set_plane(struct device *dev, struct plane_arg *p)
|
||||||
{
|
{
|
||||||
drmModePlane *ovr;
|
drmModePlane *ovr;
|
||||||
|
@ -990,7 +1002,7 @@ static int set_plane(struct device *dev, struct plane_arg *p)
|
||||||
|
|
||||||
for (i = 0; i < dev->resources->plane_res->count_planes && !plane_id; i++) {
|
for (i = 0; i < dev->resources->plane_res->count_planes && !plane_id; i++) {
|
||||||
ovr = dev->resources->planes[i].plane;
|
ovr = dev->resources->planes[i].plane;
|
||||||
if (!ovr)
|
if (!ovr || !format_support(ovr, p->fourcc))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ((ovr->possible_crtcs & (1 << pipe)) && !ovr->crtc_id)
|
if ((ovr->possible_crtcs & (1 << pipe)) && !ovr->crtc_id)
|
||||||
|
|
Loading…
Reference in New Issue