Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 307193
b: refs/heads/master
c: ada726c
h: refs/heads/master
i:
  307191: ea44bdb
v: v3
  • Loading branch information
Chris Wilson authored and Daniel Vetter committed Apr 18, 2012
1 parent 6ad8304 commit c9c766e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 54 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 61050808bb019ebea966b7b5bfd357aaf219fb51
refs/heads/master: ada726c734e79c83f72676c02b5d68d4f9faead0
62 changes: 9 additions & 53 deletions trunk/drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@ static void i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *o
static __must_check int i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj,
unsigned alignment,
bool map_and_fenceable);
static void i915_gem_clear_fence_reg(struct drm_device *dev,
struct drm_i915_fence_reg *reg);
static int i915_gem_phys_pwrite(struct drm_device *dev,
struct drm_i915_gem_object *obj,
struct drm_i915_gem_pwrite *args,
Expand Down Expand Up @@ -1655,19 +1653,18 @@ static void i915_gem_reset_fences(struct drm_device *dev)

for (i = 0; i < dev_priv->num_fence_regs; i++) {
struct drm_i915_fence_reg *reg = &dev_priv->fence_regs[i];
struct drm_i915_gem_object *obj = reg->obj;

if (!obj)
continue;
i915_gem_write_fence(dev, i, NULL);

if (obj->tiling_mode)
i915_gem_release_mmap(obj);
if (reg->obj)
i915_gem_object_fence_lost(reg->obj);

reg->obj->fence_reg = I915_FENCE_REG_NONE;
reg->obj->fenced_gpu_access = false;
reg->obj->last_fenced_seqno = 0;
i915_gem_clear_fence_reg(dev, reg);
reg->pin_count = 0;
reg->obj = NULL;
INIT_LIST_HEAD(&reg->lru_list);
}

INIT_LIST_HEAD(&dev_priv->mm.fence_list);
}

void i915_gem_reset(struct drm_device *dev)
Expand Down Expand Up @@ -2512,45 +2509,6 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj)
return 0;
}

/**
* i915_gem_clear_fence_reg - clear out fence register info
* @obj: object to clear
*
* Zeroes out the fence register itself and clears out the associated
* data structures in dev_priv and obj.
*/
static void
i915_gem_clear_fence_reg(struct drm_device *dev,
struct drm_i915_fence_reg *reg)
{
drm_i915_private_t *dev_priv = dev->dev_private;
uint32_t fence_reg = reg - dev_priv->fence_regs;

switch (INTEL_INFO(dev)->gen) {
case 7:
case 6:
I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + fence_reg*8, 0);
break;
case 5:
case 4:
I915_WRITE64(FENCE_REG_965_0 + fence_reg*8, 0);
break;
case 3:
if (fence_reg >= 8)
fence_reg = FENCE_REG_945_8 + (fence_reg - 8) * 4;
else
case 2:
fence_reg = FENCE_REG_830_0 + fence_reg * 4;

I915_WRITE(fence_reg, 0);
break;
}

list_del_init(&reg->lru_list);
reg->obj = NULL;
reg->pin_count = 0;
}

/**
* Finds free space in the GTT aperture and binds the object there.
*/
Expand Down Expand Up @@ -3788,9 +3746,7 @@ i915_gem_load(struct drm_device *dev)
dev_priv->num_fence_regs = 8;

/* Initialize fence registers to zero */
for (i = 0; i < dev_priv->num_fence_regs; i++) {
i915_gem_clear_fence_reg(dev, &dev_priv->fence_regs[i]);
}
i915_gem_reset_fences(dev);

i915_gem_detect_bit_6_swizzle(dev);
init_waitqueue_head(&dev_priv->pending_flip_queue);
Expand Down

0 comments on commit c9c766e

Please sign in to comment.