st/va: use the vl_screen dispatch
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Acked-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
9eb109f4d3
commit
422356ed2f
|
@ -175,10 +175,7 @@ error_htab:
|
|||
drv->pipe->destroy(drv->pipe);
|
||||
|
||||
error_pipe:
|
||||
if (ctx->display_type == VA_DISPLAY_GLX || ctx->display_type == VA_DISPLAY_X11)
|
||||
vl_screen_destroy(drv->vscreen);
|
||||
else
|
||||
vl_drm_screen_destroy(drv->vscreen);
|
||||
drv->vscreen->destroy(drv->vscreen);
|
||||
|
||||
error_screen:
|
||||
FREE(drv);
|
||||
|
@ -315,10 +312,7 @@ vlVaTerminate(VADriverContextP ctx)
|
|||
vl_compositor_cleanup_state(&drv->cstate);
|
||||
vl_compositor_cleanup(&drv->compositor);
|
||||
drv->pipe->destroy(drv->pipe);
|
||||
if (ctx->display_type == VA_DISPLAY_GLX || ctx->display_type == VA_DISPLAY_X11)
|
||||
vl_screen_destroy(drv->vscreen);
|
||||
else
|
||||
vl_drm_screen_destroy(drv->vscreen);
|
||||
drv->vscreen->destroy(drv->vscreen);
|
||||
handle_table_destroy(drv->htab);
|
||||
FREE(drv);
|
||||
|
||||
|
|
|
@ -763,7 +763,7 @@ handleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *context, v
|
|||
dst_rect.x1 = pipeline_param->output_region->x + pipeline_param->output_region->width;
|
||||
dst_rect.y1 = pipeline_param->output_region->y + pipeline_param->output_region->height;
|
||||
|
||||
dirty_area = vl_screen_get_dirty_area(drv->vscreen);
|
||||
dirty_area = drv->vscreen->get_dirty_area(drv->vscreen);
|
||||
|
||||
vl_compositor_clear_layers(&drv->cstate);
|
||||
vl_compositor_set_buffer_layer(&drv->cstate, &drv->compositor, 0, src_surface->buffer, &src_rect, NULL, VL_COMPOSITOR_WEAVE);
|
||||
|
|
|
@ -229,6 +229,7 @@ vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface_id, void* draw, short s
|
|||
struct pipe_screen *screen;
|
||||
struct pipe_resource *tex;
|
||||
struct pipe_surface surf_templ, *surf_draw;
|
||||
struct vl_screen *vscreen;
|
||||
struct u_rect src_rect, *dirty_area;
|
||||
struct u_rect dst_rect = {destx, destx + destw, desty, desty + desth};
|
||||
VAStatus status;
|
||||
|
@ -242,17 +243,18 @@ vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface_id, void* draw, short s
|
|||
return VA_STATUS_ERROR_INVALID_SURFACE;
|
||||
|
||||
screen = drv->pipe->screen;
|
||||
vscreen = drv->vscreen;
|
||||
|
||||
if(surf->fence) {
|
||||
screen->fence_finish(screen, surf->fence, PIPE_TIMEOUT_INFINITE);
|
||||
screen->fence_reference(screen, &surf->fence, NULL);
|
||||
}
|
||||
|
||||
tex = vl_screen_texture_from_drawable(drv->vscreen, (Drawable)draw);
|
||||
tex = vscreen->texture_from_drawable(vscreen, draw);
|
||||
if (!tex)
|
||||
return VA_STATUS_ERROR_INVALID_DISPLAY;
|
||||
|
||||
dirty_area = vl_screen_get_dirty_area(drv->vscreen);
|
||||
dirty_area = vscreen->get_dirty_area(vscreen);
|
||||
|
||||
memset(&surf_templ, 0, sizeof(surf_templ));
|
||||
surf_templ.format = tex->format;
|
||||
|
@ -276,11 +278,8 @@ vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface_id, void* draw, short s
|
|||
if (status)
|
||||
return status;
|
||||
|
||||
screen->flush_frontbuffer
|
||||
(
|
||||
screen, tex, 0, 0,
|
||||
vl_screen_get_private(drv->vscreen), NULL
|
||||
);
|
||||
screen->flush_frontbuffer(screen, tex, 0, 0,
|
||||
vscreen->get_private(vscreen), NULL);
|
||||
|
||||
screen->fence_reference(screen, &surf->fence, NULL);
|
||||
drv->pipe->flush(drv->pipe, &surf->fence, 0);
|
||||
|
|
Loading…
Reference in New Issue