• Home
  • Raw
  • Download

Lines Matching refs:fence

60 static void i965_write_fence_reg(struct drm_i915_fence_reg *fence,  in i965_write_fence_reg()  argument
67 if (INTEL_INFO(fence->i915)->gen >= 6) { in i965_write_fence_reg()
68 fence_reg_lo = FENCE_REG_GEN6_LO(fence->id); in i965_write_fence_reg()
69 fence_reg_hi = FENCE_REG_GEN6_HI(fence->id); in i965_write_fence_reg()
73 fence_reg_lo = FENCE_REG_965_LO(fence->id); in i965_write_fence_reg()
74 fence_reg_hi = FENCE_REG_965_HI(fence->id); in i965_write_fence_reg()
96 struct drm_i915_private *dev_priv = fence->i915; in i965_write_fence_reg()
116 static void i915_write_fence_reg(struct drm_i915_fence_reg *fence, in i915_write_fence_reg() argument
132 if (is_y_tiled && HAS_128_BYTE_Y_TILING(fence->i915)) in i915_write_fence_reg()
148 struct drm_i915_private *dev_priv = fence->i915; in i915_write_fence_reg()
149 i915_reg_t reg = FENCE_REG(fence->id); in i915_write_fence_reg()
156 static void i830_write_fence_reg(struct drm_i915_fence_reg *fence, in i830_write_fence_reg() argument
180 struct drm_i915_private *dev_priv = fence->i915; in i830_write_fence_reg()
181 i915_reg_t reg = FENCE_REG(fence->id); in i830_write_fence_reg()
188 static void fence_write(struct drm_i915_fence_reg *fence, in fence_write() argument
196 if (IS_GEN2(fence->i915)) in fence_write()
197 i830_write_fence_reg(fence, vma); in fence_write()
198 else if (IS_GEN3(fence->i915)) in fence_write()
199 i915_write_fence_reg(fence, vma); in fence_write()
201 i965_write_fence_reg(fence, vma); in fence_write()
207 fence->dirty = false; in fence_write()
210 static int fence_update(struct drm_i915_fence_reg *fence, in fence_update() argument
232 if (fence->vma) { in fence_update()
233 ret = i915_gem_active_retire(&fence->vma->last_fence, in fence_update()
234 &fence->vma->obj->base.dev->struct_mutex); in fence_update()
239 if (fence->vma && fence->vma != vma) { in fence_update()
243 i915_gem_release_mmap(fence->vma->obj); in fence_update()
245 fence->vma->fence = NULL; in fence_update()
246 fence->vma = NULL; in fence_update()
248 list_move(&fence->link, &fence->i915->mm.fence_list); in fence_update()
255 if (intel_runtime_pm_get_if_in_use(fence->i915)) { in fence_update()
256 fence_write(fence, vma); in fence_update()
257 intel_runtime_pm_put(fence->i915); in fence_update()
261 if (fence->vma != vma) { in fence_update()
262 vma->fence = fence; in fence_update()
263 fence->vma = vma; in fence_update()
266 list_move_tail(&fence->link, &fence->i915->mm.fence_list); in fence_update()
286 struct drm_i915_fence_reg *fence = vma->fence; in i915_vma_put_fence() local
288 if (!fence) in i915_vma_put_fence()
291 if (fence->pin_count) in i915_vma_put_fence()
294 return fence_update(fence, NULL); in i915_vma_put_fence()
299 struct drm_i915_fence_reg *fence; in fence_find() local
301 list_for_each_entry(fence, &dev_priv->mm.fence_list, link) { in fence_find()
302 if (fence->pin_count) in fence_find()
305 return fence; in fence_find()
336 struct drm_i915_fence_reg *fence; in i915_vma_get_fence() local
345 if (vma->fence) { in i915_vma_get_fence()
346 fence = vma->fence; in i915_vma_get_fence()
347 if (!fence->dirty) { in i915_vma_get_fence()
348 list_move_tail(&fence->link, in i915_vma_get_fence()
349 &fence->i915->mm.fence_list); in i915_vma_get_fence()
353 fence = fence_find(vma->vm->i915); in i915_vma_get_fence()
354 if (IS_ERR(fence)) in i915_vma_get_fence()
355 return PTR_ERR(fence); in i915_vma_get_fence()
359 return fence_update(fence, set); in i915_vma_get_fence()
379 struct drm_i915_fence_reg *fence = &dev_priv->fence_regs[i]; in i915_gem_revoke_fences() local
381 if (fence->vma) in i915_gem_revoke_fences()
382 i915_gem_release_mmap(fence->vma->obj); in i915_gem_revoke_fences()
411 vma->fence = NULL; in i915_gem_restore_fences()