drm/radeon: rework ring syncing code
[deliverable/linux.git] / drivers / gpu / drm / radeon / r600.c
index f30dc95f83b1d85e9fdd90afe2e8ad93aaa96709..aced97bb79e090d3502a2145dcbea232ca798f20 100644 (file)
@@ -1839,6 +1839,7 @@ void r600_gpu_init(struct radeon_device *rdev)
        WREG32(PA_CL_ENHANCE, (CLIP_VTX_REORDER_ENA |
                               NUM_CLIP_SEQ(3)));
        WREG32(PA_SC_ENHANCE, FORCE_EOV_MAX_CLK_CNT(4095));
+       WREG32(VC_ENHANCE, 0);
 }
 
 
@@ -2308,17 +2309,18 @@ int r600_copy_blit(struct radeon_device *rdev,
                   uint64_t src_offset,
                   uint64_t dst_offset,
                   unsigned num_gpu_pages,
-                  struct radeon_fence *fence)
+                  struct radeon_fence **fence)
 {
+       struct radeon_semaphore *sem = NULL;
        struct radeon_sa_bo *vb = NULL;
        int r;
 
-       r = r600_blit_prepare_copy(rdev, num_gpu_pages, &vb);
+       r = r600_blit_prepare_copy(rdev, num_gpu_pages, fence, &vb, &sem);
        if (r) {
                return r;
        }
        r600_kms_blit_copy(rdev, src_offset, dst_offset, num_gpu_pages, vb);
-       r600_blit_done_copy(rdev, fence, vb);
+       r600_blit_done_copy(rdev, fence, vb, sem);
        return 0;
 }
 
@@ -2606,7 +2608,7 @@ void r600_fini(struct radeon_device *rdev)
  */
 void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
 {
-       struct radeon_ring *ring = &rdev->ring[ib->fence->ring];
+       struct radeon_ring *ring = &rdev->ring[ib->ring];
 
        /* FIXME: implement */
        radeon_ring_write(ring, PACKET3(PACKET3_INDIRECT_BUFFER, 2));
This page took 0.03031 seconds and 5 git commands to generate.