[Intel-xe] [RFC PATCH 17/20] drm/xe/display: Use frontbuffer tracking for Xe as well
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Fri May 5 08:50:11 UTC 2023
On 2023-05-05 10:29, Jouni Högander wrote:
> Use frontbuffer tracking for Xe as well as needed. We still need to
> perform flush for PSR, FBC and DRRS. For this purpose use frontbuffer
> tracking for Xe as well.
>
> Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_drrs.c | 1 +
> drivers/gpu/drm/i915/display/intel_fb.c | 3 +++
> drivers/gpu/drm/i915/display/intel_psr.c | 1 +
> drivers/gpu/drm/i915/display/skl_universal_plane.c | 1 +
> drivers/gpu/drm/xe/xe_bo_types.h | 2 ++
> 5 files changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c
> index 760e63cdc0c8..59527a4667f4 100644
> --- a/drivers/gpu/drm/i915/display/intel_drrs.c
> +++ b/drivers/gpu/drm/i915/display/intel_drrs.c
> @@ -9,6 +9,7 @@
> #include "intel_de.h"
> #include "intel_display_types.h"
> #include "intel_drrs.h"
> +#include "intel_frontbuffer.h"
> #include "intel_panel.h"
>
> /**
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
> index e62e1e12758d..fa4464d433b7 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> @@ -13,6 +13,7 @@
> #include "intel_display_types.h"
> #include "intel_dpt.h"
> #include "intel_fb.h"
> +#include "intel_frontbuffer.h"
>
> #ifdef I915
> /*
> @@ -1923,11 +1924,13 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
> int i;
> #ifdef I915
> unsigned tiling, stride;
> +#endif
>
> intel_fb->frontbuffer = intel_frontbuffer_get(obj);
> if (!intel_fb->frontbuffer)
> return -ENOMEM;
>
> +#ifdef I915
> i915_gem_object_lock(obj, NULL);
> tiling = i915_gem_object_get_tiling(obj);
> stride = i915_gem_object_get_stride(obj);
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index ea0389c5f656..2ecc902a85a2 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -32,6 +32,7 @@
> #include "intel_display_types.h"
> #include "intel_dp.h"
> #include "intel_dp_aux.h"
> +#include "intel_frontbuffer.h"
> #include "intel_hdmi.h"
> #include "intel_psr.h"
> #include "intel_psr_regs.h"
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> index 71ba544eda71..0f1e4e61d32e 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> @@ -16,6 +16,7 @@
> #include "intel_display_types.h"
> #include "intel_fb.h"
> #include "intel_fbc.h"
> +#include "intel_frontbuffer.h"
> #include "intel_psr.h"
> #include "skl_scaler.h"
> #include "skl_universal_plane.h"
> diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
> index 229fedc8ea72..df5be030991a 100644
> --- a/drivers/gpu/drm/xe/xe_bo_types.h
> +++ b/drivers/gpu/drm/xe/xe_bo_types.h
> @@ -68,6 +68,8 @@ struct xe_bo {
> struct llist_node freed;
> /** @created: Whether the bo has passed initial creation */
> bool created;
> +
> + struct intel_frontbuffer *frontbuffer;
Instead of putting this in xe_bo, could this be put inside intel_fb as
well? In that case, for Xe each framebuffer could have its own
frontbuffer tracking, and an invalidate on 1 fb would not invalidate
another FB
I think we don't want to copy i915 semantics here 1:1.
> };
>
> #define intel_bo_to_drm_bo(bo) ((bo)->ttm.base)
More information about the Intel-xe
mailing list