提交 75c13993 编写于 作者: D Daniel Vetter

drm/i915: fixup overlay checks for interlaced modes

The drm core _really_ likes to frob around with the crtc timings and
put halfed vertical timings (in fields) in there. Which confuses the
overlay code, resulting in it's refusal to display anything at the
lower half of an interlaced pipe.
Tested-by: NChristopher Egert <cme3000@gmail.com>
Reviewed-by: NEugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 c3febcc4
...@@ -937,10 +937,10 @@ static int check_overlay_dst(struct intel_overlay *overlay, ...@@ -937,10 +937,10 @@ static int check_overlay_dst(struct intel_overlay *overlay,
{ {
struct drm_display_mode *mode = &overlay->crtc->base.mode; struct drm_display_mode *mode = &overlay->crtc->base.mode;
if (rec->dst_x < mode->crtc_hdisplay && if (rec->dst_x < mode->hdisplay &&
rec->dst_x + rec->dst_width <= mode->crtc_hdisplay && rec->dst_x + rec->dst_width <= mode->hdisplay &&
rec->dst_y < mode->crtc_vdisplay && rec->dst_y < mode->vdisplay &&
rec->dst_y + rec->dst_height <= mode->crtc_vdisplay) rec->dst_y + rec->dst_height <= mode->vdisplay)
return 0; return 0;
else else
return -EINVAL; return -EINVAL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册