Example #1
0
void
intel_driver_terminate(VADriverContextP ctx)
{
    struct intel_driver_data *intel = intel_driver_data(ctx);

    intel_memman_terminate(intel);
//    pthread_mutex_destroy(&intel->ctxmutex);
}
Example #2
0
struct hw_context *
gen6_enc_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
    struct intel_driver_data *intel = intel_driver_data(ctx);
    struct gen6_encoder_context *gen6_encoder_context = calloc(1, sizeof(struct gen6_encoder_context));

    gen6_encoder_context->base.destroy = gen6_encoder_context_destroy;
    gen6_encoder_context->base.run = gen6_encoder_end_picture;
    gen6_encoder_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);

    gen6_vme_context_init(ctx, &gen6_encoder_context->vme_context);
    gen6_mfc_context_init(ctx, &gen6_encoder_context->mfc_context);

    return (struct hw_context *)gen6_encoder_context;
}
Example #3
0
bool
intel_driver_init(VADriverContextP ctx)
{
    struct intel_driver_data *intel = intel_driver_data(ctx);
    struct drm_state * const drm_state = (struct drm_state *)ctx->drm_state;
    int has_exec2 = 0, has_bsd = 0, has_blt = 0, has_vebox = 0;
    char *env_str = NULL;

    g_intel_debug_option_flags = 0;
//    if ((env_str = getenv("VA_INTEL_DEBUG")))
//        g_intel_debug_option_flags = atoi(env_str);

//    if (g_intel_debug_option_flags)
//        fprintf(stderr, "g_intel_debug_option_flags:%x\n", g_intel_debug_option_flags);

    assert(drm_state);

    intel->fd = drm_state->fd;
    intel->dri2Enabled = 1;

    intel->locked = 0;
//    pthread_mutex_init(&intel->ctxmutex, NULL);

    intel_driver_get_param(intel, I915_PARAM_CHIPSET_ID, &intel->device_id);
    intel->device_info = i965_get_device_info(intel->device_id);

    if (!intel->device_info)
        return false;

    if (intel_driver_get_param(intel, I915_PARAM_HAS_EXECBUF2, &has_exec2))
        intel->has_exec2 = has_exec2;
    if (intel_driver_get_param(intel, I915_PARAM_HAS_BSD, &has_bsd))
        intel->has_bsd = has_bsd;
    if (intel_driver_get_param(intel, I915_PARAM_HAS_BLT, &has_blt))
        intel->has_blt = has_blt;
    if (intel_driver_get_param(intel, I915_PARAM_HAS_VEBOX, &has_vebox))
        intel->has_vebox = !!has_vebox;

    intel_driver_get_revid(intel, &intel->revision);
    intel_memman_init(intel);
    return true;
}
static struct hw_context *
intel_enc_hw_context_init(VADriverContextP ctx,
                          struct object_config *obj_config,
                          hw_init_func vme_context_init,
                          hw_init_func mfc_context_init)
{
    struct intel_driver_data *intel = intel_driver_data(ctx);
    struct intel_encoder_context *encoder_context = calloc(1, sizeof(struct intel_encoder_context));
    int i;

    encoder_context->base.destroy = intel_encoder_context_destroy;
    encoder_context->base.run = intel_encoder_end_picture;
    encoder_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
    encoder_context->input_yuv_surface = VA_INVALID_SURFACE;
    encoder_context->is_tmp_id = 0;
    encoder_context->rate_control_mode = VA_RC_NONE;

    switch (obj_config->profile) {
    case VAProfileMPEG2Simple:
    case VAProfileMPEG2Main:
        encoder_context->codec = CODEC_MPEG2;
        break;
        
    case VAProfileH264ConstrainedBaseline:
    case VAProfileH264Main:
    case VAProfileH264High:
        encoder_context->codec = CODEC_H264;
        break;

    case VAProfileH264StereoHigh:
    case VAProfileH264MultiviewHigh:
        encoder_context->codec = CODEC_H264_MVC;
        break;

    default:
        /* Never get here */
        assert(0);
        break;
    }

    for (i = 0; i < obj_config->num_attribs; i++) {
        if (obj_config->attrib_list[i].type == VAConfigAttribRateControl) {
            encoder_context->rate_control_mode = obj_config->attrib_list[i].value;

            if (encoder_context->codec == CODEC_MPEG2 &&
                encoder_context->rate_control_mode & VA_RC_CBR) {
                WARN_ONCE("Don't support CBR for MPEG-2 encoding\n");
                encoder_context->rate_control_mode &= ~VA_RC_CBR;
            }

            break;
        }
    }

    vme_context_init(ctx, encoder_context);
    assert(encoder_context->vme_context);
    assert(encoder_context->vme_context_destroy);
    assert(encoder_context->vme_pipeline);

    mfc_context_init(ctx, encoder_context);
    assert(encoder_context->mfc_context);
    assert(encoder_context->mfc_context_destroy);
    assert(encoder_context->mfc_pipeline);

    return (struct hw_context *)encoder_context;
}