Loading drivers/char/drm/i915_drv.h +2 −0 Original line number Diff line number Diff line Loading @@ -566,6 +566,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); #define XY_SRC_COPY_BLT_CMD ((2<<29)|(0x53<<22)|6) #define XY_SRC_COPY_BLT_WRITE_ALPHA (1<<21) #define XY_SRC_COPY_BLT_WRITE_RGB (1<<20) #define XY_SRC_COPY_BLT_SRC_TILED (1<<15) #define XY_SRC_COPY_BLT_DST_TILED (1<<11) #define MI_BATCH_BUFFER ((0x30<<23)|1) #define MI_BATCH_BUFFER_START (0x31<<23) Loading drivers/char/drm/i915_irq.c +14 −4 Original line number Diff line number Diff line Loading @@ -57,10 +57,20 @@ static void i915_vblank_tasklet(struct drm_device *dev) XY_SRC_COPY_BLT_WRITE_ALPHA | XY_SRC_COPY_BLT_WRITE_RGB) : XY_SRC_COPY_BLT_CMD; u32 pitchropcpp = (sarea_priv->pitch * cpp) | (0xcc << 16) | (cpp << 23) | (1 << 24); u32 src_pitch = sarea_priv->pitch * cpp; u32 dst_pitch = sarea_priv->pitch * cpp; u32 ropcpp = (0xcc << 16) | ((cpp - 1) << 24); RING_LOCALS; if (sarea_priv->front_tiled) { cmd |= XY_SRC_COPY_BLT_DST_TILED; dst_pitch >>= 2; } if (sarea_priv->back_tiled) { cmd |= XY_SRC_COPY_BLT_SRC_TILED; src_pitch >>= 2; } DRM_DEBUG("\n"); INIT_LIST_HEAD(&hits); Loading Loading @@ -194,12 +204,12 @@ static void i915_vblank_tasklet(struct drm_device *dev) BEGIN_LP_RING(8); OUT_RING(cmd); OUT_RING(pitchropcpp); OUT_RING(ropcpp | dst_pitch); OUT_RING((y1 << 16) | rect->x1); OUT_RING((y2 << 16) | rect->x2); OUT_RING(sarea_priv->front_offset); OUT_RING((y1 << 16) | rect->x1); OUT_RING(pitchropcpp & 0xffff); OUT_RING(src_pitch); OUT_RING(sarea_priv->back_offset); ADVANCE_LP_RING(); Loading Loading
drivers/char/drm/i915_drv.h +2 −0 Original line number Diff line number Diff line Loading @@ -566,6 +566,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); #define XY_SRC_COPY_BLT_CMD ((2<<29)|(0x53<<22)|6) #define XY_SRC_COPY_BLT_WRITE_ALPHA (1<<21) #define XY_SRC_COPY_BLT_WRITE_RGB (1<<20) #define XY_SRC_COPY_BLT_SRC_TILED (1<<15) #define XY_SRC_COPY_BLT_DST_TILED (1<<11) #define MI_BATCH_BUFFER ((0x30<<23)|1) #define MI_BATCH_BUFFER_START (0x31<<23) Loading
drivers/char/drm/i915_irq.c +14 −4 Original line number Diff line number Diff line Loading @@ -57,10 +57,20 @@ static void i915_vblank_tasklet(struct drm_device *dev) XY_SRC_COPY_BLT_WRITE_ALPHA | XY_SRC_COPY_BLT_WRITE_RGB) : XY_SRC_COPY_BLT_CMD; u32 pitchropcpp = (sarea_priv->pitch * cpp) | (0xcc << 16) | (cpp << 23) | (1 << 24); u32 src_pitch = sarea_priv->pitch * cpp; u32 dst_pitch = sarea_priv->pitch * cpp; u32 ropcpp = (0xcc << 16) | ((cpp - 1) << 24); RING_LOCALS; if (sarea_priv->front_tiled) { cmd |= XY_SRC_COPY_BLT_DST_TILED; dst_pitch >>= 2; } if (sarea_priv->back_tiled) { cmd |= XY_SRC_COPY_BLT_SRC_TILED; src_pitch >>= 2; } DRM_DEBUG("\n"); INIT_LIST_HEAD(&hits); Loading Loading @@ -194,12 +204,12 @@ static void i915_vblank_tasklet(struct drm_device *dev) BEGIN_LP_RING(8); OUT_RING(cmd); OUT_RING(pitchropcpp); OUT_RING(ropcpp | dst_pitch); OUT_RING((y1 << 16) | rect->x1); OUT_RING((y2 << 16) | rect->x2); OUT_RING(sarea_priv->front_offset); OUT_RING((y1 << 16) | rect->x1); OUT_RING(pitchropcpp & 0xffff); OUT_RING(src_pitch); OUT_RING(sarea_priv->back_offset); ADVANCE_LP_RING(); Loading