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>
33 #include <pipe/p_format.h>
34 #include <pipe/p_state.h>
36 #define VA_DEBUG(_str,...) debug_printf("[Gallium VA backend]: " _str,__VA_ARGS__)
37 #define VA_INFO(_str,...) VA_DEBUG("INFO: " _str,__VA_ARGS__)
38 #define VA_WARNING(_str,...) VA_DEBUG("WARNING: " _str,__VA_ARGS__)
39 #define VA_ERROR(_str,...) VA_DEBUG("ERROR: " _str,__VA_ARGS__)
41 #define VA_MAX_IMAGE_FORMATS_SUPPORTED 2
42 #define VA_MAX_SUBPIC_FORMATS_SUPPORTED 2
43 #define VA_MAX_ENTRYPOINTS 1
47 typedef unsigned int vlHandle
;
50 struct vl_screen
*vscreen
;
51 struct pipe_surface
*backbuffer
;
52 } vlVaDriverContextPriv
;
57 enum pipe_video_chroma_format format
;
62 VAStatus
__vaDriverInit_0_31 (VADriverContextP ctx
);
65 struct VADriverVTable
vlVaGetVtable();
69 VAStatus
vlVaTerminate (VADriverContextP ctx
);
70 VAStatus
vlVaQueryConfigProfiles (VADriverContextP ctx
, VAProfile
*profile_list
,int *num_profiles
);
71 VAStatus
vlVaQueryConfigEntrypoints (VADriverContextP ctx
, VAProfile profile
, VAEntrypoint
*entrypoint_list
, int *num_entrypoints
);
72 VAStatus
vlVaGetConfigAttributes (VADriverContextP ctx
, VAProfile profile
, VAEntrypoint entrypoint
, VAConfigAttrib
*attrib_list
, int num_attribs
);
73 VAStatus
vlVaCreateConfig (VADriverContextP ctx
, VAProfile profile
, VAEntrypoint entrypoint
, VAConfigAttrib
*attrib_list
, int num_attribs
, VAConfigID
*config_id
);
74 VAStatus
vlVaDestroyConfig (VADriverContextP ctx
, VAConfigID config_id
);
75 VAStatus
vlVaQueryConfigAttributes (VADriverContextP ctx
, VAConfigID config_id
, VAProfile
*profile
, VAEntrypoint
*entrypoint
, VAConfigAttrib
*attrib_list
, int *num_attribs
);
76 VAStatus
vlVaCreateSurfaces (VADriverContextP ctx
,int width
,int height
,int format
,int num_surfaces
,VASurfaceID
*surfaces
);
77 VAStatus
vlVaDestroySurfaces (VADriverContextP ctx
, VASurfaceID
*surface_list
, int num_surfaces
);
78 VAStatus
vlVaCreateContext (VADriverContextP ctx
,VAConfigID config_id
,int picture_width
,int picture_height
,int flag
,VASurfaceID
*render_targets
,int num_render_targets
,VAContextID
*context
);
79 VAStatus
vlVaDestroyContext (VADriverContextP ctx
,VAContextID context
);
80 VAStatus
vlVaCreateBuffer (VADriverContextP ctx
,VAContextID context
,VABufferType type
,unsigned int size
,unsigned int num_elements
,void *data
,VABufferID
*buf_id
);
81 VAStatus
vlVaBufferSetNumElements (VADriverContextP ctx
,VABufferID buf_id
,unsigned int num_elements
);
82 VAStatus
vlVaMapBuffer (VADriverContextP ctx
,VABufferID buf_id
,void **pbuf
);
83 VAStatus
vlVaUnmapBuffer (VADriverContextP ctx
,VABufferID buf_id
);
84 VAStatus
vlVaDestroyBuffer (VADriverContextP ctx
,VABufferID buffer_id
);
85 VAStatus
vlVaBeginPicture (VADriverContextP ctx
,VAContextID context
,VASurfaceID render_target
);
86 VAStatus
vlVaRenderPicture (VADriverContextP ctx
,VAContextID context
,VABufferID
*buffers
,int num_buffers
);
87 VAStatus
vlVaEndPicture (VADriverContextP ctx
,VAContextID context
);
88 VAStatus
vlVaSyncSurface (VADriverContextP ctx
,VASurfaceID render_target
);
89 VAStatus
vlVaQuerySurfaceStatus (VADriverContextP ctx
,VASurfaceID render_target
,VASurfaceStatus
*status
);
90 VAStatus
vlVaPutSurface (VADriverContextP ctx
,
100 unsigned short desth
,
101 VARectangle
*cliprects
,
102 unsigned int number_cliprects
,
104 VAStatus
vlVaQueryImageFormats (VADriverContextP ctx
,VAImageFormat
*format_list
,int *num_formats
);
105 VAStatus
vlVaQuerySubpictureFormats(VADriverContextP ctx
,VAImageFormat
*format_list
,unsigned int *flags
,unsigned int *num_formats
);
106 VAStatus
vlVaCreateImage(VADriverContextP ctx
,VAImageFormat
*format
,int width
,int height
,VAImage
*image
);
107 VAStatus
vlVaDeriveImage(VADriverContextP ctx
,VASurfaceID surface
,VAImage
*image
);
108 VAStatus
vlVaDestroyImage(VADriverContextP ctx
,VAImageID image
);
109 VAStatus
vlVaSetImagePalette(VADriverContextP ctx
,VAImageID image
, unsigned char *palette
);
110 VAStatus
vlVaGetImage(VADriverContextP ctx
,VASurfaceID surface
,int x
,int y
,unsigned int width
,unsigned int height
,VAImageID image
);
111 VAStatus
vlVaPutImage(VADriverContextP ctx
,
116 unsigned int src_width
,
117 unsigned int src_height
,
120 unsigned int dest_width
,
121 unsigned int dest_height
);
122 VAStatus
vlVaQuerySubpictureFormats(VADriverContextP ctx
,VAImageFormat
*format_list
,unsigned int *flags
,unsigned int *num_formats
);
123 VAStatus
vlVaCreateSubpicture(VADriverContextP ctx
,VAImageID image
,VASubpictureID
*subpicture
);
124 VAStatus
vlVaDestroySubpicture(VADriverContextP ctx
,VASubpictureID subpicture
);
125 VAStatus
vlVaSubpictureImage(VADriverContextP ctx
,VASubpictureID subpicture
,VAImageID image
);
126 VAStatus
vlVaSetSubpictureChromakey(VADriverContextP ctx
,VASubpictureID subpicture
,unsigned int chromakey_min
,unsigned int chromakey_max
,unsigned int chromakey_mask
);
127 VAStatus
vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx
,VASubpictureID subpicture
,float global_alpha
);
128 VAStatus
vlVaAssociateSubpicture(VADriverContextP ctx
,
129 VASubpictureID subpicture
,
130 VASurfaceID
*target_surfaces
,
134 unsigned short src_width
,
135 unsigned short src_height
,
138 unsigned short dest_width
,
139 unsigned short dest_height
,
141 VAStatus
vlVaDeassociateSubpicture(VADriverContextP ctx
,VASubpictureID subpicture
,VASurfaceID
*target_surfaces
,int num_surfaces
);
142 VAStatus
vlVaQueryDisplayAttributes(VADriverContextP ctx
,VADisplayAttribute
*attr_list
,int *num_attributes
);
143 VAStatus
vlVaGetDisplayAttributes(VADriverContextP ctx
,VADisplayAttribute
*attr_list
,int num_attributes
);
144 VAStatus
vlVaSetDisplayAttributes(VADriverContextP ctx
,VADisplayAttribute
*attr_list
,int num_attributes
);
145 VAStatus
vlVaBufferInfo(VADriverContextP ctx
,VAContextID context
,VABufferID buf_id
,VABufferType
*type
,unsigned int *size
,unsigned int *num_elements
);
146 VAStatus
vlVaLockSurface(VADriverContextP ctx
,
148 unsigned int *fourcc
,
149 unsigned int *luma_stride
,
150 unsigned int *chroma_u_stride
,
151 unsigned int *chroma_v_stride
,
152 unsigned int *luma_offset
,
153 unsigned int *chroma_u_offset
,
154 unsigned int *chroma_v_offset
,
155 unsigned int *buffer_name
,
157 VAStatus
vlVaUnlockSurface(VADriverContextP ctx
,VASurfaceID surface
);
159 #endif //VA_PRIVATE_H