Op 30-04-2019 om 19:33 schreef Ville Syrjala: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Supposedly both src coordinates have to even when doing 90/270 > degree rotation with RGB565. This is definitely true for the > X coordinate (we just get a black screen when it is odd). My > experiments didn't show any misbehaviour with an odd > Y coordinate, but let's trust the spec and reject that one > as well. > > v2: Ignore ccs hsub/vsub > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_sprite.c | 28 +++++++++++++++++----------- > 1 file changed, 17 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c > index 2913e89280d7..b133f254e26d 100644 > --- a/drivers/gpu/drm/i915/intel_sprite.c > +++ b/drivers/gpu/drm/i915/intel_sprite.c > @@ -294,26 +294,32 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state) > src->y1 = src_y << 16; > src->y2 = (src_y + src_h) << 16; > > - if (!fb->format->is_yuv) > - return 0; > - > - /* YUV specific checks */ > - if (!rotated) { > + if (fb->format->format == DRM_FORMAT_RGB565 && rotated) { > + hsub = 2; > + vsub = 2; > + } else if (is_ccs_modifier(fb->modifier)) { > + hsub = 1; > + vsub = 1; Just return 0 here, with a comment how ccs sets vsub/hsub. Less confusing. Other than that. Reviewed-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > + } else { > hsub = fb->format->hsub; > vsub = fb->format->vsub; > - } else { > - hsub = vsub = max(fb->format->hsub, fb->format->vsub); > } > > + if (rotated) > + hsub = vsub = max(hsub, vsub); > + > + if (hsub == 1 && vsub == 1) > + return 0; > + > if (src_x % hsub || src_w % hsub) { > - DRM_DEBUG_KMS("src x/w (%u, %u) must be a multiple of %u for %sYUV planes\n", > - src_x, src_w, hsub, rotated ? "rotated " : ""); > + DRM_DEBUG_KMS("src x/w (%u, %u) must be a multiple of %u (rotated: %s)\n", > + src_x, src_w, hsub, yesno(rotated)); > return -EINVAL; > } > > if (src_y % vsub || src_h % vsub) { > - DRM_DEBUG_KMS("src y/h (%u, %u) must be a multiple of %u for %sYUV planes\n", > - src_y, src_h, vsub, rotated ? "rotated " : ""); > + DRM_DEBUG_KMS("src y/h (%u, %u) must be a multiple of %u (rotated: %s)\n", > + src_y, src_h, vsub, yesno(rotated)); > return -EINVAL; > } > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx