intel-sna: mesa-9.2.2-i965-v5

git-svn-id: svn://kolibrios.org@4397 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2013-12-22 16:46:57 +00:00
parent 2fe2d0aeda
commit abc0c82ba7
2 changed files with 23 additions and 13 deletions

View File

@ -3327,9 +3327,7 @@ static void gen6_render_reset(struct sna *sna)
static void gen6_render_fini(struct sna *sna) static void gen6_render_fini(struct sna *sna)
{ {
ENTER();
kgem_bo_destroy(&sna->kgem, sna->render_state.gen6.general_bo); kgem_bo_destroy(&sna->kgem, sna->render_state.gen6.general_bo);
LEAVE();
} }
static bool is_gt2(struct sna *sna) static bool is_gt2(struct sna *sna)

View File

@ -2937,8 +2937,6 @@ void kgem_cleanup_cache(struct kgem *kgem)
unsigned int i; unsigned int i;
int n; int n;
ENTER();
/* sync to the most recent request */ /* sync to the most recent request */
for (n = 0; n < ARRAY_SIZE(kgem->requests); n++) { for (n = 0; n < ARRAY_SIZE(kgem->requests); n++) {
if (!list_is_empty(&kgem->requests[n])) { if (!list_is_empty(&kgem->requests[n])) {
@ -2986,8 +2984,6 @@ void kgem_cleanup_cache(struct kgem *kgem)
kgem->need_purge = false; kgem->need_purge = false;
kgem->need_expire = false; kgem->need_expire = false;
LEAVE();
} }
static struct kgem_bo * static struct kgem_bo *
@ -5324,6 +5320,9 @@ void kgem_bo_set_binding(struct kgem_bo *bo, uint32_t format, uint16_t offset)
int kgem_init_fb(struct kgem *kgem, struct sna_fb *fb) int kgem_init_fb(struct kgem *kgem, struct sna_fb *fb)
{ {
struct kgem_bo *bo; struct kgem_bo *bo;
struct drm_gem_open open_arg;
struct drm_i915_gem_get_tiling get_tiling;
size_t size; size_t size;
int ret; int ret;
@ -5331,22 +5330,37 @@ int kgem_init_fb(struct kgem *kgem, struct sna_fb *fb)
if( ret != 0 ) if( ret != 0 )
return 0; return 0;
size = fb->pitch * fb->height / PAGE_SIZE; open_arg.name = fb->name;
ret = drmIoctl(kgem->fd, DRM_IOCTL_GEM_OPEN, &open_arg);
if (ret != 0) {
printf("Couldn't reference %s handle 0x%08x\n",
fb->name, fb->name);
return NULL;
}
size = open_arg.size / PAGE_SIZE;
bo = __kgem_bo_alloc(-2, size); bo = __kgem_bo_alloc(open_arg.handle, size);
if (!bo) { if (!bo) {
return 0; return 0;
} }
get_tiling.handle = bo->handle;
ret = drmIoctl(kgem->fd,DRM_IOCTL_I915_GEM_GET_TILING,&get_tiling);
if (ret != 0) {
printf("%s: couldn't get tiling for handle %d\n", __FUNCTION__, bo->handle);
// drm_intel_gem_bo_unreference(&bo_gem->bo);
return 0;
}
bo->domain = DOMAIN_GTT; bo->domain = DOMAIN_GTT;
bo->unique_id = kgem_get_unique_id(kgem); bo->unique_id = kgem_get_unique_id(kgem);
bo->pitch = fb->pitch; bo->pitch = fb->pitch;
bo->tiling = I915_TILING_X; bo->tiling = get_tiling.tiling_mode;
bo->scanout = 1; bo->scanout = 1;
fb->fb_bo = bo; fb->fb_bo = bo;
// printf("fb width %d height %d pitch %d bo %p\n", printf("fb handle %d w: %d h: %d pitch %d tilng %d bo %p\n",
// fb->width, fb->height, fb->pitch, fb->fb_bo); bo->handle, fb->width, fb->height, fb->pitch, fb->tiling, fb->fb_bo);
return 1; return 1;
}; };
@ -5393,7 +5407,6 @@ void sna_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
void kgem_close_batches(struct kgem *kgem) void kgem_close_batches(struct kgem *kgem)
{ {
int n; int n;
ENTER();
for (n = 0; n < ARRAY_SIZE(kgem->pinned_batches); n++) { for (n = 0; n < ARRAY_SIZE(kgem->pinned_batches); n++) {
while (!list_is_empty(&kgem->pinned_batches[n])) while (!list_is_empty(&kgem->pinned_batches[n]))
{ {
@ -5404,7 +5417,6 @@ void kgem_close_batches(struct kgem *kgem)
kgem_bo_destroy(kgem,bo); kgem_bo_destroy(kgem,bo);
} }
} }
LEAVE();
}; };
struct kgem_bo *kgem_bo_from_handle(struct kgem *kgem, int handle, struct kgem_bo *kgem_bo_from_handle(struct kgem *kgem, int handle,