Re: [Intel-gfx] [PATCH 06/13] drm/i915/dsb: Allow vblank synchronized DSB execution

2023-02-02 Thread Manna, Animesh


> -Original Message-
> From: Intel-gfx  On Behalf Of Ville
> Syrjala
> Sent: Wednesday, January 18, 2023 10:01 PM
> To: intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH 06/13] drm/i915/dsb: Allow vblank synchronized
> DSB execution
> 
> From: Ville Syrjälä 
> 
> Allow the caller to ask for the DSB commands to execute during vblank.
> 
> Signed-off-by: Ville Syrjälä 

LGTM.
Reviewed-by: Animesh Manna 

> ---
>  drivers/gpu/drm/i915/display/intel_color.c | 2 +-
>  drivers/gpu/drm/i915/display/intel_dsb.c   | 4 +++-
>  drivers/gpu/drm/i915/display/intel_dsb.h   | 3 ++-
>  3 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> b/drivers/gpu/drm/i915/display/intel_color.c
> index 6d6d300fa2df..162d671182e3 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -1258,7 +1258,7 @@ static void icl_load_luts(const struct
> intel_crtc_state *crtc_state)
> 
>   if (crtc_state->dsb) {
>   intel_dsb_finish(crtc_state->dsb);
> - intel_dsb_commit(crtc_state->dsb);
> + intel_dsb_commit(crtc_state->dsb, false);
>   intel_dsb_wait(crtc_state->dsb);
>   }
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c
> b/drivers/gpu/drm/i915/display/intel_dsb.c
> index f454329b6901..43679090eceb 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> @@ -237,10 +237,11 @@ void intel_dsb_finish(struct intel_dsb *dsb)
>  /**
>   * intel_dsb_commit() - Trigger workload execution of DSB.
>   * @dsb: DSB context
> + * @wait_for_vblank: wait for vblank before executing
>   *
>   * This function is used to do actual write to hardware using DSB.
>   */
> -void intel_dsb_commit(struct intel_dsb *dsb)
> +void intel_dsb_commit(struct intel_dsb *dsb, bool wait_for_vblank)
>  {
>   struct intel_crtc *crtc = dsb->crtc;
>   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); @@ -
> 258,6 +259,7 @@ void intel_dsb_commit(struct intel_dsb *dsb)
>   }
> 
>   intel_de_write(dev_priv, DSB_CTRL(pipe, dsb->id),
> +(wait_for_vblank ? DSB_WAIT_FOR_VBLANK : 0) |
>  DSB_ENABLE);
>   intel_de_write(dev_priv, DSB_HEAD(pipe, dsb->id),
>  i915_ggtt_offset(dsb->vma));
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.h
> b/drivers/gpu/drm/i915/display/intel_dsb.h
> index 6b22499e8a5d..b8148b47022d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.h
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.h
> @@ -19,7 +19,8 @@ void intel_dsb_finish(struct intel_dsb *dsb);  void
> intel_dsb_cleanup(struct intel_dsb *dsb);  void intel_dsb_reg_write(struct
> intel_dsb *dsb,
>i915_reg_t reg, u32 val);
> -void intel_dsb_commit(struct intel_dsb *dsb);
> +void intel_dsb_commit(struct intel_dsb *dsb,
> +   bool wait_for_vblank);
>  void intel_dsb_wait(struct intel_dsb *dsb);
> 
>  #endif
> --
> 2.38.2



[Intel-gfx] [PATCH 06/13] drm/i915/dsb: Allow vblank synchronized DSB execution

2023-01-18 Thread Ville Syrjala
From: Ville Syrjälä 

Allow the caller to ask for the DSB commands to execute
during vblank.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_color.c | 2 +-
 drivers/gpu/drm/i915/display/intel_dsb.c   | 4 +++-
 drivers/gpu/drm/i915/display/intel_dsb.h   | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_color.c 
b/drivers/gpu/drm/i915/display/intel_color.c
index 6d6d300fa2df..162d671182e3 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -1258,7 +1258,7 @@ static void icl_load_luts(const struct intel_crtc_state 
*crtc_state)
 
if (crtc_state->dsb) {
intel_dsb_finish(crtc_state->dsb);
-   intel_dsb_commit(crtc_state->dsb);
+   intel_dsb_commit(crtc_state->dsb, false);
intel_dsb_wait(crtc_state->dsb);
}
 }
diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c 
b/drivers/gpu/drm/i915/display/intel_dsb.c
index f454329b6901..43679090eceb 100644
--- a/drivers/gpu/drm/i915/display/intel_dsb.c
+++ b/drivers/gpu/drm/i915/display/intel_dsb.c
@@ -237,10 +237,11 @@ void intel_dsb_finish(struct intel_dsb *dsb)
 /**
  * intel_dsb_commit() - Trigger workload execution of DSB.
  * @dsb: DSB context
+ * @wait_for_vblank: wait for vblank before executing
  *
  * This function is used to do actual write to hardware using DSB.
  */
-void intel_dsb_commit(struct intel_dsb *dsb)
+void intel_dsb_commit(struct intel_dsb *dsb, bool wait_for_vblank)
 {
struct intel_crtc *crtc = dsb->crtc;
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
@@ -258,6 +259,7 @@ void intel_dsb_commit(struct intel_dsb *dsb)
}
 
intel_de_write(dev_priv, DSB_CTRL(pipe, dsb->id),
+  (wait_for_vblank ? DSB_WAIT_FOR_VBLANK : 0) |
   DSB_ENABLE);
intel_de_write(dev_priv, DSB_HEAD(pipe, dsb->id),
   i915_ggtt_offset(dsb->vma));
diff --git a/drivers/gpu/drm/i915/display/intel_dsb.h 
b/drivers/gpu/drm/i915/display/intel_dsb.h
index 6b22499e8a5d..b8148b47022d 100644
--- a/drivers/gpu/drm/i915/display/intel_dsb.h
+++ b/drivers/gpu/drm/i915/display/intel_dsb.h
@@ -19,7 +19,8 @@ void intel_dsb_finish(struct intel_dsb *dsb);
 void intel_dsb_cleanup(struct intel_dsb *dsb);
 void intel_dsb_reg_write(struct intel_dsb *dsb,
 i915_reg_t reg, u32 val);
-void intel_dsb_commit(struct intel_dsb *dsb);
+void intel_dsb_commit(struct intel_dsb *dsb,
+ bool wait_for_vblank);
 void intel_dsb_wait(struct intel_dsb *dsb);
 
 #endif
-- 
2.38.2