On Tue, Nov 08, 2016 at 04:04:23PM +0000, Chris Wilson wrote: > On Tue, Nov 08, 2016 at 04:47:16PM +0200, ville.syrj...@linux.intel.com wrote: > > From: Ville Syrjälä <ville.syrj...@linux.intel.com> > > > > Use intel_plane->id to derive the VLV/CHV sprite register offsets > > instead of abusing plane->plane which is really meant to for > > primary planes only. > > > > Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com> > > --- > > drivers/gpu/drm/i915/i915_reg.h | 58 ++++++++++++++++------------- > > drivers/gpu/drm/i915/intel_sprite.c | 74 > > ++++++++++++++++++------------------- > > 2 files changed, 69 insertions(+), 63 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > > b/drivers/gpu/drm/i915/i915_reg.h > > index 3361d7ffc63e..9739e97c6263 100644 > > --- a/drivers/gpu/drm/i915/i915_reg.h > > +++ b/drivers/gpu/drm/i915/i915_reg.h > > @@ -5374,18 +5374,21 @@ enum { > > #define _SPBCONSTALPHA (VLV_DISPLAY_BASE + 0x722a8) > > #define _SPBGAMC (VLV_DISPLAY_BASE + 0x722f4) > > > > -#define SPCNTR(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPACNTR, > > _SPBCNTR) > > -#define SPLINOFF(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPALINOFF, > > _SPBLINOFF) > > -#define SPSTRIDE(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPASTRIDE, > > _SPBSTRIDE) > > -#define SPPOS(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPAPOS, > > _SPBPOS) > > -#define SPSIZE(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPASIZE, > > _SPBSIZE) > > -#define SPKEYMINVAL(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), > > _SPAKEYMINVAL, _SPBKEYMINVAL) > > -#define SPKEYMSK(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPAKEYMSK, > > _SPBKEYMSK) > > -#define SPSURF(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPASURF, > > _SPBSURF) > > -#define SPKEYMAXVAL(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), > > _SPAKEYMAXVAL, _SPBKEYMAXVAL) > > -#define SPTILEOFF(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), > > _SPATILEOFF, _SPBTILEOFF) > > -#define SPCONSTALPHA(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), > > _SPACONSTALPHA, _SPBCONSTALPHA) > > -#define SPGAMC(pipe, plane) _MMIO_PIPE((pipe) * 2 + (plane), _SPAGAMC, > > _SPBGAMC) > > +#define _MMIO_VLV_SPR(pipe, plane, reg_a, reg_b) \ > > + _MMIO_PIPE((pipe) * 2 + (plane) - PLANE_SPRITE0, (reg_a), (reg_b)) > > #define _MMIO_VLV_SPR(pipe, plane, reg_a, reg_b) ({ > typecheck(enum pipe, pipe); > typecheck(enum plane_id, plane); > _MMIO_PIPE((pipe) * 2 + (plane) - PLANE_SPRITE0, (reg_a), (reg_b)) > )} > > Does that work?
Not really. The enum gets turned into a signed or unsigned int it seems. Which one depends on whether it has negative values or not. But while playing with this I did notice that I forgot to convert assert_sprites_disabled() at least. So this wasn't a totally wasted exercise :) -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx