Blame va/va_backend.h

Packit Service 9402ce
/*
Packit Service 9402ce
 * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
Packit Service 9402ce
 *
Packit Service 9402ce
 * Permission is hereby granted, free of charge, to any person obtaining a
Packit Service 9402ce
 * copy of this software and associated documentation files (the
Packit Service 9402ce
 * "Software"), to deal in the Software without restriction, including
Packit Service 9402ce
 * without limitation the rights to use, copy, modify, merge, publish,
Packit Service 9402ce
 * distribute, sub license, and/or sell copies of the Software, and to
Packit Service 9402ce
 * permit persons to whom the Software is furnished to do so, subject to
Packit Service 9402ce
 * the following conditions:
Packit Service 9402ce
 * 
Packit Service 9402ce
 * The above copyright notice and this permission notice (including the
Packit Service 9402ce
 * next paragraph) shall be included in all copies or substantial portions
Packit Service 9402ce
 * of the Software.
Packit Service 9402ce
 * 
Packit Service 9402ce
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
Packit Service 9402ce
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit Service 9402ce
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
Packit Service 9402ce
 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
Packit Service 9402ce
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
Packit Service 9402ce
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
Packit Service 9402ce
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit Service 9402ce
 */
Packit Service 9402ce
Packit Service 9402ce
/*
Packit Service 9402ce
 * Video Decode Acceleration -Backend API
Packit Service 9402ce
 */
Packit Service 9402ce
Packit Service 9402ce
#ifndef _VA_BACKEND_H_
Packit Service 9402ce
#define _VA_BACKEND_H_
Packit Service 9402ce
Packit Service 9402ce
#include <va/va.h>
Packit Service 9402ce
Packit Service 9402ce
typedef struct VADriverContext *VADriverContextP;
Packit Service 9402ce
typedef struct VADisplayContext *VADisplayContextP;
Packit Service 9402ce
Packit Service 9402ce
/** \brief VA display types. */
Packit Service 9402ce
enum {
Packit Service 9402ce
    /** \brief Mask to major identifier for VA display type. */
Packit Service 9402ce
    VA_DISPLAY_MAJOR_MASK = 0xf0,
Packit Service 9402ce
Packit Service 9402ce
    /** \brief VA/X11 API is used, through vaGetDisplay() entry-point. */
Packit Service 9402ce
    VA_DISPLAY_X11      = 0x10,
Packit Service 9402ce
    /** \brief VA/GLX API is used, through vaGetDisplayGLX() entry-point. */
Packit Service 9402ce
    VA_DISPLAY_GLX      = (VA_DISPLAY_X11 | (1 << 0)),
Packit Service 9402ce
    /** \brief VA/Android API is used, through vaGetDisplay() entry-point. */
Packit Service 9402ce
    VA_DISPLAY_ANDROID  = 0x20,
Packit Service 9402ce
    /** \brief VA/DRM API is used, through vaGetDisplayDRM() entry-point. */
Packit Service 9402ce
    VA_DISPLAY_DRM      = 0x30,
Packit Service 9402ce
    /** \brief VA/DRM API is used, with a render-node device path */
Packit Service 9402ce
    VA_DISPLAY_DRM_RENDERNODES = (VA_DISPLAY_DRM | (1 << 0)),
Packit Service 9402ce
    /** \brief VA/Wayland API is used, through vaGetDisplayWl() entry-point. */
Packit Service 9402ce
    VA_DISPLAY_WAYLAND  = 0x40,
Packit Service 9402ce
};
Packit Service 9402ce
Packit Service 9402ce
struct VADriverVTable
Packit Service 9402ce
{
Packit Service 9402ce
	VAStatus (*vaTerminate) ( VADriverContextP ctx );
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQueryConfigProfiles) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAProfile *profile_list,	/* out */
Packit Service 9402ce
		int *num_profiles			/* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQueryConfigEntrypoints) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAProfile profile,
Packit Service 9402ce
		VAEntrypoint  *entrypoint_list,	/* out */
Packit Service 9402ce
		int *num_entrypoints			/* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaGetConfigAttributes) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAProfile profile,
Packit Service 9402ce
		VAEntrypoint entrypoint,
Packit Service 9402ce
		VAConfigAttrib *attrib_list,	/* in/out */
Packit Service 9402ce
		int num_attribs
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaCreateConfig) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAProfile profile, 
Packit Service 9402ce
		VAEntrypoint entrypoint, 
Packit Service 9402ce
		VAConfigAttrib *attrib_list,
Packit Service 9402ce
		int num_attribs,
Packit Service 9402ce
		VAConfigID *config_id		/* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDestroyConfig) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAConfigID config_id
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQueryConfigAttributes) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAConfigID config_id, 
Packit Service 9402ce
		VAProfile *profile,		/* out */
Packit Service 9402ce
		VAEntrypoint *entrypoint, 	/* out */
Packit Service 9402ce
		VAConfigAttrib *attrib_list,	/* out */
Packit Service 9402ce
		int *num_attribs		/* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaCreateSurfaces) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		int width,
Packit Service 9402ce
		int height,
Packit Service 9402ce
		int format,
Packit Service 9402ce
		int num_surfaces,
Packit Service 9402ce
		VASurfaceID *surfaces		/* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDestroySurfaces) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID *surface_list,
Packit Service 9402ce
		int num_surfaces
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaCreateContext) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAConfigID config_id,
Packit Service 9402ce
		int picture_width,
Packit Service 9402ce
		int picture_height,
Packit Service 9402ce
		int flag,
Packit Service 9402ce
		VASurfaceID *render_targets,
Packit Service 9402ce
		int num_render_targets,
Packit Service 9402ce
		VAContextID *context		/* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDestroyContext) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAContextID context
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaCreateBuffer) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAContextID context,		/* in */
Packit Service 9402ce
		VABufferType type,		/* in */
Packit Service 9402ce
		unsigned int size,		/* in */
Packit Service 9402ce
		unsigned int num_elements,	/* in */
Packit Service 9402ce
		void *data,			/* in */
Packit Service 9402ce
                VABufferID *buf_id
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaBufferSetNumElements) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VABufferID buf_id,	/* in */
Packit Service 9402ce
		unsigned int num_elements	/* in */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaMapBuffer) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VABufferID buf_id,	/* in */
Packit Service 9402ce
		void **pbuf         /* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaUnmapBuffer) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VABufferID buf_id	/* in */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDestroyBuffer) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VABufferID buffer_id
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaBeginPicture) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAContextID context,
Packit Service 9402ce
		VASurfaceID render_target
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaRenderPicture) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAContextID context,
Packit Service 9402ce
		VABufferID *buffers,
Packit Service 9402ce
		int num_buffers
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaEndPicture) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAContextID context
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaSyncSurface) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID render_target
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQuerySurfaceStatus) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID render_target,
Packit Service 9402ce
		VASurfaceStatus *status	/* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQuerySurfaceError) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID render_target,
Packit Service 9402ce
                VAStatus error_status,
Packit Service 9402ce
                void **error_info /*out*/
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaPutSurface) (
Packit Service 9402ce
    		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID surface,
Packit Service 9402ce
		void* draw, /* Drawable of window system */
Packit Service 9402ce
		short srcx,
Packit Service 9402ce
		short srcy,
Packit Service 9402ce
		unsigned short srcw,
Packit Service 9402ce
		unsigned short srch,
Packit Service 9402ce
		short destx,
Packit Service 9402ce
		short desty,
Packit Service 9402ce
		unsigned short destw,
Packit Service 9402ce
		unsigned short desth,
Packit Service 9402ce
		VARectangle *cliprects, /* client supplied clip list */
Packit Service 9402ce
		unsigned int number_cliprects, /* number of clip rects in the clip list */
Packit Service 9402ce
		unsigned int flags /* de-interlacing flags */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQueryImageFormats) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAImageFormat *format_list,        /* out */
Packit Service 9402ce
		int *num_formats           /* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaCreateImage) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAImageFormat *format,
Packit Service 9402ce
		int width,
Packit Service 9402ce
		int height,
Packit Service 9402ce
		VAImage *image     /* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDeriveImage) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID surface,
Packit Service 9402ce
		VAImage *image     /* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDestroyImage) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAImageID image
Packit Service 9402ce
	);
Packit Service 9402ce
	
Packit Service 9402ce
	VAStatus (*vaSetImagePalette) (
Packit Service 9402ce
	        VADriverContextP ctx,
Packit Service 9402ce
	        VAImageID image,
Packit Service 9402ce
	        /*
Packit Service 9402ce
                 * pointer to an array holding the palette data.  The size of the array is
Packit Service 9402ce
                 * num_palette_entries * entry_bytes in size.  The order of the components
Packit Service 9402ce
                 * in the palette is described by the component_order in VAImage struct
Packit Service 9402ce
                 */
Packit Service 9402ce
                unsigned char *palette
Packit Service 9402ce
	);
Packit Service 9402ce
	
Packit Service 9402ce
	VAStatus (*vaGetImage) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID surface,
Packit Service 9402ce
		int x,     /* coordinates of the upper left source pixel */
Packit Service 9402ce
		int y,
Packit Service 9402ce
		unsigned int width, /* width and height of the region */
Packit Service 9402ce
		unsigned int height,
Packit Service 9402ce
		VAImageID image
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaPutImage) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASurfaceID surface,
Packit Service 9402ce
		VAImageID image,
Packit Service 9402ce
		int src_x,
Packit Service 9402ce
		int src_y,
Packit Service 9402ce
		unsigned int src_width,
Packit Service 9402ce
		unsigned int src_height,
Packit Service 9402ce
		int dest_x,
Packit Service 9402ce
		int dest_y,
Packit Service 9402ce
		unsigned int dest_width,
Packit Service 9402ce
		unsigned int dest_height
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQuerySubpictureFormats) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAImageFormat *format_list,        /* out */
Packit Service 9402ce
		unsigned int *flags,       /* out */
Packit Service 9402ce
		unsigned int *num_formats  /* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaCreateSubpicture) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VAImageID image,
Packit Service 9402ce
		VASubpictureID *subpicture   /* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDestroySubpicture) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASubpictureID subpicture
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
        VAStatus (*vaSetSubpictureImage) (
Packit Service 9402ce
                VADriverContextP ctx,
Packit Service 9402ce
                VASubpictureID subpicture,
Packit Service 9402ce
                VAImageID image
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaSetSubpictureChromakey) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASubpictureID subpicture,
Packit Service 9402ce
		unsigned int chromakey_min,
Packit Service 9402ce
		unsigned int chromakey_max,
Packit Service 9402ce
		unsigned int chromakey_mask
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaSetSubpictureGlobalAlpha) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASubpictureID subpicture,
Packit Service 9402ce
		float global_alpha 
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaAssociateSubpicture) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASubpictureID subpicture,
Packit Service 9402ce
		VASurfaceID *target_surfaces,
Packit Service 9402ce
		int num_surfaces,
Packit Service 9402ce
		short src_x, /* upper left offset in subpicture */
Packit Service 9402ce
		short src_y,
Packit Service 9402ce
		unsigned short src_width,
Packit Service 9402ce
		unsigned short src_height,
Packit Service 9402ce
		short dest_x, /* upper left offset in surface */
Packit Service 9402ce
		short dest_y,
Packit Service 9402ce
		unsigned short dest_width,
Packit Service 9402ce
		unsigned short dest_height,
Packit Service 9402ce
		/*
Packit Service 9402ce
		 * whether to enable chroma-keying or global-alpha
Packit Service 9402ce
		 * see VA_SUBPICTURE_XXX values
Packit Service 9402ce
		 */
Packit Service 9402ce
		unsigned int flags
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaDeassociateSubpicture) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VASubpictureID subpicture,
Packit Service 9402ce
		VASurfaceID *target_surfaces,
Packit Service 9402ce
		int num_surfaces
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaQueryDisplayAttributes) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VADisplayAttribute *attr_list,	/* out */
Packit Service 9402ce
		int *num_attributes		/* out */
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
	VAStatus (*vaGetDisplayAttributes) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
		VADisplayAttribute *attr_list,	/* in/out */
Packit Service 9402ce
		int num_attributes
Packit Service 9402ce
        );
Packit Service 9402ce
        
Packit Service 9402ce
        VAStatus (*vaSetDisplayAttributes) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
                VADisplayAttribute *attr_list,
Packit Service 9402ce
                int num_attributes
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        /* used by va trace */        
Packit Service 9402ce
        VAStatus (*vaBufferInfo) (
Packit Service 9402ce
                   VADriverContextP ctx,      /* in */
Packit Service 9402ce
                   VABufferID buf_id,         /* in */
Packit Service 9402ce
                   VABufferType *type,        /* out */
Packit Service 9402ce
                   unsigned int *size,        /* out */
Packit Service 9402ce
                   unsigned int *num_elements /* out */
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        /* lock/unlock surface for external access */    
Packit Service 9402ce
        VAStatus (*vaLockSurface) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
                VASurfaceID surface,
Packit Service 9402ce
                unsigned int *fourcc, /* out  for follow argument */
Packit Service 9402ce
                unsigned int *luma_stride,
Packit Service 9402ce
                unsigned int *chroma_u_stride,
Packit Service 9402ce
                unsigned int *chroma_v_stride,
Packit Service 9402ce
                unsigned int *luma_offset,
Packit Service 9402ce
                unsigned int *chroma_u_offset,
Packit Service 9402ce
                unsigned int *chroma_v_offset,
Packit Service 9402ce
                unsigned int *buffer_name, /* if it is not NULL, assign the low lever
Packit Service 9402ce
                                            * surface buffer name
Packit Service 9402ce
                                            */
Packit Service 9402ce
                void **buffer /* if it is not NULL, map the surface buffer for
Packit Service 9402ce
                                * CPU access
Packit Service 9402ce
                                */
Packit Service 9402ce
        );
Packit Service 9402ce
    
Packit Service 9402ce
        VAStatus (*vaUnlockSurface) (
Packit Service 9402ce
		VADriverContextP ctx,
Packit Service 9402ce
                VASurfaceID surface
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        /* DEPRECATED */
Packit Service 9402ce
        VAStatus
Packit Service 9402ce
        (*vaGetSurfaceAttributes)(
Packit Service 9402ce
            VADriverContextP    dpy,
Packit Service 9402ce
            VAConfigID          config,
Packit Service 9402ce
            VASurfaceAttrib    *attrib_list,
Packit Service 9402ce
            unsigned int        num_attribs
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus
Packit Service 9402ce
        (*vaCreateSurfaces2)(
Packit Service 9402ce
            VADriverContextP    ctx,
Packit Service 9402ce
            unsigned int        format,
Packit Service 9402ce
            unsigned int        width,
Packit Service 9402ce
            unsigned int        height,
Packit Service 9402ce
            VASurfaceID        *surfaces,
Packit Service 9402ce
            unsigned int        num_surfaces,
Packit Service 9402ce
            VASurfaceAttrib    *attrib_list,
Packit Service 9402ce
            unsigned int        num_attribs
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus
Packit Service 9402ce
        (*vaQuerySurfaceAttributes)(
Packit Service 9402ce
            VADriverContextP    dpy,
Packit Service 9402ce
            VAConfigID          config,
Packit Service 9402ce
            VASurfaceAttrib    *attrib_list,
Packit Service 9402ce
            unsigned int       *num_attribs
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus
Packit Service 9402ce
        (*vaAcquireBufferHandle)(
Packit Service 9402ce
            VADriverContextP    ctx,
Packit Service 9402ce
            VABufferID          buf_id,         /* in */
Packit Service 9402ce
            VABufferInfo *      buf_info        /* in/out */
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus
Packit Service 9402ce
        (*vaReleaseBufferHandle)(
Packit Service 9402ce
            VADriverContextP    ctx,
Packit Service 9402ce
            VABufferID          buf_id          /* in */
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus (*vaCreateMFContext) (
Packit Service 9402ce
            VADriverContextP ctx,
Packit Service 9402ce
            VAMFContextID *mfe_context    /* out */
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus (*vaMFAddContext) (
Packit Service 9402ce
            VADriverContextP ctx,
Packit Service 9402ce
            VAMFContextID mf_context,
Packit Service 9402ce
            VAContextID context
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus (*vaMFReleaseContext) (
Packit Service 9402ce
            VADriverContextP ctx,
Packit Service 9402ce
            VAMFContextID mf_context,
Packit Service 9402ce
            VAContextID context
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus (*vaMFSubmit) (
Packit Service 9402ce
            VADriverContextP ctx,
Packit Service 9402ce
            VAMFContextID mf_context,
Packit Service 9402ce
            VAContextID *contexts,
Packit Service 9402ce
            int num_contexts
Packit Service 9402ce
        );
Packit Service 9402ce
	VAStatus (*vaCreateBuffer2) (
Packit Service 9402ce
            VADriverContextP ctx,
Packit Service 9402ce
            VAContextID context,                /* in */
Packit Service 9402ce
            VABufferType type,                  /* in */
Packit Service 9402ce
            unsigned int width,                 /* in */
Packit Service 9402ce
            unsigned int height,                /* in */
Packit Service 9402ce
            unsigned int *unit_size,            /* out */
Packit Service 9402ce
            unsigned int *pitch,                /* out */
Packit Service 9402ce
            VABufferID *buf_id                  /* out */
Packit Service 9402ce
	);
Packit Service 9402ce
Packit Service 9402ce
        VAStatus (*vaQueryProcessingRate) (
Packit Service 9402ce
            VADriverContextP ctx,               /* in */
Packit Service 9402ce
            VAConfigID config_id,               /* in */
Packit Service 9402ce
            VAProcessingRateParameter *proc_buf,/* in */
Packit Service 9402ce
            unsigned int *processing_rate	/* out */
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        VAStatus
Packit Service 9402ce
        (*vaExportSurfaceHandle)(
Packit Service 9402ce
            VADriverContextP    ctx,
Packit Service 9402ce
            VASurfaceID         surface_id,     /* in */
Packit Service 9402ce
            uint32_t            mem_type,       /* in */
Packit Service 9402ce
            uint32_t            flags,          /* in */
Packit Service 9402ce
            void               *descriptor      /* out */
Packit Service 9402ce
        );
Packit Service 9402ce
Packit Service 9402ce
        /** \brief Reserved bytes for future use, must be zero */
Packit Service 9402ce
        unsigned long reserved[57];
Packit Service 9402ce
};
Packit Service 9402ce
Packit Service 9402ce
struct VADriverContext
Packit Service 9402ce
{
Packit Service 9402ce
    void *pDriverData;
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * The core VA implementation hooks.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This structure is allocated from libva with calloc().
Packit Service 9402ce
     */
Packit Service 9402ce
    struct VADriverVTable *vtable;
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * The VA/GLX implementation hooks.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This structure is intended for drivers that implement the
Packit Service 9402ce
     * VA/GLX API. The driver implementation is responsible for the
Packit Service 9402ce
     * allocation and deallocation of this structure.
Packit Service 9402ce
     */
Packit Service 9402ce
    struct VADriverVTableGLX *vtable_glx;
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * The VA/EGL implementation hooks.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This structure is intended for drivers that implement the
Packit Service 9402ce
     * VA/EGL API. The driver implementation is responsible for the
Packit Service 9402ce
     * allocation and deallocation of this structure.
Packit Service 9402ce
     */
Packit Service 9402ce
    struct VADriverVTableEGL *vtable_egl;
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * The third-party/private implementation hooks.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This structure is intended for drivers that implement the
Packit Service 9402ce
     * private API. The driver implementation is responsible for the
Packit Service 9402ce
     * allocation and deallocation of this structure.
Packit Service 9402ce
     */
Packit Service 9402ce
    void *vtable_tpi;
Packit Service 9402ce
Packit Service 9402ce
    void *native_dpy;
Packit Service 9402ce
    int x11_screen;
Packit Service 9402ce
    int version_major;
Packit Service 9402ce
    int version_minor;
Packit Service 9402ce
    int max_profiles;
Packit Service 9402ce
    int max_entrypoints;
Packit Service 9402ce
    int max_attributes;
Packit Service 9402ce
    int max_image_formats;
Packit Service 9402ce
    int max_subpic_formats;
Packit Service 9402ce
    int max_display_attributes;
Packit Service 9402ce
    const char *str_vendor;
Packit Service 9402ce
Packit Service 9402ce
    void *handle;			/* dlopen handle */
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * \brief DRM state.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This field holds driver specific data for DRM-based
Packit Service 9402ce
     * drivers. This structure is allocated from libva with
Packit Service 9402ce
     * calloc(). Do not deallocate from within VA driver
Packit Service 9402ce
     * implementations.
Packit Service 9402ce
     *
Packit Service 9402ce
     * All structures shall be derived from struct drm_state. So, for
Packit Service 9402ce
     * instance, this field holds a dri_state structure for VA/X11
Packit Service 9402ce
     * drivers that use the DRM protocol.
Packit Service 9402ce
     */
Packit Service 9402ce
    void *drm_state;
Packit Service 9402ce
Packit Service 9402ce
    void *glx;				/* opaque for GLX code */
Packit Service 9402ce
Packit Service 9402ce
    /** \brief VA display type. */
Packit Service 9402ce
    unsigned long display_type;
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * The VA/Wayland implementation hooks.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This structure is intended for drivers that implement the
Packit Service 9402ce
     * VA/Wayland API. libVA allocates this structure with calloc()
Packit Service 9402ce
     * and owns the resulting memory.
Packit Service 9402ce
     */
Packit Service 9402ce
    struct VADriverVTableWayland *vtable_wayland;
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * \brief The VA/VPP implementation hooks.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This structure is allocated from libva with calloc().
Packit Service 9402ce
     */
Packit Service 9402ce
    struct VADriverVTableVPP *vtable_vpp;
Packit Service 9402ce
Packit Service 9402ce
    char *override_driver_name;
Packit Service 9402ce
Packit Service 9402ce
    void *pDisplayContext;
Packit Service 9402ce
Packit Service 9402ce
    /**
Packit Service 9402ce
     * Error callback.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This is set by libva when the driver is opened, and will not be
Packit Service 9402ce
     * changed thereafter.  The driver can call it with an error message,
Packit Service 9402ce
     * which will be propagated to the API user through their error
Packit Service 9402ce
     * callbacks, or sent to a default output if no callback is available.
Packit Service 9402ce
     *
Packit Service 9402ce
     * It is expected that end users will always be able to see these
Packit Service 9402ce
     * messages, so it should be called only for serious errors.  For
Packit Service 9402ce
     * example, hardware problems or fatal configuration errors.
Packit Service 9402ce
     *
Packit Service 9402ce
     * @param pDriverContext  Pointer to the driver context structure
Packit Service 9402ce
     *                        being used by the current driver.
Packit Service 9402ce
     * @param message  Message to send to the API user.  This must be a
Packit Service 9402ce
     *                 null-terminated string.
Packit Service 9402ce
     */
Packit Service 9402ce
    void (*error_callback)(VADriverContextP pDriverContext,
Packit Service 9402ce
                           const char *message);
Packit Service 9402ce
    /**
Packit Service 9402ce
     * Info callback.
Packit Service 9402ce
     *
Packit Service 9402ce
     * This has the same behaviour as the error callback, but has its
Packit Service 9402ce
     * own set of callbacks to the API user.
Packit Service 9402ce
     *
Packit Service 9402ce
     * It should be used for informational messages which may be useful
Packit Service 9402ce
     * for an application programmer or for debugging.  For example, minor
Packit Service 9402ce
     * configuration errors, or information about the reason when another
Packit Service 9402ce
     * API call generates an error return.  It is not expected that end
Packit Service 9402ce
     * users will see these messages.
Packit Service 9402ce
     *
Packit Service 9402ce
     * @param pDriverContext  Pointer to the driver context structure
Packit Service 9402ce
     *                        being used by the current driver.
Packit Service 9402ce
     * @param message  Message to send to the API user.  This must be a
Packit Service 9402ce
     *                 null-terminated string.
Packit Service 9402ce
     */
Packit Service 9402ce
    void (*info_callback)(VADriverContextP pDriverContext,
Packit Service 9402ce
                          const char *message);
Packit Service 9402ce
Packit Service 9402ce
    unsigned long reserved[38];         /* reserve for future add-ins, decrease the subscript accordingly */
Packit Service 9402ce
};
Packit Service 9402ce
Packit Service 9402ce
#define VA_DISPLAY_MAGIC 0x56414430 /* VAD0 */
Packit Service 9402ce
struct VADisplayContext
Packit Service 9402ce
{
Packit Service 9402ce
    int vadpy_magic;
Packit Service 9402ce
    
Packit Service 9402ce
    VADisplayContextP pNext;
Packit Service 9402ce
    VADriverContextP pDriverContext;
Packit Service 9402ce
Packit Service 9402ce
    int (*vaIsValid) (
Packit Service 9402ce
	VADisplayContextP ctx
Packit Service 9402ce
    );
Packit Service 9402ce
Packit Service 9402ce
    void (*vaDestroy) (
Packit Service 9402ce
	VADisplayContextP ctx
Packit Service 9402ce
    );
Packit Service 9402ce
Packit Service 9402ce
    VAStatus (*vaGetDriverName) (
Packit Service 9402ce
	VADisplayContextP ctx,
Packit Service 9402ce
	char **driver_name
Packit Service 9402ce
    );
Packit Service 9402ce
Packit Service 9402ce
    void *opaque; /* opaque for display extensions (e.g. GLX) */
Packit Service 9402ce
    void *vatrace; /* opaque for VA trace context */
Packit Service 9402ce
    void *vafool; /* opaque for VA fool context */
Packit Service 9402ce
Packit Service 9402ce
    VAMessageCallback error_callback;
Packit Service 9402ce
    void *error_callback_user_context;
Packit Service 9402ce
    VAMessageCallback info_callback;
Packit Service 9402ce
    void *info_callback_user_context;
Packit Service 9402ce
Packit Service 9402ce
    /** \brief Reserved bytes for future use, must be zero */
Packit Service 9402ce
    unsigned long reserved[32];
Packit Service 9402ce
};
Packit Service 9402ce
Packit Service 9402ce
typedef VAStatus (*VADriverInit) (
Packit Service 9402ce
    VADriverContextP driver_context
Packit Service 9402ce
);
Packit Service 9402ce
Packit Service 9402ce
#endif /* _VA_BACKEND_H_ */