/** * Create a command parser. */ struct ilo_cp * ilo_cp_create(const struct ilo_dev *dev, struct intel_winsys *winsys, struct ilo_shader_cache *shc) { struct ilo_cp *cp; cp = CALLOC_STRUCT(ilo_cp); if (!cp) return NULL; cp->winsys = winsys; cp->shader_cache = shc; cp->render_ctx = intel_winsys_create_context(winsys); if (!cp->render_ctx) { FREE(cp); return NULL; } cp->ring = INTEL_RING_RENDER; cp->owner = &ilo_cp_default_owner; ilo_builder_init(&cp->builder, dev, winsys); if (!ilo_builder_begin(&cp->builder)) { ilo_cp_destroy(cp); return NULL; } return cp; }
static void ilo_context_destroy(struct pipe_context *pipe) { struct ilo_context *ilo = ilo_context(pipe); ilo_cleanup_states(ilo); if (ilo->last_cp_bo) intel_bo_unreference(ilo->last_cp_bo); if (ilo->uploader) u_upload_destroy(ilo->uploader); if (ilo->blitter) ilo_blitter_destroy(ilo->blitter); if (ilo->hw3d) ilo_3d_destroy(ilo->hw3d); if (ilo->shader_cache) ilo_shader_cache_destroy(ilo->shader_cache); if (ilo->cp) ilo_cp_destroy(ilo->cp); util_slab_destroy(&ilo->transfer_mempool); FREE(ilo); }
static void ilo_context_destroy(struct pipe_context *pipe) { struct ilo_context *ilo = ilo_context(pipe); ilo_state_vector_cleanup(&ilo->state_vector); if (ilo->uploader) u_upload_destroy(ilo->uploader); if (ilo->blitter) ilo_blitter_destroy(ilo->blitter); if (ilo->render) ilo_render_destroy(ilo->render); if (ilo->shader_cache) ilo_shader_cache_destroy(ilo->shader_cache); if (ilo->cp) ilo_cp_destroy(ilo->cp); slab_destroy(&ilo->transfer_mempool); FREE(ilo); }