Subversion Repositories Kolibri OS

Rev

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

Rev 3039 Rev 3051
Line 25... Line 25...
25
    bitmap->obj->base.read_domains = I915_GEM_DOMAIN_GTT;
25
    bitmap->obj->base.read_domains = I915_GEM_DOMAIN_GTT;
26
    bitmap->obj->base.write_domain = I915_GEM_DOMAIN_CPU;
26
    bitmap->obj->base.write_domain = I915_GEM_DOMAIN_CPU;
27
 
27
 
Line 28... Line 28...
28
    mutex_lock(&main_device->struct_mutex);
28
    mutex_lock(&main_device->struct_mutex);
29
 
-
 
30
    drm_gem_object_unreference(&bitmap->obj->base);
29
    drm_gem_object_unreference(&bitmap->obj->base);
31
    mutex_unlock(&main_device->struct_mutex);
30
    mutex_unlock(&main_device->struct_mutex);
Line 32... Line 31...
32
 
31
 
33
    if(pages != NULL)
32
    if(pages != NULL)
Line 208... Line 207...
208
            pages[i] = page;
207
            pages[i] = page;
209
 
208
 
Line 210... Line 209...
210
            MapPage(vaddr, page, 0x207);        //map as shared page
209
            MapPage(vaddr, page, 0x207);        //map as shared page
211
        };
210
        };
-
 
211
        for(;i < max_count; i++, vaddr+= PAGE_SIZE)
-
 
212
        {
-
 
213
            MapPage(vaddr, 0, 0);        //map as shared page
-
 
214
        };
-
 
215
 
212
        bitmap->page_count = page_count;
216
        bitmap->page_count = page_count;
213
        bitmap->max_count  = max_count;
217
        bitmap->max_count  = max_count;
214
    };
218
    };
Line 215... Line 219...
215
 
219
 
Line 337... Line 341...
337
 
341
 
Line 338... Line 342...
338
    DRM_DEBUG("new width %d height %d pitch %d size %d\n",
342
    DRM_DEBUG("new width %d height %d pitch %d size %d\n",
339
            width, height, pitch, size);
343
            width, height, pitch, size);
Line 340... Line 344...
340
 
344
 
341
    if( page_count == bitmap->page_count )
-
 
342
    {
-
 
343
        bitmap->width  = width;
-
 
344
        bitmap->height = height;
-
 
345
        bitmap->pitch  = pitch;
-
 
346
    }
-
 
347
    else if(page_count > bitmap->page_count)
345
    if(page_count > bitmap->page_count)
