aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 8a439f0c21f5..fb0538358c34 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3122,6 +3122,19 @@ i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object *obj,
3122 return ret; 3122 return ret;
3123 } 3123 }
3124 3124
3125 /* The display engine is not coherent with the LLC cache on gen6. As
3126 * a result, we make sure that the pinning that is about to occur is
3127 * done with uncached PTEs. This is lowest common denominator for all
3128 * chipsets.
3129 *
3130 * However for gen6+, we could do better by using the GFDT bit instead
3131 * of uncaching, which would allow us to flush all the LLC-cached data
3132 * with that bit in the PTE to main memory with just one PIPE_CONTROL.
3133 */
3134 ret = i915_gem_object_set_cache_level(obj, I915_CACHE_NONE);
3135 if (ret)
3136 return ret;
3137
3125 /* As the user may map the buffer once pinned in the display plane 3138 /* As the user may map the buffer once pinned in the display plane
3126 * (e.g. libkms for the bootup splash), we have to ensure that we 3139 * (e.g. libkms for the bootup splash), we have to ensure that we
3127 * always use map_and_fenceable for all scanout buffers. 3140 * always use map_and_fenceable for all scanout buffers.