LOCAL dri_drawable_t*
dri_state_create_drawable(dri_state_t *state, XID x_drawable)
{
  dri2_drawable_t *dri2_drwble;
  dri2_drwble = (dri2_drawable_t*)calloc(1, sizeof(*dri2_drwble));

  if (!dri2_drwble)
    return NULL;

  dri2_drwble->base.x_drawable = x_drawable;
  dri2_drwble->base.x = 0;
  dri2_drwble->base.y = 0;
  VA_DRI2CreateDrawable(state->x11_dpy, x_drawable);

  return &dri2_drwble->base;
}
static struct dri_drawable * 
dri2CreateDrawable(VADriverContextP ctx, XID x_drawable)
{
    struct dri2_drawable *dri2_drawable;

    dri2_drawable = calloc(1, sizeof(*dri2_drawable));

    if (!dri2_drawable)
        return NULL;

    dri2_drawable->base.x_drawable = x_drawable;
    dri2_drawable->base.x = 0;
    dri2_drawable->base.y = 0;
    VA_DRI2CreateDrawable(ctx->native_dpy, x_drawable);

    return &dri2_drawable->base;
}