提交 ce54d85a 编写于 作者: S Sonika Jindal 提交者: Daniel Vetter

drm/i915: Updating plane parameters for primary plane in setplane

This unifies how the primary plane functions work with how the sprite
functions works, which allows us to reuse them to update primary plane
properties.

v2: Moving setting of plane members in the end to take care of failure cases and
not-visible cases (Matt).
Signed-off-by: NSonika Jindal <sonika.jindal@intel.com>
Acked-by: NMatt Roper <matthew.d.roper@intel.com>
[danvet: Add a real commit message.]
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 6689c167
...@@ -11584,6 +11584,21 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc, ...@@ -11584,6 +11584,21 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
.x2 = intel_crtc->active ? intel_crtc->config.pipe_src_w : 0, .x2 = intel_crtc->active ? intel_crtc->config.pipe_src_w : 0,
.y2 = intel_crtc->active ? intel_crtc->config.pipe_src_h : 0, .y2 = intel_crtc->active ? intel_crtc->config.pipe_src_h : 0,
}; };
const struct {
int crtc_x, crtc_y;
unsigned int crtc_w, crtc_h;
uint32_t src_x, src_y, src_w, src_h;
} orig = {
.crtc_x = crtc_x,
.crtc_y = crtc_y,
.crtc_w = crtc_w,
.crtc_h = crtc_h,
.src_x = src_x,
.src_y = src_y,
.src_w = src_w,
.src_h = src_h,
};
struct intel_plane *intel_plane = to_intel_plane(plane);
bool visible; bool visible;
int ret; int ret;
...@@ -11658,15 +11673,24 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc, ...@@ -11658,15 +11673,24 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
return 0; } else {
} ret = intel_pipe_set_base(crtc, src.x1, src.y1, fb);
if (ret)
return ret;
ret = intel_pipe_set_base(crtc, src.x1, src.y1, fb); if (!intel_crtc->primary_enabled)
if (ret) intel_enable_primary_hw_plane(plane, crtc);
return ret; }
if (!intel_crtc->primary_enabled) intel_plane->crtc_x = orig.crtc_x;
intel_enable_primary_hw_plane(plane, crtc); intel_plane->crtc_y = orig.crtc_y;
intel_plane->crtc_w = orig.crtc_w;
intel_plane->crtc_h = orig.crtc_h;
intel_plane->src_x = orig.src_x;
intel_plane->src_y = orig.src_y;
intel_plane->src_w = orig.src_w;
intel_plane->src_h = orig.src_h;
intel_plane->obj = obj;
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册