* [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 02/10] drm/atomic: Add drm_atomic_helper_set_fence_deadline() function Maarten Lankhorst
` (8 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
Revert the plane_fb changes, so we can fix it properly.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
.../gpu/drm/i915/display/intel_atomic_plane.c | 25 +++----------------
1 file changed, 4 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index 62b6108c43808..dd65498166fbf 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -1033,11 +1033,10 @@ static int
intel_prepare_plane_fb(struct drm_plane *_plane,
struct drm_plane_state *_new_plane_state)
{
- struct intel_plane_state *new_plane_state =
- to_intel_plane_state(_new_plane_state);
-#ifdef I915
struct i915_sched_attr attr = { .priority = I915_PRIORITY_DISPLAY };
struct intel_plane *plane = to_intel_plane(_plane);
+ struct intel_plane_state *new_plane_state =
+ to_intel_plane_state(_new_plane_state);
struct intel_atomic_state *state =
to_intel_atomic_state(new_plane_state->uapi.state);
struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
@@ -1133,22 +1132,6 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
intel_plane_unpin_fb(new_plane_state);
return ret;
-#else
- int ret;
-
- if (!intel_fb_obj(new_plane_state->hw.fb))
- return 0;
-
- ret = intel_plane_pin_fb(new_plane_state);
- if (ret)
- return ret;
-
- ret = drm_gem_plane_helper_prepare_fb(_plane, _new_plane_state);
- if (ret)
- intel_plane_unpin_fb(new_plane_state);
-
- return ret;
-#endif
}
/**
@@ -1164,9 +1147,9 @@ intel_cleanup_plane_fb(struct drm_plane *plane,
{
struct intel_plane_state *old_plane_state =
to_intel_plane_state(_old_plane_state);
- __maybe_unused struct intel_atomic_state *state =
+ struct intel_atomic_state *state =
to_intel_atomic_state(old_plane_state->uapi.state);
- __maybe_unused struct drm_i915_private *dev_priv = to_i915(plane->dev);
+ struct drm_i915_private *dev_priv = to_i915(plane->dev);
struct drm_i915_gem_object *obj = intel_fb_obj(old_plane_state->hw.fb);
if (!obj)
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [Intel-xe] [PATCH 02/10] drm/atomic: Add drm_atomic_helper_set_fence_deadline() function
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 03/10] drm/i915: Implement fence->set_deadline Maarten Lankhorst
` (7 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
i915 has an i915 specific boost. Use set_fence_deadline instead.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
drivers/gpu/drm/drm_atomic_helper.c | 15 +++++++++++----
include/drm/drm_atomic_helper.h | 3 ++-
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 71d3993971075..47ccbe1192658 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1520,12 +1520,16 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
}
EXPORT_SYMBOL(drm_atomic_helper_commit_modeset_enables);
-/*
+/**
+ * drm_atomic_helper_set_fence_deadline - update fence deadlines.
+ * @dev: DRM device
+ * @state: atomic state object with new state structures
+ *
* For atomic updates which touch just a single CRTC, calculate the time of the
* next vblank, and inform all the fences of the deadline.
*/
-static void set_fence_deadline(struct drm_device *dev,
- struct drm_atomic_state *state)
+void drm_atomic_helper_set_fence_deadline(struct drm_device *dev,
+ struct drm_atomic_state *state)
{
struct drm_crtc *crtc;
struct drm_crtc_state *new_crtc_state;
@@ -1560,6 +1564,7 @@ static void set_fence_deadline(struct drm_device *dev,
dma_fence_set_deadline(new_plane_state->fence, vbltime);
}
}
+EXPORT_SYMBOL(drm_atomic_helper_set_fence_deadline);
/**
* drm_atomic_helper_wait_for_fences - wait for fences stashed in plane state
@@ -1580,6 +1585,8 @@ static void set_fence_deadline(struct drm_device *dev,
* to wait **before** we do anything that can't be easily rolled back. That is
* before we call drm_atomic_helper_swap_state().
*
+ * Calls drm_atomic_helper_set_fence_deadline().
+ *
* Returns zero if success or < 0 if dma_fence_wait() fails.
*/
int drm_atomic_helper_wait_for_fences(struct drm_device *dev,
@@ -1590,7 +1597,7 @@ int drm_atomic_helper_wait_for_fences(struct drm_device *dev,
struct drm_plane_state *new_plane_state;
int i, ret;
- set_fence_deadline(dev, state);
+ drm_atomic_helper_set_fence_deadline(dev, state);
for_each_new_plane_in_state(state, plane, new_plane_state, i) {
if (!new_plane_state->fence)
diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
index 536a0b0091c3a..37c6df1db5e0d 100644
--- a/include/drm/drm_atomic_helper.h
+++ b/include/drm/drm_atomic_helper.h
@@ -72,7 +72,8 @@ int drm_atomic_helper_async_check(struct drm_device *dev,
struct drm_atomic_state *state);
void drm_atomic_helper_async_commit(struct drm_device *dev,
struct drm_atomic_state *state);
-
+void drm_atomic_helper_set_fence_deadline(struct drm_device *dev,
+ struct drm_atomic_state *state);
int drm_atomic_helper_wait_for_fences(struct drm_device *dev,
struct drm_atomic_state *state,
bool pre_swap);
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [Intel-xe] [PATCH 03/10] drm/i915: Implement fence->set_deadline.
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 01/10] revert fixme in intel_atomic_plane.c Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 02/10] drm/atomic: Add drm_atomic_helper_set_fence_deadline() function Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests Maarten Lankhorst
` (6 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
Useful when we want to start using it in display.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
drivers/gpu/drm/i915/i915_request.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index f59081066a197..72e6d0e705231 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -105,6 +105,14 @@ static signed long i915_fence_wait(struct dma_fence *fence,
timeout);
}
+static void i915_fence_set_deadline(struct dma_fence *fence,
+ ktime_t deadline)
+{
+ struct i915_sched_attr attr = { .priority = I915_PRIORITY_DISPLAY };
+
+ i915_gem_fence_wait_priority(fence, &attr);
+}
+
struct kmem_cache *i915_request_slab_cache(void)
{
return slab_requests;
@@ -177,6 +185,7 @@ const struct dma_fence_ops i915_fence_ops = {
.enable_signaling = i915_fence_enable_signaling,
.signaled = i915_fence_signaled,
.wait = i915_fence_wait,
+ .set_deadline = i915_fence_set_deadline,
.release = i915_fence_release,
};
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
` (2 preceding siblings ...)
2023-10-25 10:20 ` [Intel-xe] [PATCH 03/10] drm/i915: Implement fence->set_deadline Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-27 10:05 ` [Intel-xe] [04/10] " Hogander, Jouni
2023-10-25 10:20 ` [Intel-xe] [PATCH 05/10] fixup xe i915_drv.h compat header Maarten Lankhorst
` (5 subsequent siblings)
9 siblings, 1 reply; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
Instead of using a i915 specific method, use the generic helper to
combine fences and set the deadline.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
.../gpu/drm/i915/display/intel_atomic_plane.c | 47 ++++---------------
drivers/gpu/drm/i915/display/intel_display.c | 2 +
2 files changed, 11 insertions(+), 38 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index dd65498166fbf..98a59445e6f45 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -1033,7 +1033,6 @@ static int
intel_prepare_plane_fb(struct drm_plane *_plane,
struct drm_plane_state *_new_plane_state)
{
- struct i915_sched_attr attr = { .priority = I915_PRIORITY_DISPLAY };
struct intel_plane *plane = to_intel_plane(_plane);
struct intel_plane_state *new_plane_state =
to_intel_plane_state(_new_plane_state);
@@ -1072,49 +1071,20 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
}
}
- if (new_plane_state->uapi.fence) { /* explicit fencing */
- i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
- &attr);
- ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
- new_plane_state->uapi.fence,
- i915_fence_timeout(dev_priv),
- GFP_KERNEL);
- if (ret < 0)
+ if (obj) {
+ ret = intel_plane_pin_fb(new_plane_state);
+ if (ret)
return ret;
}
- if (!obj)
- return 0;
-
-
- ret = intel_plane_pin_fb(new_plane_state);
+ /* prepare after pinning */
+ ret = drm_gem_plane_helper_prepare_fb(_plane, _new_plane_state);
if (ret)
- return ret;
+ goto unpin_fb;
- i915_gem_object_wait_priority(obj, 0, &attr);
-
- if (!new_plane_state->uapi.fence) { /* implicit fencing */
- struct dma_resv_iter cursor;
- struct dma_fence *fence;
-
- ret = i915_sw_fence_await_reservation(&state->commit_ready,
- obj->base.resv, false,
- i915_fence_timeout(dev_priv),
- GFP_KERNEL);
- if (ret < 0)
- goto unpin_fb;
-
- dma_resv_iter_begin(&cursor, obj->base.resv,
- DMA_RESV_USAGE_WRITE);
- dma_resv_for_each_fence_unlocked(&cursor, fence) {
- intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
- fence);
- }
- dma_resv_iter_end(&cursor);
- } else {
+ if (new_plane_state->uapi.fence)
intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
new_plane_state->uapi.fence);
- }
/*
* We declare pageflips to be interactive and so merit a small bias
@@ -1124,7 +1094,8 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
* that are not quite steady state without resorting to forcing
* maximum clocks following a vblank miss (see do_rps_boost()).
*/
- intel_display_rps_mark_interactive(dev_priv, state, true);
+ if (obj)
+ intel_display_rps_mark_interactive(dev_priv, state, true);
return 0;
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 478b8764101a2..1b66d5adcebee 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -6599,6 +6599,8 @@ static int intel_atomic_prepare_commit(struct intel_atomic_state *state)
if (ret < 0)
return ret;
+ drm_atomic_helper_set_fence_deadline(state->base.dev, &state->base);
+
for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
if (intel_crtc_needs_color_update(crtc_state))
intel_color_prepare_commit(crtc_state);
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [Intel-xe] [04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests
2023-10-25 10:20 ` [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests Maarten Lankhorst
@ 2023-10-27 10:05 ` Hogander, Jouni
0 siblings, 0 replies; 14+ messages in thread
From: Hogander, Jouni @ 2023-10-27 10:05 UTC (permalink / raw)
To: intel-xe@lists.freedesktop.org, maarten.lankhorst@linux.intel.com
Hello Maarten,
We have ongoing discussion in gfx mailing list
(https://patchwork.freedesktop.org/series/125160/). I understood we
have now there clear path forward. I will prepare one more addresing
recent comments from Ville. That patch set which will take care of
this. After getting it merged into drm-intel-next I will backport it to
drm-xe-next and it will solve this.
BR,
Jouni Högander
On Wed, 2023-10-25 at 12:20 +0200, Maarten Lankhorst wrote:
> Instead of using a i915 specific method, use the generic helper to
> combine fences and set the deadline.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> .../gpu/drm/i915/display/intel_atomic_plane.c | 47 ++++-------------
> --
> drivers/gpu/drm/i915/display/intel_display.c | 2 +
> 2 files changed, 11 insertions(+), 38 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index dd65498166fbf..98a59445e6f45 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -1033,7 +1033,6 @@ static int
> intel_prepare_plane_fb(struct drm_plane *_plane,
> struct drm_plane_state *_new_plane_state)
> {
> - struct i915_sched_attr attr = { .priority =
> I915_PRIORITY_DISPLAY };
> struct intel_plane *plane = to_intel_plane(_plane);
> struct intel_plane_state *new_plane_state =
> to_intel_plane_state(_new_plane_state);
> @@ -1072,49 +1071,20 @@ intel_prepare_plane_fb(struct drm_plane
> *_plane,
> }
> }
>
> - if (new_plane_state->uapi.fence) { /* explicit fencing */
> - i915_gem_fence_wait_priority(new_plane_state-
> >uapi.fence,
> - &attr);
> - ret = i915_sw_fence_await_dma_fence(&state-
> >commit_ready,
> - new_plane_state-
> >uapi.fence,
> -
> i915_fence_timeout(dev_priv),
> - GFP_KERNEL);
> - if (ret < 0)
> + if (obj) {
> + ret = intel_plane_pin_fb(new_plane_state);
> + if (ret)
> return ret;
> }
>
> - if (!obj)
> - return 0;
> -
> -
> - ret = intel_plane_pin_fb(new_plane_state);
> + /* prepare after pinning */
> + ret = drm_gem_plane_helper_prepare_fb(_plane,
> _new_plane_state);
> if (ret)
> - return ret;
> + goto unpin_fb;
>
> - i915_gem_object_wait_priority(obj, 0, &attr);
> -
> - if (!new_plane_state->uapi.fence) { /* implicit fencing */
> - struct dma_resv_iter cursor;
> - struct dma_fence *fence;
> -
> - ret = i915_sw_fence_await_reservation(&state-
> >commit_ready,
> - obj->base.resv,
> false,
> -
> i915_fence_timeout(dev_priv),
> - GFP_KERNEL);
> - if (ret < 0)
> - goto unpin_fb;
> -
> - dma_resv_iter_begin(&cursor, obj->base.resv,
> - DMA_RESV_USAGE_WRITE);
> - dma_resv_for_each_fence_unlocked(&cursor, fence) {
> -
> intel_display_rps_boost_after_vblank(new_plane_
> state->hw.crtc,
> - fence);
> - }
> - dma_resv_iter_end(&cursor);
> - } else {
> + if (new_plane_state->uapi.fence)
> intel_display_rps_boost_after_vblank(new_plane_state-
> >hw.crtc,
> new_plane_state-
> >uapi.fence);
> - }
>
> /*
> * We declare pageflips to be interactive and so merit a
> small bias
> @@ -1124,7 +1094,8 @@ intel_prepare_plane_fb(struct drm_plane
> *_plane,
> * that are not quite steady state without resorting to
> forcing
> * maximum clocks following a vblank miss (see
> do_rps_boost()).
> */
> - intel_display_rps_mark_interactive(dev_priv, state, true);
> + if (obj)
> + intel_display_rps_mark_interactive(dev_priv, state,
> true);
>
> return 0;
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 478b8764101a2..1b66d5adcebee 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6599,6 +6599,8 @@ static int intel_atomic_prepare_commit(struct
> intel_atomic_state *state)
> if (ret < 0)
> return ret;
>
> + drm_atomic_helper_set_fence_deadline(state->base.dev, &state-
> >base);
> +
> for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i)
> {
> if (intel_crtc_needs_color_update(crtc_state))
> intel_color_prepare_commit(crtc_state);
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-xe] [PATCH 05/10] fixup xe i915_drv.h compat header
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
` (3 preceding siblings ...)
2023-10-25 10:20 ` [Intel-xe] [PATCH 04/10] FIXME drm/i915/display: Use fence->set_deadline to boost requests Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes Maarten Lankhorst
` (4 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
| 1 +
1 file changed, 1 insertion(+)
--git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index 4e922446e40ef..5f24befb198fc 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -202,6 +202,7 @@ static inline void intel_runtime_pm_put(struct xe_runtime_pm *pm, bool wakeref)
#define intel_uncore_arm_unclaimed_mmio_detection(x) do { } while (0)
#define i915_sw_fence_commit(x) do { } while (0)
+#define i915_sw_fence_await_reservation(...) (0)
#define with_intel_runtime_pm(rpm, wf) \
for ((wf) = intel_runtime_pm_get(rpm); (wf); \
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes.
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
` (4 preceding siblings ...)
2023-10-25 10:20 ` [Intel-xe] [PATCH 05/10] fixup xe i915_drv.h compat header Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-27 10:17 ` [Intel-xe] [06/10] " Hogander, Jouni
2023-10-25 10:20 ` [Intel-xe] [PATCH 07/10] Update compat headers Maarten Lankhorst
` (3 subsequent siblings)
9 siblings, 1 reply; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
No functional change, just things removed.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_frontbuffer.c | 7 ++++---
drivers/gpu/drm/i915/display/intel_frontbuffer.h | 4 ----
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index d64ce5bfeca82..2ea37c0414a95 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -190,7 +190,7 @@ void __intel_fb_flush(struct intel_frontbuffer *front,
enum fb_op_origin origin,
unsigned int frontbuffer_bits)
{
- struct drm_i915_private *i915 = intel_bo_to_i915((front->obj));
+ struct drm_i915_private *i915 = intel_bo_to_i915(front->obj);
if (origin == ORIGIN_CS) {
spin_lock(&i915->display.fb_tracking.lock);
@@ -259,6 +259,7 @@ static void frontbuffer_release(struct kref *ref)
drm_WARN_ON(&intel_bo_to_i915(obj)->drm, atomic_read(&front->bits));
i915_ggtt_clear_scanout(obj);
+
ret = i915_gem_object_set_frontbuffer(obj, NULL);
drm_WARN_ON(&intel_bo_to_i915(obj)->drm, ret);
spin_unlock(&intel_bo_to_i915(obj)->display.fb_tracking.lock);
@@ -289,12 +290,12 @@ intel_frontbuffer_get(struct drm_i915_gem_object *obj)
frontbuffer_retire,
I915_ACTIVE_RETIRE_SLEEPS);
INIT_WORK(&front->flush_work, intel_frontbuffer_flush_work);
+
spin_lock(&i915->display.fb_tracking.lock);
cur = i915_gem_object_set_frontbuffer(obj, front);
spin_unlock(&i915->display.fb_tracking.lock);
if (cur != front)
kfree(front);
-
return cur;
}
@@ -337,7 +338,7 @@ void intel_frontbuffer_track(struct intel_frontbuffer *old,
}
if (new) {
- drm_WARN_ON(&intel_bo_to_i915(old->obj)->drm,
+ drm_WARN_ON(&intel_bo_to_i915(new->obj)->drm,
atomic_read(&new->bits) & frontbuffer_bits);
atomic_or(frontbuffer_bits, &new->bits);
}
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index 00467d513e74d..abb51e8bb9200 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -28,10 +28,6 @@
#include <linux/bits.h>
#include <linux/kref.h>
-#ifndef I915
-#include "xe_bo.h"
-#endif
-
#include "i915_active_types.h"
struct drm_i915_private;
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [Intel-xe] [06/10] revert intel_frontbuffer changes.
2023-10-25 10:20 ` [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes Maarten Lankhorst
@ 2023-10-27 10:17 ` Hogander, Jouni
0 siblings, 0 replies; 14+ messages in thread
From: Hogander, Jouni @ 2023-10-27 10:17 UTC (permalink / raw)
To: intel-xe@lists.freedesktop.org, maarten.lankhorst@linux.intel.com
On Wed, 2023-10-25 at 12:20 +0200, Maarten Lankhorst wrote:
> No functional change, just things removed.
Hello Maarten.
Instead of introducing completely new patch I think you should change
this as a fixup patch for "FIXME: drm/i915/display: Remaining changes
to make xe compile"
BR,
Jouni Högander
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_frontbuffer.c | 7 ++++---
> drivers/gpu/drm/i915/display/intel_frontbuffer.h | 4 ----
> 2 files changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> index d64ce5bfeca82..2ea37c0414a95 100644
> --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> @@ -190,7 +190,7 @@ void __intel_fb_flush(struct intel_frontbuffer
> *front,
> enum fb_op_origin origin,
> unsigned int frontbuffer_bits)
> {
> - struct drm_i915_private *i915 = intel_bo_to_i915((front-
> >obj));
> + struct drm_i915_private *i915 = intel_bo_to_i915(front->obj);
>
> if (origin == ORIGIN_CS) {
> spin_lock(&i915->display.fb_tracking.lock);
> @@ -259,6 +259,7 @@ static void frontbuffer_release(struct kref *ref)
> drm_WARN_ON(&intel_bo_to_i915(obj)->drm, atomic_read(&front-
> >bits));
>
> i915_ggtt_clear_scanout(obj);
> +
> ret = i915_gem_object_set_frontbuffer(obj, NULL);
> drm_WARN_ON(&intel_bo_to_i915(obj)->drm, ret);
> spin_unlock(&intel_bo_to_i915(obj)-
> >display.fb_tracking.lock);
> @@ -289,12 +290,12 @@ intel_frontbuffer_get(struct
> drm_i915_gem_object *obj)
> frontbuffer_retire,
> I915_ACTIVE_RETIRE_SLEEPS);
> INIT_WORK(&front->flush_work, intel_frontbuffer_flush_work);
> +
> spin_lock(&i915->display.fb_tracking.lock);
> cur = i915_gem_object_set_frontbuffer(obj, front);
> spin_unlock(&i915->display.fb_tracking.lock);
> if (cur != front)
> kfree(front);
> -
> return cur;
> }
>
> @@ -337,7 +338,7 @@ void intel_frontbuffer_track(struct
> intel_frontbuffer *old,
> }
>
> if (new) {
> - drm_WARN_ON(&intel_bo_to_i915(old->obj)->drm,
> + drm_WARN_ON(&intel_bo_to_i915(new->obj)->drm,
> atomic_read(&new->bits) &
> frontbuffer_bits);
> atomic_or(frontbuffer_bits, &new->bits);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> index 00467d513e74d..abb51e8bb9200 100644
> --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> @@ -28,10 +28,6 @@
> #include <linux/bits.h>
> #include <linux/kref.h>
>
> -#ifndef I915
> -#include "xe_bo.h"
> -#endif
> -
> #include "i915_active_types.h"
>
> struct drm_i915_private;
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-xe] [PATCH 07/10] Update compat headers.
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
` (5 preceding siblings ...)
2023-10-25 10:20 ` [Intel-xe] [PATCH 06/10] revert intel_frontbuffer changes Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 08/10] more reverts Maarten Lankhorst
` (2 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
Some naughty headers used I915_GEM_OBJECT_H instead of their own name,
fix it.
Update headers to move some stuff out from the messy patch.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
| 2 +
| 58 +++++++++++++++++++
.../gem/i915_gem_object_frontbuffer.h | 4 +-
| 4 +-
| 6 ++
5 files changed, 70 insertions(+), 4 deletions(-)
create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h
--git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
new file mode 100644
index 0000000000000..2f55e7e951e8c
--- /dev/null
+++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
@@ -0,0 +1,2 @@
+/* Empty */
+
--git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h
new file mode 100644
index 0000000000000..5f0545a3a99b1
--- /dev/null
+++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#ifndef _I915_GEM_OBJECT_H_
+#define _I915_GEM_OBJECT_H_
+
+/* For tiling definitions */
+#include <uapi/drm/i915_drm.h>
+
+#undef I915_TILING_X
+#undef I915_TILING_Y
+#define I915_TILING_X 0
+#define I915_TILING_Y 0
+
+#include "xe_bo.h"
+#include <linux/types.h>
+
+static inline int i915_gem_object_read_from_page(struct xe_bo *bo,
+ u32 ofs, u64 *ptr, u32 size)
+{
+ struct ttm_bo_kmap_obj map;
+ void *virtual;
+ bool is_iomem;
+ int ret;
+
+ WARN_ON(size != 8);
+
+ ret = xe_bo_lock(bo, true);
+ if (ret)
+ return ret;
+
+ ret = ttm_bo_kmap(&bo->ttm, ofs >> PAGE_SHIFT, 1, &map);
+ if (ret)
+ goto out_unlock;
+
+ ofs &= ~PAGE_MASK;
+ virtual = ttm_kmap_obj_virtual(&map, &is_iomem);
+ if (is_iomem)
+ *ptr = readq((void __iomem *)(virtual + ofs));
+ else
+ *ptr = *(u64 *)(virtual + ofs);
+
+ ttm_bo_kunmap(&map);
+out_unlock:
+ xe_bo_unlock(bo);
+ return ret;
+}
+
+static inline dma_addr_t i915_gem_object_get_dma_address(const struct xe_bo *bo, pgoff_t n)
+{
+ /* Should never be called */
+ WARN_ON(1);
+ return n;
+}
+
+#endif
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
index 227965e5f7846..6d883aca48b6e 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
@@ -3,8 +3,8 @@
* Copyright © 2022 Intel Corporation
*/
-#ifndef _I915_GEM_OBJECT_H_
-#define _I915_GEM_OBJECT_H_
+#ifndef _I915_GEM_OBJECT_FB_H_
+#define _I915_GEM_OBJECT_FB_H_
#define i915_gem_object_get_frontbuffer(obj) NULL
#define i915_gem_object_set_frontbuffer(obj, front) (front)
--git a/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
index 32f60258ded69..888e7a87a9257 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
@@ -1,5 +1,5 @@
-#ifndef _I915_GEM_OBJECT_H_
-#define _I915_GEM_OBJECT_H_
+#ifndef _I915_GEM_STOLEN_H_
+#define _I915_GEM_STOLEN_H_
#include "xe_ttm_stolen_mgr.h"
#include "xe_res_cursor.h"
--git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
index 9424144b1b5aa..23f2d037c313e 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
@@ -19,4 +19,10 @@ struct i915_vma {
#define i915_ggtt_clear_scanout(bo) do { } while (0)
#define i915_vma_fence_id(vma) -1
+
+static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
+{
+ return vma->node.start;
+}
+
#endif
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [Intel-xe] [PATCH 08/10] more reverts
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
` (6 preceding siblings ...)
2023-10-25 10:20 ` [Intel-xe] [PATCH 07/10] Update compat headers Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 09/10] drm/i915/display: Use i915_gem_object_get_dma_address to get dma address Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 10/10] revert more (fbc) Maarten Lankhorst
9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
---
drivers/gpu/drm/i915/display/intel_cursor.c | 8 ++---
drivers/gpu/drm/i915/display/intel_display.c | 35 -------------------
.../drm/i915/display/intel_display_types.h | 4 ---
.../drm/i915/display/skl_universal_plane.c | 4 ---
4 files changed, 3 insertions(+), 48 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 8ed8a623fa98b..b342fad180ca5 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -30,17 +30,15 @@ static const u32 intel_cursor_formats[] = {
static u32 intel_cursor_base(const struct intel_plane_state *plane_state)
{
- __maybe_unused struct drm_i915_private *dev_priv =
+ struct drm_i915_private *dev_priv =
to_i915(plane_state->uapi.plane->dev);
- __maybe_unused const struct drm_framebuffer *fb = plane_state->hw.fb;
- __maybe_unused const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+ const struct drm_framebuffer *fb = plane_state->hw.fb;
+ const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
u32 base;
-#ifdef I915
if (DISPLAY_INFO(dev_priv)->cursor_needs_physical)
base = sg_dma_address(obj->mm.pages->sgl);
else
-#endif
base = intel_plane_ggtt_offset(plane_state);
return base + plane_state->view.color_plane[0].offset;
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 1b66d5adcebee..2f012ea75fba6 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -42,10 +42,8 @@
#include <drm/drm_probe_helper.h>
#include <drm/drm_rect.h>
-#ifdef I915
#include "gem/i915_gem_lmem.h"
#include "gem/i915_gem_object.h"
-#endif
#include "g4x_dp.h"
#include "g4x_hdmi.h"
@@ -7121,39 +7119,6 @@ static void intel_atomic_cleanup_work(struct work_struct *work)
intel_atomic_helper_free_state(i915);
}
-#ifndef I915
-static int i915_gem_object_read_from_page(struct xe_bo *bo,
- u32 ofs, u64 *ptr, u32 size)
-{
- struct ttm_bo_kmap_obj map;
- void *virtual;
- bool is_iomem;
- int ret;
-
- XE_WARN_ON(size != 8);
-
- ret = xe_bo_lock(bo, true);
- if (ret)
- return ret;
-
- ret = ttm_bo_kmap(&bo->ttm, ofs >> PAGE_SHIFT, 1, &map);
- if (ret)
- goto out_unlock;
-
- ofs &= ~PAGE_MASK;
- virtual = ttm_kmap_obj_virtual(&map, &is_iomem);
- if (is_iomem)
- *ptr = readq((void __iomem *)(virtual + ofs));
- else
- *ptr = *(u64 *)(virtual + ofs);
-
- ttm_bo_kunmap(&map);
-out_unlock:
- xe_bo_unlock(bo);
- return ret;
-}
-#endif
-
static void intel_atomic_prepare_plane_clear_colors(struct intel_atomic_state *state)
{
struct drm_i915_private *i915 = to_i915(state->base.dev);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 1861372077f01..e7d4cdfbd62de 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -2115,11 +2115,7 @@ intel_crtc_needs_color_update(const struct intel_crtc_state *crtc_state)
static inline u32 intel_plane_ggtt_offset(const struct intel_plane_state *plane_state)
{
-#ifdef I915
return i915_ggtt_offset(plane_state->ggtt_vma);
-#else
- return plane_state->ggtt_vma->node.start;
-#endif
}
static inline struct intel_frontbuffer *
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 7d91344ec1aa2..5de0cff00e7d5 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2454,15 +2454,11 @@ skl_get_initial_plane_config(struct intel_crtc *crtc,
fb->modifier = DRM_FORMAT_MOD_LINEAR;
break;
case PLANE_CTL_TILED_X:
-#ifdef I915
plane_config->tiling = I915_TILING_X;
-#endif
fb->modifier = I915_FORMAT_MOD_X_TILED;
break;
case PLANE_CTL_TILED_Y:
-#ifdef I915
plane_config->tiling = I915_TILING_Y;
-#endif
if (val & PLANE_CTL_RENDER_DECOMPRESSION_ENABLE)
if (DISPLAY_VER(dev_priv) >= 14)
fb->modifier = I915_FORMAT_MOD_4_TILED_MTL_RC_CCS;
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [Intel-xe] [PATCH 09/10] drm/i915/display: Use i915_gem_object_get_dma_address to get dma address
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
` (7 preceding siblings ...)
2023-10-25 10:20 ` [Intel-xe] [PATCH 08/10] more reverts Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-25 10:20 ` [Intel-xe] [PATCH 10/10] revert more (fbc) Maarten Lankhorst
9 siblings, 0 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
Works better for xe like that. obj is no longer const.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index b342fad180ca5..0d21c34f74990 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -23,6 +23,8 @@
#include "intel_psr.h"
#include "skl_watermark.h"
+#include "gem/i915_gem_object.h"
+
/* Cursor formats */
static const u32 intel_cursor_formats[] = {
DRM_FORMAT_ARGB8888,
@@ -33,11 +35,11 @@ static u32 intel_cursor_base(const struct intel_plane_state *plane_state)
struct drm_i915_private *dev_priv =
to_i915(plane_state->uapi.plane->dev);
const struct drm_framebuffer *fb = plane_state->hw.fb;
- const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+ struct drm_i915_gem_object *obj = intel_fb_obj(fb);
u32 base;
if (DISPLAY_INFO(dev_priv)->cursor_needs_physical)
- base = sg_dma_address(obj->mm.pages->sgl);
+ base = i915_gem_object_get_dma_address(obj, 0);
else
base = intel_plane_ggtt_offset(plane_state);
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [Intel-xe] [PATCH 10/10] revert more (fbc)
2023-10-25 10:20 [Intel-xe] [PATCH 00/10] Split out most of "FIXME: drm/i915/display: Remaining changes to make xe compile" Maarten Lankhorst
` (8 preceding siblings ...)
2023-10-25 10:20 ` [Intel-xe] [PATCH 09/10] drm/i915/display: Use i915_gem_object_get_dma_address to get dma address Maarten Lankhorst
@ 2023-10-25 10:20 ` Maarten Lankhorst
2023-10-27 10:01 ` [Intel-xe] [10/10] " Hogander, Jouni
9 siblings, 1 reply; 14+ messages in thread
From: Maarten Lankhorst @ 2023-10-25 10:20 UTC (permalink / raw)
To: intel-xe
Should be a noop.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_fbc.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index cd316e0caaa41..713210f6d7c13 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -453,7 +453,6 @@ static void g4x_fbc_program_cfb(struct intel_fbc *fbc)
intel_de_write(i915, DPFC_CB_BASE,
i915_gem_stolen_node_offset(&fbc->compressed_fb));
-
}
static const struct intel_fbc_funcs g4x_fbc_funcs = {
@@ -612,8 +611,10 @@ static void ivb_fbc_activate(struct intel_fbc *fbc)
else if (DISPLAY_VER(i915) == 9)
skl_fbc_program_cfb_stride(fbc);
+#ifdef I915
if (intel_gt_support_legacy_fencing(to_gt(i915)))
snb_fbc_program_fence(fbc);
+#endif
intel_de_write(i915, ILK_DPFC_CONTROL(fbc->id),
DPFC_CTL_EN | ivb_dpfc_ctl(fbc));
@@ -800,7 +801,6 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
drm_dbg_kms(&i915->drm,
"reserved %llu bytes of contiguous stolen space for FBC, limit: %d\n",
i915_gem_stolen_node_size(&fbc->compressed_fb), fbc->limit);
-
return 0;
err_llb:
@@ -978,7 +978,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
struct intel_crtc *crtc,
struct intel_plane *plane)
{
- struct drm_i915_private *i915 = to_i915(state->base.dev);
+ __maybe_unused struct drm_i915_private *i915 = to_i915(state->base.dev);
const struct intel_crtc_state *crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
const struct intel_plane_state *plane_state =
@@ -993,7 +993,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
/* FBC1 compression interval: arbitrary choice of 1 second */
fbc_state->interval = drm_mode_vrefresh(&crtc_state->hw.adjusted_mode);
-
+#ifdef I915
fbc_state->fence_y_offset = intel_plane_fence_y_offset(plane_state);
drm_WARN_ON(&i915->drm, plane_state->flags & PLANE_HAS_FENCE &&
@@ -1002,6 +1002,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
if (plane_state->flags & PLANE_HAS_FENCE)
fbc_state->fence_id = i915_vma_fence_id(plane_state->ggtt_vma);
else
+#endif
fbc_state->fence_id = -1;
fbc_state->cfb_stride = intel_fbc_cfb_stride(plane_state);
@@ -1011,6 +1012,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
{
+#ifdef I915
struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev);
/*
@@ -1028,6 +1030,9 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
return DISPLAY_VER(i915) >= 9 ||
(plane_state->flags & PLANE_HAS_FENCE &&
i915_vma_fence_id(plane_state->ggtt_vma) != -1);
+#else
+ return true;
+#endif
}
static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [Intel-xe] [10/10] revert more (fbc)
2023-10-25 10:20 ` [Intel-xe] [PATCH 10/10] revert more (fbc) Maarten Lankhorst
@ 2023-10-27 10:01 ` Hogander, Jouni
0 siblings, 0 replies; 14+ messages in thread
From: Hogander, Jouni @ 2023-10-27 10:01 UTC (permalink / raw)
To: intel-xe@lists.freedesktop.org, maarten.lankhorst@linux.intel.com
On Wed, 2023-10-25 at 12:20 +0200, Maarten Lankhorst wrote:
> Should be a noop.
Hello Maarten. I couldn't figure out for what branch this patch is
prepared for? All the removed ifdefs in this patch are already removed
earlier. See my (merged) patch set here:
https://patchwork.freedesktop.org/series/122905/
BR,
Jouni Högander
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_fbc.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index cd316e0caaa41..713210f6d7c13 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -453,7 +453,6 @@ static void g4x_fbc_program_cfb(struct intel_fbc
> *fbc)
>
> intel_de_write(i915, DPFC_CB_BASE,
> i915_gem_stolen_node_offset(&fbc-
> >compressed_fb));
> -
> }
>
> static const struct intel_fbc_funcs g4x_fbc_funcs = {
> @@ -612,8 +611,10 @@ static void ivb_fbc_activate(struct intel_fbc
> *fbc)
> else if (DISPLAY_VER(i915) == 9)
> skl_fbc_program_cfb_stride(fbc);
>
> +#ifdef I915
> if (intel_gt_support_legacy_fencing(to_gt(i915)))
> snb_fbc_program_fence(fbc);
> +#endif
>
> intel_de_write(i915, ILK_DPFC_CONTROL(fbc->id),
> DPFC_CTL_EN | ivb_dpfc_ctl(fbc));
> @@ -800,7 +801,6 @@ static int intel_fbc_alloc_cfb(struct intel_fbc
> *fbc,
> drm_dbg_kms(&i915->drm,
> "reserved %llu bytes of contiguous stolen space
> for FBC, limit: %d\n",
> i915_gem_stolen_node_size(&fbc->compressed_fb),
> fbc->limit);
> -
> return 0;
>
> err_llb:
> @@ -978,7 +978,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
> struct intel_crtc *crtc,
> struct intel_plane *plane)
> {
> - struct drm_i915_private *i915 = to_i915(state->base.dev);
> + __maybe_unused struct drm_i915_private *i915 = to_i915(state-
> >base.dev);
> const struct intel_crtc_state *crtc_state =
> intel_atomic_get_new_crtc_state(state, crtc);
> const struct intel_plane_state *plane_state =
> @@ -993,7 +993,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>
> /* FBC1 compression interval: arbitrary choice of 1 second */
> fbc_state->interval = drm_mode_vrefresh(&crtc_state-
> >hw.adjusted_mode);
> -
> +#ifdef I915
> fbc_state->fence_y_offset =
> intel_plane_fence_y_offset(plane_state);
>
> drm_WARN_ON(&i915->drm, plane_state->flags & PLANE_HAS_FENCE
> &&
> @@ -1002,6 +1002,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
> if (plane_state->flags & PLANE_HAS_FENCE)
> fbc_state->fence_id = i915_vma_fence_id(plane_state-
> >ggtt_vma);
> else
> +#endif
> fbc_state->fence_id = -1;
>
> fbc_state->cfb_stride = intel_fbc_cfb_stride(plane_state);
> @@ -1011,6 +1012,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>
> static bool intel_fbc_is_fence_ok(const struct intel_plane_state
> *plane_state)
> {
> +#ifdef I915
> struct drm_i915_private *i915 = to_i915(plane_state-
> >uapi.plane->dev);
>
> /*
> @@ -1028,6 +1030,9 @@ static bool intel_fbc_is_fence_ok(const struct
> intel_plane_state *plane_state)
> return DISPLAY_VER(i915) >= 9 ||
> (plane_state->flags & PLANE_HAS_FENCE &&
> i915_vma_fence_id(plane_state->ggtt_vma) != -1);
> +#else
> + return true;
> +#endif
> }
>
> static bool intel_fbc_is_cfb_ok(const struct intel_plane_state
> *plane_state)
^ permalink raw reply [flat|nested] 14+ messages in thread