Rev 5078 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5078 | Rev 5271 | ||
---|---|---|---|
Line 65... | Line 65... | ||
65 | r = 1; |
65 | r = 1; |
66 | goto out_cleanup; |
66 | goto out_cleanup; |
67 | } |
67 | } |
Line 68... | Line 68... | ||
68 | 68 | ||
69 | r = radeon_bo_create(rdev, size, PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM, |
69 | r = radeon_bo_create(rdev, size, PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM, |
70 | 0, NULL, &vram_obj); |
70 | 0, NULL, NULL, &vram_obj); |
71 | if (r) { |
71 | if (r) { |
72 | DRM_ERROR("Failed to create VRAM object\n"); |
72 | DRM_ERROR("Failed to create VRAM object\n"); |
73 | goto out_cleanup; |
73 | goto out_cleanup; |
74 | } |
74 | } |
Line 85... | Line 85... | ||
85 | void **gtt_start, **gtt_end; |
85 | void **gtt_start, **gtt_end; |
86 | void **vram_start, **vram_end; |
86 | void **vram_start, **vram_end; |
87 | struct radeon_fence *fence = NULL; |
87 | struct radeon_fence *fence = NULL; |
Line 88... | Line 88... | ||
88 | 88 | ||
89 | r = radeon_bo_create(rdev, size, PAGE_SIZE, true, |
89 | r = radeon_bo_create(rdev, size, PAGE_SIZE, true, |
- | 90 | RADEON_GEM_DOMAIN_GTT, 0, NULL, NULL, |
|
90 | RADEON_GEM_DOMAIN_GTT, 0, NULL, gtt_obj + i); |
91 | gtt_obj + i); |
91 | if (r) { |
92 | if (r) { |
92 | DRM_ERROR("Failed to create GTT object %d\n", i); |
93 | DRM_ERROR("Failed to create GTT object %d\n", i); |
93 | goto out_lclean; |
94 | goto out_lclean; |
Line 114... | Line 115... | ||
114 | *gtt_start = gtt_start; |
115 | *gtt_start = gtt_start; |
Line 115... | Line 116... | ||
115 | 116 | ||
Line 116... | Line 117... | ||
116 | radeon_bo_kunmap(gtt_obj[i]); |
117 | radeon_bo_kunmap(gtt_obj[i]); |
117 | 118 | ||
- | 119 | if (ring == R600_RING_TYPE_DMA_INDEX) |
|
- | 120 | fence = radeon_copy_dma(rdev, gtt_addr, vram_addr, |
|
118 | if (ring == R600_RING_TYPE_DMA_INDEX) |
121 | size / RADEON_GPU_PAGE_SIZE, |
119 | r = radeon_copy_dma(rdev, gtt_addr, vram_addr, size / RADEON_GPU_PAGE_SIZE, &fence); |
122 | NULL); |
- | 123 | else |
|
- | 124 | fence = radeon_copy_blit(rdev, gtt_addr, vram_addr, |
|
120 | else |
125 | size / RADEON_GPU_PAGE_SIZE, |
121 | r = radeon_copy_blit(rdev, gtt_addr, vram_addr, size / RADEON_GPU_PAGE_SIZE, &fence); |
126 | NULL); |
- | 127 | if (IS_ERR(fence)) { |
|
122 | if (r) { |
128 | DRM_ERROR("Failed GTT->VRAM copy %d\n", i); |
123 | DRM_ERROR("Failed GTT->VRAM copy %d\n", i); |
129 | r = PTR_ERR(fence); |
Line 124... | Line 130... | ||
124 | goto out_lclean_unpin; |
130 | goto out_lclean_unpin; |
125 | } |
131 | } |
Line 160... | Line 166... | ||
160 | } |
166 | } |
Line 161... | Line 167... | ||
161 | 167 | ||
Line 162... | Line 168... | ||
162 | radeon_bo_kunmap(vram_obj); |
168 | radeon_bo_kunmap(vram_obj); |
163 | 169 | ||
- | 170 | if (ring == R600_RING_TYPE_DMA_INDEX) |
|
- | 171 | fence = radeon_copy_dma(rdev, vram_addr, gtt_addr, |
|
164 | if (ring == R600_RING_TYPE_DMA_INDEX) |
172 | size / RADEON_GPU_PAGE_SIZE, |
165 | r = radeon_copy_dma(rdev, vram_addr, gtt_addr, size / RADEON_GPU_PAGE_SIZE, &fence); |
173 | NULL); |
- | 174 | else |
|
- | 175 | fence = radeon_copy_blit(rdev, vram_addr, gtt_addr, |
|
166 | else |
176 | size / RADEON_GPU_PAGE_SIZE, |
167 | r = radeon_copy_blit(rdev, vram_addr, gtt_addr, size / RADEON_GPU_PAGE_SIZE, &fence); |
177 | NULL); |
- | 178 | if (IS_ERR(fence)) { |
|
168 | if (r) { |
179 | DRM_ERROR("Failed VRAM->GTT copy %d\n", i); |
169 | DRM_ERROR("Failed VRAM->GTT copy %d\n", i); |
180 | r = PTR_ERR(fence); |
Line 170... | Line 181... | ||
170 | goto out_lclean_unpin; |
181 | goto out_lclean_unpin; |
171 | } |
182 | } |
Line 220... | Line 231... | ||
220 | for (--i; i >= 0; --i) { |
231 | for (--i; i >= 0; --i) { |
221 | radeon_bo_unpin(gtt_obj[i]); |
232 | radeon_bo_unpin(gtt_obj[i]); |
222 | radeon_bo_unreserve(gtt_obj[i]); |
233 | radeon_bo_unreserve(gtt_obj[i]); |
223 | radeon_bo_unref(>t_obj[i]); |
234 | radeon_bo_unref(>t_obj[i]); |
224 | } |
235 | } |
225 | if (fence) |
236 | if (fence && !IS_ERR(fence)) |
226 | radeon_fence_unref(&fence); |
237 | radeon_fence_unref(&fence); |
227 | break; |
238 | break; |
228 | } |
239 | } |
Line 229... | Line 240... | ||
229 | 240 |