Re: [Intel-gfx] [PATCH 09/12] Do more checks for proposed flip pixmaps

2014-08-03 Thread Eric Anholt
Keith Packard kei...@keithp.com writes:

 Make sure the pitch and tiling are correct.
 Make sure there's a BO we can get at.

I thought we couldn't change these parameters, but now I can't find what
prevents them from changing.  Can you cite sources?


pgpAYiuAwpzYm.pgp
Description: PGP signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 09/12] Do more checks for proposed flip pixmaps

2014-07-31 Thread Keith Packard
Eric Anholt e...@anholt.net writes:

 Keith Packard kei...@keithp.com writes:

 Make sure the pitch and tiling are correct.
 Make sure there's a BO we can get at.

 I thought we couldn't change these parameters, but now I can't find what
 prevents them from changing.  Can you cite sources?

Looks like we *can* change tiling format. That actually makes me kinda
happy as that explains why we were able to allocate a linear frame
buffer for the X front buffer (due to a bug) and page flip to DRI3
buffers which are always tiled.

However, we can't change the pitch. From the kernel driver:

/*
 * TILEOFF/LINOFF registers can't be changed via MI display flips.
 * Note that pitch changes could also affect these register.
 */
if (INTEL_INFO(dev)-gen  3 
(fb-offsets[0] != crtc-primary-fb-offsets[0] ||
 fb-pitches[0] != crtc-primary-fb-pitches[0]))
return -EINVAL;

I'll remove the tiling check.

-- 
keith.pack...@intel.com


pgpuPa0GqaUNw.pgp
Description: PGP signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 09/12] Do more checks for proposed flip pixmaps

2014-07-31 Thread Ville Syrjälä
On Wed, Jul 30, 2014 at 11:01:48PM -0700, Keith Packard wrote:
 Eric Anholt e...@anholt.net writes:
 
  Keith Packard kei...@keithp.com writes:
 
  Make sure the pitch and tiling are correct.
  Make sure there's a BO we can get at.
 
  I thought we couldn't change these parameters, but now I can't find what
  prevents them from changing.  Can you cite sources?
 
 Looks like we *can* change tiling format. That actually makes me kinda
 happy as that explains why we were able to allocate a linear frame
 buffer for the X front buffer (due to a bug) and page flip to DRI3
 buffers which are always tiled.
 
 However, we can't change the pitch. From the kernel driver:
 
   /*
* TILEOFF/LINOFF registers can't be changed via MI display flips.
* Note that pitch changes could also affect these register.
*/
   if (INTEL_INFO(dev)-gen  3 
   (fb-offsets[0] != crtc-primary-fb-offsets[0] ||
fb-pitches[0] != crtc-primary-fb-pitches[0]))
   return -EINVAL;
 
 I'll remove the tiling check.

Now that we have mmio flips in the kernel we can start to relax that
restriction. That still needs a bit more work in the mmio flip code
but I believe some people working on just that.

We could even change the pixel format, except a check was added to
drm_mode_page_flip_ioctl() to prevent that, so I guess it was
deemed that the API isn't meant to allow that.

-- 
Ville Syrjälä
Intel OTC
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 09/12] Do more checks for proposed flip pixmaps

2014-07-31 Thread Keith Packard
Ville Syrjälä ville.syrj...@linux.intel.com writes:

 Now that we have mmio flips in the kernel we can start to relax that
 restriction. That still needs a bit more work in the mmio flip code
 but I believe some people working on just that.

I couldn't find any tiling restrictions in the current (ring-based) flip
code; did I just miss them?

 We could even change the pixel format, except a check was added to
 drm_mode_page_flip_ioctl() to prevent that, so I guess it was
 deemed that the API isn't meant to allow that.

Yeah, not sure I care about this; 32bpp is pretty much the only format I
want.

-- 
keith.pack...@intel.com


pgp6ASLSyQNPR.pgp
Description: PGP signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 09/12] Do more checks for proposed flip pixmaps

2014-07-31 Thread Ville Syrjälä
On Thu, Jul 31, 2014 at 08:20:20AM -0700, Keith Packard wrote:
 Ville Syrjälä ville.syrj...@linux.intel.com writes:
 
  Now that we have mmio flips in the kernel we can start to relax that
  restriction. That still needs a bit more work in the mmio flip code
  but I believe some people working on just that.
 
 I couldn't find any tiling restrictions in the current (ring-based) flip
 code; did I just miss them?

No, changing tiling is supposed to work via cs flips. Except it
doesn't actually work on VLV for some reason. We now fall back to
mmio flip on VLV for that, so given a recent enough kernel it should
just work (tm) on all platforms.

I was referring to the relaxing the restrictions on stride changes.

 
  We could even change the pixel format, except a check was added to
  drm_mode_page_flip_ioctl() to prevent that, so I guess it was
  deemed that the API isn't meant to allow that.
 
 Yeah, not sure I care about this; 32bpp is pretty much the only format I
 want.

You just need to be careful with the X vs. A because the kernel
considers those distinct pixel formats. I now regret adding that
distinciton to the pixel formats, but sadly I don't own a time
machine so I can't undo it.

-- 
Ville Syrjälä
Intel OTC
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 09/12] Do more checks for proposed flip pixmaps

2014-07-24 Thread Keith Packard
Make sure the pitch and tiling are correct.
Make sure there's a BO we can get at.

Signed-off-by: Keith Packard kei...@keithp.com
---
 src/uxa/intel_present.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/src/uxa/intel_present.c b/src/uxa/intel_present.c
index c53d71d..b901fb1 100644
--- a/src/uxa/intel_present.c
+++ b/src/uxa/intel_present.c
@@ -248,6 +248,8 @@ intel_present_check_flip(RRCrtcPtr  crtc,
ScreenPtr   screen = window-drawable.pScreen;
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
intel_screen_private*intel = intel_get_screen_private(scrn);
+dri_bo  *bo;
+uint32_ttiling, swizzle;
 
if (!scrn-vtSema)
return FALSE;
@@ -261,6 +263,22 @@ intel_present_check_flip(RRCrtcPtr  crtc,
if (crtc  !intel_crtc_on(crtc-devPrivate))
return FALSE;
 
+/* Check stride, can't change that on flip */
+if (pixmap-devKind != intel-front_pitch)
+return FALSE;
+
+/* Make sure there's a bo we can get to */
+bo = intel_get_pixmap_bo(pixmap);
+if (!bo)
+return FALSE;
+
+/* Check tiling, can't change that on flip */
+if (drm_intel_bo_get_tiling((drm_intel_bo *) bo, tiling, swizzle) != 
0)
+return FALSE;
+
+if (tiling != intel-front_tiling)
+return FALSE;
+
return TRUE;
 }
 
-- 
2.0.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx