drm/i915: skylake primary plane scaling using shared scalers
This patch enables skylake primary plane scaling using shared scalers atomic desgin. v2: -use single copy of scaler limits (Matt) v3: -move detach_scalers to crtc commit path (Matt) -use values in plane_state->src as regular integers (me) v4: -changes to align with updated scaler structures (Matt, me) -keep plane src rect in 16.16 format (Matt, Daniel) v5: -Rebased on top of 90/270 rotation changes (me) -Fixed an issue introduced by 90/270 changes where plane programming is using drm_plane->state rect instead of intel_plane->state rect. This change also required for scaling to work properly. (me) -With 90/270, updated limits to cover both portrait and landscape usages (me) -Refactored skylake_update_primary_plane to reduce its size (Daniel) Added helper functions for refactoring are comprehended enough to be used for skylake_update_plane (for sprite) too. One stop towards having single function for all planes. v6: -Added fixme note when checking plane_state->src width in update_plane (Daniel) -Release lock when failing to colorkey request with active scaler (Daniel) Signed-off-by: Chandra Konduru <chandra.konduru@intel.com> Reviewed-by: matthew.d.roper@intel.com Reviewed-by: sonika.jindal@intel.com (v5) Testcase: igt/kms_plane_scaling Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:

committed by
Daniel Vetter

父節點
e1dee1973c
當前提交
6156a45602
@@ -169,7 +169,7 @@ int intel_atomic_commit(struct drm_device *dev,
|
||||
plane->state->state = NULL;
|
||||
}
|
||||
|
||||
/* swap crtc_state */
|
||||
/* swap crtc_scaler_state */
|
||||
for (i = 0; i < dev->mode_config.num_crtc; i++) {
|
||||
struct drm_crtc *crtc = state->crtcs[i];
|
||||
if (!crtc) {
|
||||
@@ -178,6 +178,9 @@ int intel_atomic_commit(struct drm_device *dev,
|
||||
|
||||
to_intel_crtc(crtc)->config->scaler_state =
|
||||
to_intel_crtc_state(state->crtc_states[i])->scaler_state;
|
||||
|
||||
if (INTEL_INFO(dev)->gen >= 9)
|
||||
skl_detach_scalers(to_intel_crtc(crtc));
|
||||
}
|
||||
|
||||
drm_atomic_helper_commit_planes(dev, state);
|
||||
|
Reference in New Issue
Block a user