va_private.h revision 8bc7ccede1e126329c371e22b6d462edd21720d0
1/************************************************************************** 2 * 3 * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 * 26 **************************************************************************/ 27 28#ifndef VA_PRIVATE_H 29#define VA_PRIVATE_H 30 31#include <va/va.h> 32#include <va/va_backend.h> 33 34#include "pipe/p_format.h" 35#include "pipe/p_state.h" 36 37#define VA_DEBUG(_str,...) debug_printf("[Gallium VA backend]: " _str,__VA_ARGS__) 38#define VA_INFO(_str,...) VA_DEBUG("INFO: " _str,__VA_ARGS__) 39#define VA_WARNING(_str,...) VA_DEBUG("WARNING: " _str,__VA_ARGS__) 40#define VA_ERROR(_str,...) VA_DEBUG("ERROR: " _str,__VA_ARGS__) 41 42#define VA_MAX_IMAGE_FORMATS_SUPPORTED 2 43#define VA_MAX_SUBPIC_FORMATS_SUPPORTED 2 44#define VA_MAX_ENTRYPOINTS 1 45 46#define VL_HANDLES 47 48typedef struct { 49 struct vl_screen *vscreen; 50 struct pipe_surface *backbuffer; 51} vlVaDriverContextPriv; 52 53typedef struct { 54 unsigned int width; 55 unsigned int height; 56 enum pipe_video_chroma_format format; 57 VADriverContextP ctx; 58} vlVaSurfacePriv; 59 60// Public functions: 61VAStatus __vaDriverInit_0_31 (VADriverContextP ctx); 62 63// Private functions: 64struct VADriverVTable vlVaGetVtable(); 65 66bool vlCreateHTAB(void); 67void vlDestroyHTAB(void); 68VAGenericID vlAddDataHTAB(void *data); 69void* vlGetDataHTAB(VAGenericID handle); 70 71// Vtable functions: 72VAStatus vlVaTerminate (VADriverContextP ctx); 73VAStatus vlVaQueryConfigProfiles (VADriverContextP ctx, VAProfile *profile_list,int *num_profiles); 74VAStatus vlVaQueryConfigEntrypoints (VADriverContextP ctx, VAProfile profile, VAEntrypoint *entrypoint_list, int *num_entrypoints); 75VAStatus vlVaGetConfigAttributes (VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint, VAConfigAttrib *attrib_list, int num_attribs); 76VAStatus vlVaCreateConfig (VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint, VAConfigAttrib *attrib_list, int num_attribs, VAConfigID *config_id); 77VAStatus vlVaDestroyConfig (VADriverContextP ctx, VAConfigID config_id); 78VAStatus vlVaQueryConfigAttributes (VADriverContextP ctx, VAConfigID config_id, VAProfile *profile, VAEntrypoint *entrypoint, VAConfigAttrib *attrib_list, int *num_attribs); 79VAStatus vlVaCreateSurfaces (VADriverContextP ctx,int width,int height,int format,int num_surfaces,VASurfaceID *surfaces); 80VAStatus vlVaDestroySurfaces (VADriverContextP ctx, VASurfaceID *surface_list, int num_surfaces); 81VAStatus vlVaCreateContext (VADriverContextP ctx,VAConfigID config_id,int picture_width,int picture_height,int flag,VASurfaceID *render_targets,int num_render_targets,VAContextID *context); 82VAStatus vlVaDestroyContext (VADriverContextP ctx,VAContextID context); 83VAStatus vlVaCreateBuffer (VADriverContextP ctx,VAContextID context,VABufferType type,unsigned int size,unsigned int num_elements,void *data,VABufferID *buf_id); 84VAStatus vlVaBufferSetNumElements (VADriverContextP ctx,VABufferID buf_id,unsigned int num_elements); 85VAStatus vlVaMapBuffer (VADriverContextP ctx,VABufferID buf_id,void **pbuf); 86VAStatus vlVaUnmapBuffer (VADriverContextP ctx,VABufferID buf_id); 87VAStatus vlVaDestroyBuffer (VADriverContextP ctx,VABufferID buffer_id); 88VAStatus vlVaBeginPicture (VADriverContextP ctx,VAContextID context,VASurfaceID render_target); 89VAStatus vlVaRenderPicture (VADriverContextP ctx,VAContextID context,VABufferID *buffers,int num_buffers); 90VAStatus vlVaEndPicture (VADriverContextP ctx,VAContextID context); 91VAStatus vlVaSyncSurface (VADriverContextP ctx,VASurfaceID render_target); 92VAStatus vlVaQuerySurfaceStatus (VADriverContextP ctx,VASurfaceID render_target,VASurfaceStatus *status); 93VAStatus vlVaPutSurface (VADriverContextP ctx, 94 VASurfaceID surface, 95 void* draw, 96 short srcx, 97 short srcy, 98 unsigned short srcw, 99 unsigned short srch, 100 short destx, 101 short desty, 102 unsigned short destw, 103 unsigned short desth, 104 VARectangle *cliprects, 105 unsigned int number_cliprects, 106 unsigned int flags); 107VAStatus vlVaQueryImageFormats (VADriverContextP ctx,VAImageFormat *format_list,int *num_formats); 108VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx,VAImageFormat *format_list,unsigned int *flags,unsigned int *num_formats); 109VAStatus vlVaCreateImage(VADriverContextP ctx,VAImageFormat *format,int width,int height,VAImage *image); 110VAStatus vlVaDeriveImage(VADriverContextP ctx,VASurfaceID surface,VAImage *image); 111VAStatus vlVaDestroyImage(VADriverContextP ctx,VAImageID image); 112VAStatus vlVaSetImagePalette(VADriverContextP ctx,VAImageID image, unsigned char *palette); 113VAStatus vlVaGetImage(VADriverContextP ctx,VASurfaceID surface,int x,int y,unsigned int width,unsigned int height,VAImageID image); 114VAStatus vlVaPutImage(VADriverContextP ctx, 115 VASurfaceID surface, 116 VAImageID image, 117 int src_x, 118 int src_y, 119 unsigned int src_width, 120 unsigned int src_height, 121 int dest_x, 122 int dest_y, 123 unsigned int dest_width, 124 unsigned int dest_height); 125VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx,VAImageFormat *format_list,unsigned int *flags,unsigned int *num_formats); 126VAStatus vlVaCreateSubpicture(VADriverContextP ctx,VAImageID image,VASubpictureID *subpicture); 127VAStatus vlVaDestroySubpicture(VADriverContextP ctx,VASubpictureID subpicture); 128VAStatus vlVaSubpictureImage(VADriverContextP ctx,VASubpictureID subpicture,VAImageID image); 129VAStatus vlVaSetSubpictureChromakey(VADriverContextP ctx,VASubpictureID subpicture,unsigned int chromakey_min,unsigned int chromakey_max,unsigned int chromakey_mask); 130VAStatus vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx,VASubpictureID subpicture,float global_alpha); 131VAStatus vlVaAssociateSubpicture(VADriverContextP ctx, 132 VASubpictureID subpicture, 133 VASurfaceID *target_surfaces, 134 int num_surfaces, 135 short src_x, 136 short src_y, 137 unsigned short src_width, 138 unsigned short src_height, 139 short dest_x, 140 short dest_y, 141 unsigned short dest_width, 142 unsigned short dest_height, 143 unsigned int flags); 144VAStatus vlVaDeassociateSubpicture(VADriverContextP ctx,VASubpictureID subpicture,VASurfaceID *target_surfaces,int num_surfaces); 145VAStatus vlVaQueryDisplayAttributes(VADriverContextP ctx,VADisplayAttribute *attr_list,int *num_attributes); 146VAStatus vlVaGetDisplayAttributes(VADriverContextP ctx,VADisplayAttribute *attr_list,int num_attributes); 147VAStatus vlVaSetDisplayAttributes(VADriverContextP ctx,VADisplayAttribute *attr_list,int num_attributes); 148VAStatus vlVaBufferInfo(VADriverContextP ctx,VAContextID context,VABufferID buf_id,VABufferType *type,unsigned int *size,unsigned int *num_elements); 149VAStatus vlVaLockSurface(VADriverContextP ctx, 150 VASurfaceID surface, 151 unsigned int *fourcc, 152 unsigned int *luma_stride, 153 unsigned int *chroma_u_stride, 154 unsigned int *chroma_v_stride, 155 unsigned int *luma_offset, 156 unsigned int *chroma_u_offset, 157 unsigned int *chroma_v_offset, 158 unsigned int *buffer_name, 159 void **buffer); 160VAStatus vlVaUnlockSurface(VADriverContextP ctx,VASurfaceID surface); 161 162#endif //VA_PRIVATE_H 163