Subversion Repositories Kolibri OS

Rev

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