Home | History | Annotate | Download | only in drm_gralloc

Lines Matching refs:info

76 batch_next(struct intel_info *info)
78 info->cur = info->batch;
80 if (info->batch_ibo)
81 drm_intel_bo_unreference(info->batch_ibo);
83 info->batch_ibo = drm_intel_bo_alloc(info->bufmgr,
84 "gralloc-batchbuffer", info->size, 4096);
86 return (info->batch_ibo) ? 0 : -ENOMEM;
90 batch_count(struct intel_info *info)
92 return info->cur - info->batch;
96 batch_dword(struct intel_info *info, uint32_t dword)
98 *info->cur++ = dword;
102 batch_reloc(struct intel_info *info, struct gralloc_drm_bo_t *bo,
106 uint32_t offset = (info->cur - info->batch) * sizeof(info->batch[0]);
109 ret = drm_intel_bo_emit_reloc(info->batch_ibo, offset,
112 batch_dword(info, target->ibo->offset);
118 batch_flush(struct intel_info *info)
122 batch_dword(info, MI_BATCH_BUFFER_END);
123 size = batch_count(info);
125 batch_dword(info, MI_NOOP);
126 size = batch_count(info);
129 size *= sizeof(info->batch[0]);
130 ret = drm_intel_bo_subdata(info->batch_ibo, 0, size, info->batch);
135 ret = drm_intel_bo_mrb_exec(info->batch_ibo, size,
136 NULL, 0, 0, info->exec_blt);
142 return batch_next(info);
145 info->cur = info->batch;
151 batch_reserve(struct intel_info *info, int count)
155 if (batch_count(info) + count > info->capacity)
156 ret = batch_flush(info);
162 batch_destroy(struct intel_info *info)
164 if (info->batch_ibo) {
165 drm_intel_bo_unreference(info->batch_ibo);
166 info->batch_ibo = NULL;
169 if (info->batch) {
170 free(info->batch);
171 info->batch = NULL;
176 batch_init(struct intel_info *info)
180 info->capacity = 512;
181 info->size = (info->capacity + 16) * sizeof(info->batch[0]);
183 info->batch = malloc(info->size);
184 if (!info->batch)
187 ret = batch_next(info);
189 free(info->batch);
190 info->batch = NULL;
242 static drm_intel_bo *alloc_ibo(struct intel_info *info,
267 if (info->gen < 50)
269 if (info->gen < 40)
286 ibo = drm_intel_bo_alloc_tiled(info->bufmgr, name,
331 ibo = drm_intel_bo_alloc_tiled(info->bufmgr, name,
342 struct intel_info *info = (struct intel_info *) drv;
352 ib->ibo = drm_intel_bo_gem_create_from_name(info->bufmgr,
371 ib->ibo = alloc_ibo(info, handle, &ib->tiling, &stride);
439 static void gen_init(struct intel_info *info)
447 if (drmCommandWriteRead(info->fd, DRM_I915_GETPARAM, &gp, sizeof(gp)))
453 if (drmCommandWriteRead(info->fd, DRM_I915_GETPARAM, &gp, sizeof(gp)))
455 info->exec_blt = has_blt ? I915_EXEC_BLT : 0;
460 info->gen = 70;
462 info->gen = 60;
464 info->gen = 50;
466 info->gen = 40;
469 info->gen = 30;
475 struct intel_info *info = (struct intel_info *) drv;
477 batch_destroy(info);
478 drm_intel_bufmgr_destroy(info->bufmgr);
479 free(info);
484 struct intel_info *info;
486 info = calloc(1, sizeof(*info));
487 if (!info) {
488 ALOGE("failed to allocate driver info");
492 info->fd = fd;
493 info->bufmgr = drm_intel_bufmgr_gem_init(info->fd, 16 * 1024);
494 if (!info->bufmgr) {
496 free(info);
500 batch_init(info);
501 gen_init(info);
503 info->base.destroy = intel_destroy;
504 info->base.alloc = intel_alloc;
505 info->base.free = intel_free;
506 info->base.map = intel_map;
507 info->base.unmap = intel_unmap;
508 info->base.resolve_format = intel_resolve_format;
510 return &info->base;