Commit d59b21ec authored by Chris Wilson's avatar Chris Wilson

drm/i915: Remove 'retire' parameter from intel_fb_obj_flush

Setting retire=true is identical to using origin=ORIGIN_CS, so make the
same simplification to intel_fb_obj_flush() as already employed for
intel_fb_obj_invalidate().
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170222114049.28456-6-chris@chris-wilson.co.uk
parent 57822dc6
...@@ -628,7 +628,7 @@ i915_gem_phys_pwrite(struct drm_i915_gem_object *obj, ...@@ -628,7 +628,7 @@ i915_gem_phys_pwrite(struct drm_i915_gem_object *obj,
drm_clflush_virt_range(vaddr, args->size); drm_clflush_virt_range(vaddr, args->size);
i915_gem_chipset_flush(to_i915(obj->base.dev)); i915_gem_chipset_flush(to_i915(obj->base.dev));
intel_fb_obj_flush(obj, false, ORIGIN_CPU); intel_fb_obj_flush(obj, ORIGIN_CPU);
return 0; return 0;
} }
...@@ -1275,7 +1275,7 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj, ...@@ -1275,7 +1275,7 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj,
user_data += page_length; user_data += page_length;
offset += page_length; offset += page_length;
} }
intel_fb_obj_flush(obj, false, ORIGIN_CPU); intel_fb_obj_flush(obj, ORIGIN_CPU);
mutex_lock(&i915->drm.struct_mutex); mutex_lock(&i915->drm.struct_mutex);
out_unpin: out_unpin:
...@@ -1411,7 +1411,7 @@ i915_gem_shmem_pwrite(struct drm_i915_gem_object *obj, ...@@ -1411,7 +1411,7 @@ i915_gem_shmem_pwrite(struct drm_i915_gem_object *obj,
offset = 0; offset = 0;
} }
intel_fb_obj_flush(obj, false, ORIGIN_CPU); intel_fb_obj_flush(obj, ORIGIN_CPU);
i915_gem_obj_finish_shmem_access(obj); i915_gem_obj_finish_shmem_access(obj);
return ret; return ret;
} }
...@@ -3162,7 +3162,7 @@ i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj) ...@@ -3162,7 +3162,7 @@ i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj)
if (INTEL_GEN(dev_priv) >= 6 && !HAS_LLC(dev_priv)) if (INTEL_GEN(dev_priv) >= 6 && !HAS_LLC(dev_priv))
POSTING_READ(RING_ACTHD(dev_priv->engine[RCS]->mmio_base)); POSTING_READ(RING_ACTHD(dev_priv->engine[RCS]->mmio_base));
intel_fb_obj_flush(obj, false, write_origin(obj, I915_GEM_DOMAIN_GTT)); intel_fb_obj_flush(obj, write_origin(obj, I915_GEM_DOMAIN_GTT));
obj->base.write_domain = 0; obj->base.write_domain = 0;
} }
...@@ -3552,7 +3552,7 @@ i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object *obj, ...@@ -3552,7 +3552,7 @@ i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object *obj,
/* Treat this as an end-of-frame, like intel_user_framebuffer_dirty() */ /* Treat this as an end-of-frame, like intel_user_framebuffer_dirty() */
__i915_gem_object_flush_for_display(obj); __i915_gem_object_flush_for_display(obj);
intel_fb_obj_flush(obj, false, ORIGIN_DIRTYFB); intel_fb_obj_flush(obj, ORIGIN_DIRTYFB);
/* It should now be out of any other write domains, and we can update /* It should now be out of any other write domains, and we can update
* the domain values for our changes. * the domain values for our changes.
...@@ -3953,7 +3953,7 @@ frontbuffer_retire(struct i915_gem_active *active, ...@@ -3953,7 +3953,7 @@ frontbuffer_retire(struct i915_gem_active *active,
struct drm_i915_gem_object *obj = struct drm_i915_gem_object *obj =
container_of(active, typeof(*obj), frontbuffer_write); container_of(active, typeof(*obj), frontbuffer_write);
intel_fb_obj_flush(obj, true, ORIGIN_CS); intel_fb_obj_flush(obj, ORIGIN_CS);
} }
void i915_gem_object_init(struct drm_i915_gem_object *obj, void i915_gem_object_init(struct drm_i915_gem_object *obj,
......
...@@ -74,7 +74,7 @@ static void __i915_do_clflush(struct drm_i915_gem_object *obj) ...@@ -74,7 +74,7 @@ static void __i915_do_clflush(struct drm_i915_gem_object *obj)
drm_clflush_sg(obj->mm.pages); drm_clflush_sg(obj->mm.pages);
obj->cache_dirty = false; obj->cache_dirty = false;
intel_fb_obj_flush(obj, false, ORIGIN_CPU); intel_fb_obj_flush(obj, ORIGIN_CPU);
} }
static void i915_clflush_work(struct work_struct *work) static void i915_clflush_work(struct work_struct *work)
......
...@@ -14285,7 +14285,7 @@ static int intel_user_framebuffer_dirty(struct drm_framebuffer *fb, ...@@ -14285,7 +14285,7 @@ static int intel_user_framebuffer_dirty(struct drm_framebuffer *fb,
struct drm_i915_gem_object *obj = intel_fb_obj(fb); struct drm_i915_gem_object *obj = intel_fb_obj(fb);
i915_gem_object_flush_if_display(obj); i915_gem_object_flush_if_display(obj);
intel_fb_obj_flush(obj, false, ORIGIN_DIRTYFB); intel_fb_obj_flush(obj, ORIGIN_DIRTYFB);
return 0; return 0;
} }
......
...@@ -114,13 +114,12 @@ static void intel_frontbuffer_flush(struct drm_i915_private *dev_priv, ...@@ -114,13 +114,12 @@ static void intel_frontbuffer_flush(struct drm_i915_private *dev_priv,
} }
void __intel_fb_obj_flush(struct drm_i915_gem_object *obj, void __intel_fb_obj_flush(struct drm_i915_gem_object *obj,
bool retire,
enum fb_op_origin origin, enum fb_op_origin origin,
unsigned int frontbuffer_bits) unsigned int frontbuffer_bits)
{ {
struct drm_i915_private *dev_priv = to_i915(obj->base.dev); struct drm_i915_private *dev_priv = to_i915(obj->base.dev);
if (retire) { if (origin == ORIGIN_CS) {
spin_lock(&dev_priv->fb_tracking.lock); spin_lock(&dev_priv->fb_tracking.lock);
/* Filter out new bits since rendering started. */ /* Filter out new bits since rendering started. */
frontbuffer_bits &= dev_priv->fb_tracking.busy_bits; frontbuffer_bits &= dev_priv->fb_tracking.busy_bits;
......
...@@ -38,7 +38,6 @@ void __intel_fb_obj_invalidate(struct drm_i915_gem_object *obj, ...@@ -38,7 +38,6 @@ void __intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
enum fb_op_origin origin, enum fb_op_origin origin,
unsigned int frontbuffer_bits); unsigned int frontbuffer_bits);
void __intel_fb_obj_flush(struct drm_i915_gem_object *obj, void __intel_fb_obj_flush(struct drm_i915_gem_object *obj,
bool retire,
enum fb_op_origin origin, enum fb_op_origin origin,
unsigned int frontbuffer_bits); unsigned int frontbuffer_bits);
...@@ -69,15 +68,12 @@ static inline bool intel_fb_obj_invalidate(struct drm_i915_gem_object *obj, ...@@ -69,15 +68,12 @@ static inline bool intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
/** /**
* intel_fb_obj_flush - flush frontbuffer object * intel_fb_obj_flush - flush frontbuffer object
* @obj: GEM object to flush * @obj: GEM object to flush
* @retire: set when retiring asynchronous rendering
* @origin: which operation caused the flush * @origin: which operation caused the flush
* *
* This function gets called every time rendering on the given object has * This function gets called every time rendering on the given object has
* completed and frontbuffer caching can be started again. If @retire is true * completed and frontbuffer caching can be started again.
* then any delayed flushes will be unblocked.
*/ */
static inline void intel_fb_obj_flush(struct drm_i915_gem_object *obj, static inline void intel_fb_obj_flush(struct drm_i915_gem_object *obj,
bool retire,
enum fb_op_origin origin) enum fb_op_origin origin)
{ {
unsigned int frontbuffer_bits; unsigned int frontbuffer_bits;
...@@ -86,7 +82,7 @@ static inline void intel_fb_obj_flush(struct drm_i915_gem_object *obj, ...@@ -86,7 +82,7 @@ static inline void intel_fb_obj_flush(struct drm_i915_gem_object *obj,
if (!frontbuffer_bits) if (!frontbuffer_bits)
return; return;
__intel_fb_obj_flush(obj, retire, origin, frontbuffer_bits); __intel_fb_obj_flush(obj, origin, frontbuffer_bits);
} }
#endif /* __INTEL_FRONTBUFFER_H__ */ #endif /* __INTEL_FRONTBUFFER_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment