* [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
* Re: [PATCH] drm/i915/skl: Disallow tiling changes during page flip
2015-04-21 12:45 [PATCH] drm/i915/skl: Disallow tiling changes during page flip Tvrtko Ursulin
@ 2015-04-21 17:09 ` shuang.he
0 siblings, 0 replies; 2+ messages in thread
From: shuang.he @ 2015-04-21 17:09 UTC (permalink / raw)
To: shuang.he, ethan.gao, intel-gfx, tvrtko.ursulin
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 6244
-------------------------------------Summary-------------------------------------
Platform Delta drm-intel-nightly Series Applied
PNV 276/276 276/276
ILK 302/302 302/302
SNB 318/318 318/318
IVB 341/341 341/341
BYT 287/287 287/287
BDW 318/318 318/318
-------------------------------------Detailed-------------------------------------
Platform Test drm-intel-nightly Series Applied
Note: You need to pay more attention to line start with '*'
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.