348
    {
346
    {
Line 349... Line 347...
349
        char *vaddr = bitmap->uaddr + PAGE_SIZE * bitmap->page_count;
347
        char *vaddr = bitmap->uaddr + PAGE_SIZE * bitmap->page_count;
Line 364... Line 362...
364
 
362
 
Line 365... Line 363...
365
        DRM_DEBUG("%s alloc %d pages\n", __FUNCTION__,
363
        DRM_DEBUG("%s alloc %d pages\n", __FUNCTION__,
366
                  page_count - bitmap->page_count);
364
                  page_count - bitmap->page_count);
Line 367... Line -...
367
 
-
 
368
//        mutex_lock(&main_device->struct_mutex);
-
 
369
 
365
 
370
        i915_gem_object_unpin(bitmap->obj);
366
        i915_gem_object_unpin(bitmap->obj);
371
        i915_gem_object_unbind(bitmap->obj);
367
        i915_gem_object_unbind(bitmap->obj);
372
        bitmap->obj->base.size = size;
368
        bitmap->obj->base.size = size;
Line 373... Line 369...
373
        bitmap->obj->pages.nents = page_count;
369
        bitmap->obj->pages.nents = page_count;
374
 
370
 
375
        ret = i915_gem_object_pin(bitmap->obj, PAGE_SIZE, true,true);
371
        ret = i915_gem_object_pin(bitmap->obj, PAGE_SIZE, true,true);
376
        if (ret)
-
 
Line 377... Line 372...
377
            goto err4;
372
        if (ret)
378
//        mutex_unlock(&main_device->struct_mutex);
-
 
379
 
-
 
380
        bitmap->page_count = page_count;
-
 
381
        bitmap->width  = width;
373
            goto err4;
382
        bitmap->height = height;
374
 
-
 
375
        bitmap->page_count = page_count;
-
 
376
        bitmap->gaddr  = bitmap->obj->gtt_offset;
-
 
377
    }
Line 383... Line 378...
383
        bitmap->pitch  = pitch;
378
    else if(page_count < bitmap->page_count)
-
 
379
    {
-
 
380
        char *vaddr = bitmap->uaddr + PAGE_SIZE * page_count;
-
 
381
 
-
 
382
        i915_gem_object_unpin(bitmap->obj);
-
 
383
        i915_gem_object_unbind(bitmap->obj);
-
 
384
 
-
 
385
        pages = bitmap->obj->allocated_pages;
-
 
386
 
384
        bitmap->gaddr  = bitmap->obj->gtt_offset;
387
        DRM_DEBUG("old pages %d new_pages %d vaddr %x\n",
385
    };
388
                bitmap->page_count, page_count, vaddr);
386
 
-
 
Line -... Line 389...
-
 
389
 
-
 
390
        for(i = page_count; i < bitmap->page_count; i++, vaddr+= PAGE_SIZE)
-
 
391
        {
-
 
392
            MapPage(vaddr, 0, 0);        //unmap
387
    if(ret != 0 )
393
 
-
 
394
            FreePage(pages[i]);
-
 
395
            pages[i] = 0;
-
 
396
    };
-
 
397
 
-
 
398
        DRM_DEBUG("%s release %d pages\n", __FUNCTION__,
-
 
399
                  bitmap->page_count - page_count);
388
    {
400
 
-
 
401
        bitmap->obj->base.size = size;
-
 
402
        bitmap->obj->pages.nents = page_count;
-
 
403
 
-
 
404
        ret = i915_gem_object_pin(bitmap->obj, PAGE_SIZE, true,true);
389
        pbitmap->data  = NULL;
405
        if (ret)
Line -... Line 406...
-
 
406
            goto err3;
-
 
407
 
-
 
408
        bitmap->page_count = page_count;
-
 
409
        bitmap->gaddr  = bitmap->obj->gtt_offset;
-
 
410
    };
390
        pbitmap->pitch = 0;
411
 
391
 
412
    bitmap->width  = width;
Line 392... Line 413...
392
        dbgprintf("%s fail\n", __FUNCTION__);
413
    bitmap->height = height;
Line 393... Line 414...
393
        return ret;
414
    bitmap->pitch  = pitch;
394
    };
415
 
395
 
416
 
Line -... Line 417...
-
 
417
    pbitmap->data  = bitmap->uaddr;
396
    pbitmap->data  = bitmap->uaddr;
418
    pbitmap->pitch = bitmap->pitch;
397
    pbitmap->pitch = bitmap->pitch;
419
 
Line 398... Line 420...
398
 
420
    return 0;
Line 445... Line 467...
445
    DRM_DEBUG("destroy context %x\n", context);
467
    DRM_DEBUG("destroy context %x\n", context);
446
 
468
 
Line 447... Line 469...
447
    context_map[context->slot] = NULL;
469
    context_map[context->slot] = NULL;
Line -... Line 470...
-
 
470
 
-
 
471
    FreeKernelSpace(context->cmd_buffer);
448
 
472
 
449
    mutex_lock(&main_device->struct_mutex);
473
    mutex_lock(&main_device->struct_mutex);
450
    drm_gem_object_unreference(&context->obj->base);
474
    drm_gem_object_unreference(&context->obj->base);
Line 451... Line 475...
451
    mutex_unlock(&main_device->struct_mutex);
475
    mutex_unlock(&main_device->struct_mutex);