Subversion Repositories Kolibri OS

Rev

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

Rev 4368 Rev 4397
Line 2935... Line 2935...
2935
void kgem_cleanup_cache(struct kgem *kgem)
2935
void kgem_cleanup_cache(struct kgem *kgem)
2936
{
2936
{
2937
	unsigned int i;
2937
	unsigned int i;
2938
	int n;
2938
	int n;
Line 2939... Line -...
2939
 
-
 
2940
    ENTER();
-
 
2941
 
2939
 
2942
	/* sync to the most recent request */
2940
	/* sync to the most recent request */
2943
	for (n = 0; n < ARRAY_SIZE(kgem->requests); n++) {
2941
	for (n = 0; n < ARRAY_SIZE(kgem->requests); n++) {
2944
		if (!list_is_empty(&kgem->requests[n])) {
2942
		if (!list_is_empty(&kgem->requests[n])) {
2945
			struct kgem_request *rq;
2943
			struct kgem_request *rq;
Line 2984... Line 2982...
2984
		free(bo);
2982
		free(bo);
2985
	}
2983
	}
Line 2986... Line 2984...
2986
 
2984
 
2987
	kgem->need_purge = false;
2985
	kgem->need_purge = false;
2988
	kgem->need_expire = false;
-
 
2989
 
-
 
2990
    LEAVE();
2986
	kgem->need_expire = false;
Line 2991... Line 2987...
2991
}
2987
}
2992
 
2988
 
2993
static struct kgem_bo *
2989
static struct kgem_bo *
Line 5322... Line 5318...
5322
}
5318
}
Line 5323... Line 5319...
5323
 
5319
 
5324
int kgem_init_fb(struct kgem *kgem, struct sna_fb *fb)
5320
int kgem_init_fb(struct kgem *kgem, struct sna_fb *fb)
5325
{
5321
{
-
 
5322
    struct kgem_bo *bo;
-
 
5323
	struct drm_gem_open open_arg;
-
 
5324
	struct drm_i915_gem_get_tiling get_tiling;
5326
    struct kgem_bo *bo;
5325
 
5327
    size_t size;
5326
    size_t size;
Line 5328... Line 5327...
5328
    int ret;
5327
    int ret;
5329
 
5328
 
5330
	ret = drmIoctl(kgem->fd, SRV_FBINFO, fb);
5329
	ret = drmIoctl(kgem->fd, SRV_FBINFO, fb);
Line -... Line 5330...
-
 
5330
	if( ret != 0 )
-
 
5331
	    return 0;
-
 
5332
 
-
 
5333
	open_arg.name = fb->name;
-
 
5334
	ret = drmIoctl(kgem->fd, DRM_IOCTL_GEM_OPEN, &open_arg);
-
 
5335
	if (ret != 0) {
-
 
5336
		printf("Couldn't reference %s handle 0x%08x\n",
5331
	if( ret != 0 )
5337
		    fb->name, fb->name);
Line 5332... Line 5338...
5332
	    return 0;
5338
		return NULL;
5333
 
5339
	}
5334
    size = fb->pitch * fb->height / PAGE_SIZE;
5340
	size = open_arg.size / PAGE_SIZE;
5335
 
5341
 
Line -... Line 5342...
-
 
5342
  	bo = __kgem_bo_alloc(open_arg.handle, size);
-
 
5343
	if (!bo) {
-
 
5344
		return 0;
-
 
5345
	}
-
 
5346
 
-
 
5347
	get_tiling.handle = bo->handle;
-
 
5348
	ret = drmIoctl(kgem->fd,DRM_IOCTL_I915_GEM_GET_TILING,&get_tiling);
-
 
5349
	if (ret != 0) {
5336
  	bo = __kgem_bo_alloc(-2, size);
5350
        printf("%s: couldn't get tiling for handle %d\n", __FUNCTION__, bo->handle);
5337
	if (!bo) {
5351
//		drm_intel_gem_bo_unreference(&bo_gem->bo);
5338
		return 0;
5352
		return 0;
5339
	}
5353
	}
5340
 
5354
 
5341
	bo->domain    = DOMAIN_GTT;
5355
	bo->domain    = DOMAIN_GTT;
Line 5342... Line 5356...
5342
	bo->unique_id = kgem_get_unique_id(kgem);
5356
	bo->unique_id = kgem_get_unique_id(kgem);
5343
	bo->pitch     = fb->pitch;
5357
	bo->pitch     = fb->pitch;
Line 5344... Line 5358...
5344
    bo->tiling    = I915_TILING_X;
5358
    bo->tiling    = get_tiling.tiling_mode;
5345
    bo->scanout   = 1;
5359
    bo->scanout   = 1;
Line 5391... Line 5405...
5391
 
5405
 
5392
 
5406
 
5393
void kgem_close_batches(struct kgem *kgem)
5407
void kgem_close_batches(struct kgem *kgem)
5394
{
-
 
5395
    int n;
5408
{
5396
    ENTER();
5409
    int n;
5397
	for (n = 0; n < ARRAY_SIZE(kgem->pinned_batches); n++) {
5410
	for (n = 0; n < ARRAY_SIZE(kgem->pinned_batches); n++) {
5398
		while (!list_is_empty(&kgem->pinned_batches[n]))
5411
		while (!list_is_empty(&kgem->pinned_batches[n]))
5399
        {
5412
        {
5400
			struct kgem_bo *bo =
5413
			struct kgem_bo *bo =
5401
					list_first_entry(&kgem->pinned_batches[n],
5414
					list_first_entry(&kgem->pinned_batches[n],
5402
							 struct kgem_bo, list);
5415
							 struct kgem_bo, list);
5403
			list_del(&bo->list);
5416
			list_del(&bo->list);
5404
			kgem_bo_destroy(kgem,bo);
5417
			kgem_bo_destroy(kgem,bo);
5405
		}
-
 
5406
	}
5418
		}
Line 5407... Line 5419...
5407
    LEAVE();
5419
	}
5408
};
5420
};
5409
 
5421