[Intel-gfx] [PATCH 2/3] drm/i915: Skip aux plane stuff when there is no aux plane
Imre Deak
imre.deak at intel.com
Thu Oct 8 13:38:51 UTC 2020
On Thu, Oct 08, 2020 at 01:16:07PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> when the hardware isn't going to use the aux plane there's no
> real point in dealing with the relevant hardware restrictions.
> So let's just skip all that when not necessary.
>
> We can now also remove the offset=~0xfff behaviour for unused
> color planes. Let's just zero out everyting so as to not leave
> stale garbage behind to confuse people debugging the code.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Reviewed-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 14 +++++++++-----
> drivers/gpu/drm/i915/display/intel_sprite.c | 6 +++---
> 2 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 44fd7059838f..34ba34f84b2a 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -2001,13 +2001,17 @@ static int ccs_to_main_plane(const struct drm_framebuffer *fb, int ccs_plane)
> return ccs_plane - fb->format->num_planes / 2;
> }
>
> -/* Return either the main plane's CCS or - if not a CCS FB - UV plane */
> int intel_main_to_aux_plane(const struct drm_framebuffer *fb, int main_plane)
> {
> + struct drm_i915_private *i915 = to_i915(fb->dev);
> +
> if (is_ccs_modifier(fb->modifier))
> return main_to_ccs_plane(fb, main_plane);
> -
> - return 1;
> + else if (INTEL_GEN(i915) < 11 &&
> + intel_format_info_is_yuv_semiplanar(fb->format, fb->modifier))
> + return 1;
> + else
> + return 0;
> }
>
> bool
> @@ -3933,7 +3937,7 @@ static int skl_check_main_surface(struct intel_plane_state *plane_state)
> * main surface offset, and it must be non-negative. Make
> * sure that is what we will get.
> */
> - if (offset > aux_offset)
> + if (aux_plane && offset > aux_offset)
> offset = intel_plane_adjust_aligned_offset(&x, &y, plane_state, 0,
> offset, aux_offset & ~(alignment - 1));
>
> @@ -4131,7 +4135,7 @@ int skl_check_plane_surface(struct intel_plane_state *plane_state)
> }
>
> for (i = fb->format->num_planes; i < ARRAY_SIZE(plane_state->color_plane); i++) {
> - plane_state->color_plane[i].offset = ~0xfff;
> + plane_state->color_plane[i].offset = 0;
> plane_state->color_plane[i].x = 0;
> plane_state->color_plane[i].y = 0;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c
> index 2da11ab6343c..bf8c82a2b213 100644
> --- a/drivers/gpu/drm/i915/display/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/display/intel_sprite.c
> @@ -656,7 +656,6 @@ skl_program_plane(struct intel_plane *plane,
> const struct drm_framebuffer *fb = plane_state->hw.fb;
> int aux_plane = intel_main_to_aux_plane(fb, color_plane);
> u32 aux_dist = plane_state->color_plane[aux_plane].offset - surf_addr;
> - u32 aux_stride = skl_plane_stride(plane_state, aux_plane);
> int crtc_x = plane_state->uapi.dst.x1;
> int crtc_y = plane_state->uapi.dst.y1;
> u32 x = plane_state->color_plane[color_plane].x;
> @@ -691,6 +690,9 @@ skl_program_plane(struct intel_plane *plane,
> crtc_y = 0;
> }
>
> + if (INTEL_GEN(dev_priv) < 12 && aux_plane)
> + aux_dist |= skl_plane_stride(plane_state, aux_plane);
> +
> spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
>
> intel_de_write_fw(dev_priv, PLANE_STRIDE(pipe, plane_id), stride);
> @@ -699,8 +701,6 @@ skl_program_plane(struct intel_plane *plane,
> intel_de_write_fw(dev_priv, PLANE_SIZE(pipe, plane_id),
> (src_h << 16) | src_w);
>
> - if (INTEL_GEN(dev_priv) < 12)
> - aux_dist |= aux_stride;
> intel_de_write_fw(dev_priv, PLANE_AUX_DIST(pipe, plane_id), aux_dist);
>
> if (icl_is_hdr_plane(dev_priv, plane_id))
> --
> 2.26.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list