diff options
| author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-07-20 12:41:08 +0100 | 
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-07-25 18:23:55 +0200 | 
| commit | a7b9761d0a2ded58170ffb4d423ff3d7228103f4 (patch) | |
| tree | 46e5869a943be88f3068573d273f38f5a0372bcd /drivers/gpu/drm/i915/intel_ringbuffer.c | |
| parent | 016fd0c1aee31902d82c1ac32312f1cc32298b66 (diff) | |
| download | olio-linux-3.10-a7b9761d0a2ded58170ffb4d423ff3d7228103f4.tar.xz olio-linux-3.10-a7b9761d0a2ded58170ffb4d423ff3d7228103f4.zip  | |
drm/i915: Split i915_gem_flush_ring() into seperate invalidate/flush funcs
By moving the function to intel_ringbuffer and currying the appropriate
parameter, hopefully we make the callsites easier to read and
understand.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 8f221d9a7bd..8b7085e4cf8 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -1564,3 +1564,41 @@ int intel_init_blt_ring_buffer(struct drm_device *dev)  	return intel_init_ring_buffer(dev, ring);  } + +int +intel_ring_flush_all_caches(struct intel_ring_buffer *ring) +{ +	int ret; + +	if (!ring->gpu_caches_dirty) +		return 0; + +	ret = ring->flush(ring, 0, I915_GEM_GPU_DOMAINS); +	if (ret) +		return ret; + +	trace_i915_gem_ring_flush(ring, 0, I915_GEM_GPU_DOMAINS); + +	ring->gpu_caches_dirty = false; +	return 0; +} + +int +intel_ring_invalidate_all_caches(struct intel_ring_buffer *ring) +{ +	uint32_t flush_domains; +	int ret; + +	flush_domains = 0; +	if (ring->gpu_caches_dirty) +		flush_domains = I915_GEM_GPU_DOMAINS; + +	ret = ring->flush(ring, I915_GEM_GPU_DOMAINS, flush_domains); +	if (ret) +		return ret; + +	trace_i915_gem_ring_flush(ring, I915_GEM_GPU_DOMAINS, flush_domains); + +	ring->gpu_caches_dirty = false; +	return 0; +}  |