[Intel-gfx] [PATCH v3 20/25] drm/i915: Use LRI based FBC render tracking for ILK
ville.syrjala at linux.intel.com
ville.syrjala at linux.intel.com
Wed Jun 18 19:58:53 CEST 2014
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
ILK should work pretty much the same as SNB, except it
doesn't have the blitter, so we only care about render tracking.
v2: Rebased against earlier changes
v3: Rebased due to fbc.obj changes
Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
drivers/gpu/drm/i915/i915_reg.h | 2 +-
drivers/gpu/drm/i915/intel_pm.c | 3 ---
drivers/gpu/drm/i915/intel_ringbuffer.c | 5 ++++-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 78310c1..f0caab3 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1503,7 +1503,7 @@ enum punit_power_well {
#define ILK_DPFC_CHICKEN 0x43224
#define ILK_FBC_RT_BASE 0x2128
#define ILK_FBC_RT_VALID (1<<0)
-#define SNB_FBC_FRONT_BUFFER (1<<1)
+#define ILK_FBC_FRONT_BUFFER (1<<1)
#define ILK_DISPLAY_CHICKEN1 0x42000
#define ILK_FBCQ_DIS (1<<22)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index a5d3d9f..3bde3ce 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -204,9 +204,6 @@ static void ironlake_enable_fbc(struct drm_device *dev)
dpfc_ctl |= dev_priv->fbc.fence_reg;
I915_WRITE(ILK_DPFC_FENCE_YOFF, dev_priv->fbc.y);
- if (IS_GEN5(dev))
- I915_WRITE(ILK_FBC_RT_BASE, i915_gem_obj_ggtt_offset(dev_priv->fbc.obj) |
- ILK_FBC_RT_VALID);
/* enable it... */
I915_WRITE(ILK_DPFC_CONTROL, dpfc_ctl | DPFC_CTL_EN);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index d19738a..dbfa280 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -85,7 +85,7 @@ static int gen5_render_fbc_tracking(struct intel_engine_cs *ring)
intel_ring_emit(ring, ILK_FBC_RT_BASE);
if (ring->fbc_address != -1)
intel_ring_emit(ring, ring->fbc_address |
- SNB_FBC_FRONT_BUFFER | ILK_FBC_RT_VALID);
+ ILK_FBC_FRONT_BUFFER | ILK_FBC_RT_VALID);
else
intel_ring_emit(ring, 0);
intel_ring_advance(ring);
@@ -201,6 +201,9 @@ gen4_render_ring_flush(struct intel_engine_cs *ring,
intel_ring_emit(ring, MI_NOOP);
intel_ring_advance(ring);
+ if (invalidate_domains && IS_GEN5(dev))
+ return gen5_render_fbc_tracking(ring);
+
return 0;
}
--
1.8.5.5
More information about the Intel-gfx
mailing list