drm/i915/fbc: Allow FBC to recompress after a 3D workload on i85x/i865
Normally i85x/i865 3D activity will block FBC until a 2D blit occurs. I suppose this was meant to avoid recompression while 3D activity is still going on but the frame hasn't yet been presented. Unfortunately that also means that a page flipped 3D workload will permanently block FBC even if it only renders a single frame and then does nothing. Since we are using software render tracking anyway we might as well flip the chicken bit so that 3D does not block FBC. This will avoid the permament FBC blockage in the aforemention use case, but thanks to the software tracking the compressor will not disturb 3D rendering activity. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200702153723.24327-5-ville.syrjala@linux.intel.com Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
This commit is contained in:
@@ -7471,6 +7471,16 @@ static void i85x_init_clock_gating(struct drm_i915_private *dev_priv)
|
||||
|
||||
I915_WRITE(MEM_MODE,
|
||||
_MASKED_BIT_ENABLE(MEM_DISPLAY_TRICKLE_FEED_DISABLE));
|
||||
|
||||
/*
|
||||
* Have FBC ignore 3D activity since we use software
|
||||
* render tracking, and otherwise a pure 3D workload
|
||||
* (even if it just renders a single frame and then does
|
||||
* abosultely nothing) would not allow FBC to recompress
|
||||
* until a 2D blit occurs.
|
||||
*/
|
||||
I915_WRITE(SCPD0,
|
||||
_MASKED_BIT_ENABLE(SCPD_FBC_IGNORE_3D));
|
||||
}
|
||||
|
||||
static void i830_init_clock_gating(struct drm_i915_private *dev_priv)
|
||||
|
Reference in New Issue
Block a user