mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-01 03:11:59 +00:00
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: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170222114049.28456-6-chris@chris-wilson.co.uk
This commit is contained in:
parent
57822dc6b9
commit
d59b21ec6f
5 changed files with 11 additions and 16 deletions
|
@ -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,
|
||||||
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,
|
||||||
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)
|
||||||
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,
|
||||||
|
|
||||||
/* 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,
|
||||||
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)
|
||||||
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,
|
||||||
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,
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
/**
|
/**
|
||||||
* 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,
|
||||||
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__ */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue