static void intel_driver_init(intel_driver_t *driver, int dev_fd) { driver->fd = dev_fd; driver->locked = 0; pthread_mutex_init(&driver->ctxmutex, NULL); #ifndef NDEBUG int res = #endif /* NDEBUG */ intel_driver_get_param(driver, I915_PARAM_CHIPSET_ID, &driver->device_id); assert(res); intel_driver_memman_init(driver); #if EMULATE_GEN driver->gen_ver = EMULATE_GEN; if (EMULATE_GEN == 75) driver->device_id = PCI_CHIP_HASWELL_L; /* we pick L for HSW */ else if (EMULATE_GEN == 7) driver->device_id = PCI_CHIP_IVYBRIDGE_GT2; /* we pick GT2 for IVB */ else if (EMULATE_GEN == 6) driver->device_id = PCI_CHIP_SANDYBRIDGE_GT2; /* we pick GT2 for SNB */ else FATAL ("Unsupported Gen for emulation"); #else if (IS_GEN75(driver->device_id)) driver->gen_ver = 75; else if (IS_GEN7(driver->device_id)) driver->gen_ver = 7; else if (IS_GEN6(driver->device_id)) driver->gen_ver = 6; else if(IS_IGDNG(driver->device_id)) driver->gen_ver = 5; else driver->gen_ver = 4; #endif /* EMULATE_GEN */ }
BOOL media_driver_data_init (VADriverContextP ctx) { MEDIA_DRV_CONTEXT *drv_ctx = NULL; MEDIA_DRV_ASSERT (ctx); drv_ctx = ctx->pDriverData; if (IS_GEN75 (drv_ctx->drv_data.device_id)) drv_ctx->codec_info = &gen75_hw_codec_info; else if (IS_GEN7 (drv_ctx->drv_data.device_id)) drv_ctx->codec_info = &gen7_hw_codec_info; else if (IS_GEN8(drv_ctx->drv_data.device_id)) drv_ctx->codec_info = &gen8_hw_codec_info; else if (IS_CHERRYVIEW(drv_ctx->drv_data.device_id)) drv_ctx->codec_info = &chv_hw_codec_info; else return false; if (object_heap_init (&drv_ctx->config_heap, sizeof (struct object_config), CONFIG_ID_OFFSET)) goto err_config_heap; if (object_heap_init (&drv_ctx->context_heap, sizeof (struct object_context), CONTEXT_ID_OFFSET)) goto err_context_heap; if (object_heap_init (&drv_ctx->surface_heap, sizeof (struct object_surface), SURFACE_ID_OFFSET)) goto err_surface_heap; if (object_heap_init (&drv_ctx->buffer_heap, sizeof (struct object_buffer), BUFFER_ID_OFFSET)) goto err_buffer_heap; if (object_heap_init (&drv_ctx->image_heap, sizeof (struct object_image), IMAGE_ID_OFFSET)) goto err_image_heap; if (object_heap_init (&drv_ctx->subpic_heap, sizeof (struct object_subpic), IMAGE_ID_OFFSET)) goto err_subpic_heap; drv_ctx->batch = media_batchbuffer_new (&drv_ctx->drv_data, I915_EXEC_RENDER, 0); drv_ctx->pp_batch = media_batchbuffer_new (&drv_ctx->drv_data, I915_EXEC_RENDER, 0); drv_ctx->render_batch = media_batchbuffer_new (&drv_ctx->drv_data, I915_EXEC_RENDER, 0); media_drv_mutex_init (&drv_ctx->render_mutex); media_drv_mutex_init (&drv_ctx->pp_mutex); return true; err_subpic_heap: object_heap_destroy(&drv_ctx->subpic_heap); err_image_heap: object_heap_destroy (&drv_ctx->buffer_heap); err_buffer_heap: object_heap_destroy (&drv_ctx->surface_heap); err_surface_heap: object_heap_destroy (&drv_ctx->context_heap); err_context_heap: object_heap_destroy (&drv_ctx->config_heap); err_config_heap: return false; }