1 /**************************************************************************
3 * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian.
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:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
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.
26 **************************************************************************/
32 #include <va/va_backend.h>
34 #include <pipe/p_format.h>
35 #include <pipe/p_state.h>
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__)
42 #define VA_MAX_IMAGE_FORMATS_SUPPORTED 2
43 #define VA_MAX_SUBPIC_FORMATS_SUPPORTED 2
44 #define VA_MAX_ENTRYPOINTS 1
49 struct vl_screen
*vscreen
;
50 struct pipe_surface
*backbuffer
;
51 } vlVaDriverContextPriv
;
56 enum pipe_video_chroma_format format
;
61 VAStatus
__vaDriverInit_0_31 (VADriverContextP ctx
);
64 struct VADriverVTable
vlVaGetVtable();
66 bool vlCreateHTAB(void);
67 void vlDestroyHTAB(void);
68 VAGenericID
vlAddDataHTAB(void *data
);
69 void* vlGetDataHTAB(VAGenericID handle
);
72 VAStatus
vlVaTerminate (VADriverContextP ctx
);
73 VAStatus
vlVaQueryConfigProfiles (VADriverContextP ctx
, VAProfile
*profile_list
,int *num_profiles
);
74 VAStatus
vlVaQueryConfigEntrypoints (VADriverContextP ctx
, VAProfile profile
, VAEntrypoint
*entrypoint_list
, int *num_entrypoints
);
75 VAStatus
vlVaGetConfigAttributes (VADriverContextP ctx
, VAProfile profile
, VAEntrypoint entrypoint
, VAConfigAttrib
*attrib_list
, int num_attribs
);
76 VAStatus
vlVaCreateConfig (VADriverContextP ctx
, VAProfile profile
, VAEntrypoint entrypoint
, VAConfigAttrib
*attrib_list
, int num_attribs
, VAConfigID
*config_id
);
77 VAStatus
vlVaDestroyConfig (VADriverContextP ctx
, VAConfigID config_id
);
78 VAStatus
vlVaQueryConfigAttributes (VADriverContextP ctx
, VAConfigID config_id
, VAProfile
*profile
, VAEntrypoint
*entrypoint
, VAConfigAttrib
*attrib_list
, int *num_attribs
);
79 VAStatus
vlVaCreateSurfaces (VADriverContextP ctx
,int width
,int height
,int format
,int num_surfaces
,VASurfaceID
*surfaces
);
80 VAStatus
vlVaDestroySurfaces (VADriverContextP ctx
, VASurfaceID
*surface_list
, int num_surfaces
);
81 VAStatus
vlVaCreateContext (VADriverContextP ctx
,VAConfigID config_id
,int picture_width
,int picture_height
,int flag
,VASurfaceID
*render_targets
,int num_render_targets
,VAContextID
*context
);
82 VAStatus
vlVaDestroyContext (VADriverContextP ctx
,VAContextID context
);
83 VAStatus
vlVaCreateBuffer (VADriverContextP ctx
,VAContextID context
,VABufferType type
,unsigned int size
,unsigned int num_elements
,void *data
,VABufferID
*buf_id
);
84 VAStatus
vlVaBufferSetNumElements (VADriverContextP ctx
,VABufferID buf_id
,unsigned int num_elements
);
85 VAStatus
vlVaMapBuffer (VADriverContextP ctx
,VABufferID buf_id
,void **pbuf
);
86 VAStatus
vlVaUnmapBuffer (VADriverContextP ctx
,VABufferID buf_id
);
87 VAStatus
vlVaDestroyBuffer (VADriverContextP ctx
,VABufferID buffer_id
);
88 VAStatus
vlVaBeginPicture (VADriverContextP ctx
,VAContextID context
,VASurfaceID render_target
);
89 VAStatus
vlVaRenderPicture (VADriverContextP ctx
,VAContextID context
,VABufferID
*buffers
,int num_buffers
);
90 VAStatus
vlVaEndPicture (VADriverContextP ctx
,VAContextID context
);
91 VAStatus
vlVaSyncSurface (VADriverContextP ctx
,VASurfaceID render_target
);
92 VAStatus
vlVaQuerySurfaceStatus (VADriverContextP ctx
,VASurfaceID render_target
,VASurfaceStatus
*status
);
93 VAStatus
vlVaPutSurface (VADriverContextP ctx
,
102 unsigned short destw
,
103 unsigned short desth
,
104 VARectangle
*cliprects
,
105 unsigned int number_cliprects
,
107 VAStatus
vlVaQueryImageFormats (VADriverContextP ctx
,VAImageFormat
*format_list
,int *num_formats
);
108 VAStatus
vlVaQuerySubpictureFormats(VADriverContextP ctx
,VAImageFormat
*format_list
,unsigned int *flags
,unsigned int *num_formats
);
109 VAStatus
vlVaCreateImage(VADriverContextP ctx
,VAImageFormat
*format
,int width
,int height
,VAImage
*image
);
110 VAStatus
vlVaDeriveImage(VADriverContextP ctx
,VASurfaceID surface
,VAImage
*image
);
111 VAStatus
vlVaDestroyImage(VADriverContextP ctx
,VAImageID image
);
112 VAStatus
vlVaSetImagePalette(VADriverContextP ctx
,VAImageID image
, unsigned char *palette
);
113 VAStatus
vlVaGetImage(VADriverContextP ctx
,VASurfaceID surface
,int x
,int y
,unsigned int width
,unsigned int height
,VAImageID image
);
114 VAStatus
vlVaPutImage(VADriverContextP ctx
,
119 unsigned int src_width
,
120 unsigned int src_height
,
123 unsigned int dest_width
,
124 unsigned int dest_height
);
125 VAStatus
vlVaQuerySubpictureFormats(VADriverContextP ctx
,VAImageFormat
*format_list
,unsigned int *flags
,unsigned int *num_formats
);
126 VAStatus
vlVaCreateSubpicture(VADriverContextP ctx
,VAImageID image
,VASubpictureID
*subpicture
);
127 VAStatus
vlVaDestroySubpicture(VADriverContextP ctx
,VASubpictureID subpicture
);
128 VAStatus
vlVaSubpictureImage(VADriverContextP ctx
,VASubpictureID subpicture
,VAImageID image
);
129 VAStatus
vlVaSetSubpictureChromakey(VADriverContextP ctx
,VASubpictureID subpicture
,unsigned int chromakey_min
,unsigned int chromakey_max
,unsigned int chromakey_mask
);
130 VAStatus
vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx
,VASubpictureID subpicture
,float global_alpha
);
131 VAStatus
vlVaAssociateSubpicture(VADriverContextP ctx
,
132 VASubpictureID subpicture
,
133 VASurfaceID
*target_surfaces
,
137 unsigned short src_width
,
138 unsigned short src_height
,
141 unsigned short dest_width
,
142 unsigned short dest_height
,
144 VAStatus
vlVaDeassociateSubpicture(VADriverContextP ctx
,VASubpictureID subpicture
,VASurfaceID
*target_surfaces
,int num_surfaces
);
145 VAStatus
vlVaQueryDisplayAttributes(VADriverContextP ctx
,VADisplayAttribute
*attr_list
,int *num_attributes
);
146 VAStatus
vlVaGetDisplayAttributes(VADriverContextP ctx
,VADisplayAttribute
*attr_list
,int num_attributes
);
147 VAStatus
vlVaSetDisplayAttributes(VADriverContextP ctx
,VADisplayAttribute
*attr_list
,int num_attributes
);
148 VAStatus
vlVaBufferInfo(VADriverContextP ctx
,VAContextID context
,VABufferID buf_id
,VABufferType
*type
,unsigned int *size
,unsigned int *num_elements
);
149 VAStatus
vlVaLockSurface(VADriverContextP ctx
,
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
,
160 VAStatus
vlVaUnlockSurface(VADriverContextP ctx
,VASurfaceID surface
);
162 #endif //VA_PRIVATE_H