Subversion Repositories Kolibri OS

Rev

Rev 2005 | Rev 2997 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2005 Rev 2007
Line 292... Line 292...
292
 
292
 
Line 293... Line 293...
293
    return 0;
293
    return 0;
294
}
294
}
Line -... Line 295...
-
 
295
 
-
 
296
int radeon_bo_user_map(struct radeon_bo *bo, void **ptr)
-
 
297
{
-
 
298
    bool is_iomem;
-
 
299
 
-
 
300
    if (bo->uptr) {
-
 
301
        if (ptr) {
-
 
302
            *ptr = bo->uptr;
-
 
303
        }
-
 
304
        return 0;
-
 
305
    }
-
 
306
 
-
 
307
    if(bo->domain & RADEON_GEM_DOMAIN_VRAM)
-
 
308
    {
-
 
309
        return -1;
-
 
310
    }
-
 
311
    else
-
 
312
    {
-
 
313
        bo->uptr = UserAlloc(bo->tbo.num_pages << PAGE_SHIFT);
-
 
314
        if(bo->uptr)
-
 
315
        {
-
 
316
            u32_t *src, *dst;
-
 
317
            int count;
-
 
318
            src =  &((u32_t*)page_tabs)[(u32_t)bo->kptr >> 12];
-
 
319
            dst =  &((u32_t*)page_tabs)[(u32_t)bo->uptr >> 12];
-
 
320
            count = bo->tbo.num_pages;
-
 
321
 
-
 
322
            while(count--)
-
 
323
            {
-
 
324
              *dst++ = (0xFFFFF000 & *src++) | 0x207 ; // map as shared page
-
 
325
            };
-
 
326
        }
-
 
327
        else
-
 
328
            return -1;
-
 
329
    }
-
 
330
 
-
 
331
    if (ptr) {
-
 
332
        *ptr = bo->uptr;
-
 
333
    }
-
 
334
 
-
 
335
    return 0;
-
 
336
}
295
 
337
 
296
void radeon_bo_kunmap(struct radeon_bo *bo)
338
void radeon_bo_kunmap(struct radeon_bo *bo)
297
{
339
{
298
    if (bo->kptr == NULL)
340
    if (bo->kptr == NULL)