* [PATCH] drm/i915/skl: Disallow tiling changes during page flip
@ 2015-04-21 12:45 Tvrtko Ursulin
2015-04-21 17:09 ` shuang.he
0 siblings, 1 reply; 2+ messages in thread
From: Tvrtko Ursulin @ 2015-04-21 12:45 UTC (permalink / raw)
To: Intel-gfx; +Cc: Daniel Vetter
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
It would require watermark reprogramming which we do not want to do.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Cc: Damien Lespiau <damien.lespiau@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
Why do we not want to reprogram wms?
This doesn't do anything about rotation. I don't see how to do it with the
current design since old/new property is in plane state not available in
page flip.
And we don't have a callback for set property since drm core eats it up.
Perhaps it would also be a more flexible design to use the helper pattern
there? To allow drivers to handle common properties on their own if they
want to. This way we could remember to reprogram wm, if we wanted to in
the first place.
P.S. The DDX handles this page flip failure nicely.
---
drivers/gpu/drm/i915/intel_display.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 0ed181e..e101a9e 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -10646,6 +10646,15 @@ void intel_check_page_flip(struct drm_device *dev, int pipe)
spin_unlock(&dev->event_lock);
}
+static bool intel_is_y_tiled(uint64_t fb_modifier)
+{
+ if (fb_modifier == I915_FORMAT_MOD_Y_TILED ||
+ fb_modifier == I915_FORMAT_MOD_Yf_TILED)
+ return true;
+
+ return false;
+}
+
static int intel_crtc_page_flip(struct drm_crtc *crtc,
struct drm_framebuffer *fb,
struct drm_pending_vblank_event *event,
@@ -10775,6 +10784,14 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
+ intel_crtc->dspaddr_offset;
if (mmio_flip) {
+ /* Temporarily embedding knowledge of disallowed tiling mode
+ * transition which would require watermark reprogramming.
+ */
+ if (intel_is_y_tiled(old_fb->modifier[0]) !=
+ intel_is_y_tiled(fb->modifier[0])) {
+ ret = -EINVAL;
+ goto cleanup_unpin;
+ }
ret = intel_queue_mmio_flip(dev, crtc, fb, obj, ring,
page_flip_flags);
if (ret)
--
2.3.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-04-21 17:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-21 12:45 [PATCH] drm/i915/skl: Disallow tiling changes during page flip Tvrtko Ursulin
2015-04-21 17:09 ` shuang.he
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox