ftab.c revision b122e50c3eabf157f8b7a3647590a37abd276c5c
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/**************************************************************************
28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2010 Thomas Balling Sørensen.
48a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * All Rights Reserved.
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Permission is hereby granted, free of charge, to any person obtaining a
78a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * copy of this software and associated documentation files (the
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * "Software"), to deal in the Software without restriction, including
9ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * without limitation the rights to use, copy, modify, merge, publish,
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * distribute, sub license, and/or sell copies of the Software, and to
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * permit persons to whom the Software is furnished to do so, subject to
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * the following conditions:
130b544ae222aab1c5d9122a8dfe2800451b31d979mtklein *
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * The above copyright notice and this permission notice (including the
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * next paragraph) shall be included in all copies or substantial portions
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * of the Software.
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
188f4d2306fa866a26f9448048ff63f692b2ba43aareed@google.com * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
198f4d2306fa866a26f9448048ff63f692b2ba43aareed@google.com * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
208f4d2306fa866a26f9448048ff63f692b2ba43aareed@google.com * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
218f4d2306fa866a26f9448048ff63f692b2ba43aareed@google.com * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
2207faed110275048c83a55ae39042da2c9d916108bungeman@google.com * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com *
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com **************************************************************************/
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include <assert.h>
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include <VA/va_backend.h>
307ffb1b21abcc7bbed5a0fc711f6dd7b9dbb4f577ctguil@chromium.org
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst struct VADriverVTable vtable =
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaTerminate) ( VADriverContextP ctx ); */
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaQueryConfigProfiles) ( VADriverContextP ctx, VAProfile *profile_list,int *num_profiles); */
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaQueryConfigEntrypoints) ( VADriverContextP ctx,	VAProfile profile, VAEntrypoint  *entrypoint_list, int *num_entrypoints	); */
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaGetConfigAttributes) ( VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint, VAConfigAttrib *attrib_list, int num_attribs ); */
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaCreateConfig) ( VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint,	VAConfigAttrib *attrib_list, int num_attribs, VAConfigID *config_id); */
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaDestroyConfig) ( VADriverContextP ctx, VAConfigID config_id); */
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaQueryConfigAttributes) ( VADriverContextP ctx, VAConfigID config_id, VAProfile *profile, VAEntrypoint *entrypoint, VAConfigAttrib *attrib_list, int *num_attribs); */
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaCreateConfig) ( VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoint,	VAConfigAttrib *attrib_list, int num_attribs, VAConfigID *config_id); */
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaDestroyConfig) ( VADriverContextP ctx, VAConfigID config_id ); */
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaQueryConfigAttributes) (VADriverContextP ctx,VAConfigID config_id,VAProfile *profile,VAEntrypoint *entrypoint,VAConfigAttrib *attrib_list,int *num_attribs); */
43fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com   0, /* VAStatus (*vaCreateSurfaces) ( VADriverContextP ctx,int width,int height,int format,int num_surfaces,VASurfaceID *surfaces); */
44fd4c00eb36c9164487bf9e1cea39eaca64a9be91bsalomon@google.com   0, /* VAStatus (*vaDestroySurfaces) ( VADriverContextP ctx, VASurfaceID *surface_list, int num_surfaces ); */
45fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com   0, /* VAStatus (*vaCreateContext) (VADriverContextP ctx,VAConfigID config_id,int picture_width,int picture_height,int flag,VASurfaceID *render_targets,int num_render_targets,VAContextID *context); */
46fd4c00eb36c9164487bf9e1cea39eaca64a9be91bsalomon@google.com   0, /* VAStatus (*vaDestroyContext) (VADriverContextP ctx,VAContextID context); */
47fd4c00eb36c9164487bf9e1cea39eaca64a9be91bsalomon@google.com   0, /* VAStatus (*vaCreateBuffer) (VADriverContextP ctx,VAContextID context,VABufferType type,unsigned int size,unsigned int num_elements,void *data,VABufferID *buf_id); */
486fc5699e777c27c4eea9587a131aecf6e92a677ajunov@chromium.org   0, /* VAStatus (*vaBufferSetNumElements) (VADriverContextP ctx,VABufferID buf_id,unsigned int num_elements); */
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaMapBuffer) (VADriverContextP ctx,VABufferID buf_id,void **pbuf); */
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaUnmapBuffer) (VADriverContextP ctx,VABufferID buf_id); */
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaDestroyBuffer) (VADriverContextP ctx,VABufferID buffer_id); */
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaBeginPicture) (VADriverContextP ctx,VAContextID context,VASurfaceID render_target); */
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaRenderPicture) (VADriverContextP ctx,VAContextID context,VABufferID *buffers,int num_buffers); */
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaEndPicture) (VADriverContextP ctx,VAContextID context); */
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaSyncSurface) (VADriverContextP ctx,VASurfaceID render_target); */
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaQuerySurfaceStatus) (VADriverContextP ctx,VASurfaceID render_target,VASurfaceStatus *status); */
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaPutSurface) (
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    		VADriverContextP ctx,
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		VASurfaceID surface,
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		void* draw,
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		short srcx,
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		short srcy,
63e12770148a7d170e4845ebfae75ac38ae9cf4f32Robert Phillips		unsigned short srcw,
64e12770148a7d170e4845ebfae75ac38ae9cf4f32Robert Phillips		unsigned short srch,
65e12770148a7d170e4845ebfae75ac38ae9cf4f32Robert Phillips		short destx,
66e12770148a7d170e4845ebfae75ac38ae9cf4f32Robert Phillips		short desty,
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned short destw,
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned short desth,
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		VARectangle *cliprects,
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned int number_cliprects,
718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned int flags); */
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaQueryImageFormats) ( VADriverContextP ctx, VAImageFormat *format_list,int *num_formats); */
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaCreateImage) (VADriverContextP ctx,VAImageFormat *format,int width,int height,VAImage *image); */
748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaDeriveImage) (VADriverContextP ctx,VASurfaceID surface,VAImage *image); */
758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaDestroyImage) (VADriverContextP ctx,VAImageID image); */
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaSetImagePalette) (VADriverContextP ctx,VAImageID image, unsigned char *palette); */
77cc4dac3dac215dc0dd56f7b30d07cc304671b033bsalomon@google.com   0, /* VAStatus (*vaGetImage) (VADriverContextP ctx,VASurfaceID surface,int x,int y,unsigned int width,unsigned int height,VAImageID image); */
78cc4dac3dac215dc0dd56f7b30d07cc304671b033bsalomon@google.com   0, /* VAStatus (*vaPutImage) (
79cc4dac3dac215dc0dd56f7b30d07cc304671b033bsalomon@google.com		VADriverContextP ctx,
80cc4dac3dac215dc0dd56f7b30d07cc304671b033bsalomon@google.com		VASurfaceID surface,
81dd5f7442f65813c1023a59c3380f4446583ccd5dtomhudson@google.com		VAImageID image,
82cc4dac3dac215dc0dd56f7b30d07cc304671b033bsalomon@google.com		int src_x,
83cc4dac3dac215dc0dd56f7b30d07cc304671b033bsalomon@google.com		int src_y,
84dd5f7442f65813c1023a59c3380f4446583ccd5dtomhudson@google.com		unsigned int src_width,
85dd5f7442f65813c1023a59c3380f4446583ccd5dtomhudson@google.com		unsigned int src_height,
86cc4dac3dac215dc0dd56f7b30d07cc304671b033bsalomon@google.com		int dest_x,
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		int dest_y,
8817a845f76094eb3b5ac464556fced2a60dd0f088jvanverth		unsigned int dest_width,
8946d3d39e65e0b3ea2ad7c91c176ccafb4df0fa24jvanverth@google.com		unsigned int dest_height
9046d3d39e65e0b3ea2ad7c91c176ccafb4df0fa24jvanverth@google.com	); */
9146d3d39e65e0b3ea2ad7c91c176ccafb4df0fa24jvanverth@google.com   0,	/* VAStatus (*vaQuerySubpictureFormats) (VADriverContextP ctx,VAImageFormat *format_list,unsigned int *flags,unsigned int *num_formats); */
9246d3d39e65e0b3ea2ad7c91c176ccafb4df0fa24jvanverth@google.com   0, /* VAStatus (*vaCreateSubpicture) (VADriverContextP ctx,VAImageID image,VASubpictureID *subpicture); */
9317a845f76094eb3b5ac464556fced2a60dd0f088jvanverth   0, /* VAStatus (*vaDestroySubpicture) (VADriverContextP ctx,VASubpictureID subpicture); */
94df3695e5c72b3b4401e71ff259827d87bfe8a06frobertphillips@google.com   0, /* VAStatus (*vaSetSubpictureImage) (VADriverContextP ctx,VASubpictureID subpicture,VAImageID image); */
95df3695e5c72b3b4401e71ff259827d87bfe8a06frobertphillips@google.com   0, /* VAStatus (*vaSetSubpictureChromakey) (VADriverContextP ctx,VASubpictureID subpicture,unsigned int chromakey_min,unsigned int chromakey_max,unsigned int chromakey_mask); */
96df3695e5c72b3b4401e71ff259827d87bfe8a06frobertphillips@google.com   0, /* VAStatus (*vaSetSubpictureGlobalAlpha) (VADriverContextP ctx,VASubpictureID subpicture,float global_alpha); */
97df3695e5c72b3b4401e71ff259827d87bfe8a06frobertphillips@google.com   0, /* VAStatus (*vaAssociateSubpicture) (
98df3695e5c72b3b4401e71ff259827d87bfe8a06frobertphillips@google.com		VADriverContextP ctx,
998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		VASubpictureID subpicture,
1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		VASurfaceID *target_surfaces,
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		int num_surfaces,
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		short src_x,
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		short src_y,
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned short src_width,
1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned short src_height,
1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		short dest_x,
1078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		short dest_y,
1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned short dest_width,
1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com		unsigned short dest_height,
110fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com		unsigned int flags); */
1111ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com   0, /* VAStatus (*vaDeassociateSubpicture) (VADriverContextP ctx,VASubpictureID subpicture,VASurfaceID *target_surfaces,int num_surfaces); */
1121ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com   0, /* VAStatus (*vaQueryDisplayAttributes) (VADriverContextP ctx,VADisplayAttribute *attr_list,int *num_attributes); */
1131ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com   0, /* VAStatus (*vaGetDisplayAttributes) (VADriverContextP ctx,VADisplayAttribute *attr_list,int num_attributes); */
1141ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com   0, /* VAStatus (*vaSetDisplayAttributes) (VADriverContextP ctx,VADisplayAttribute *attr_list,int num_attributes); */
1151ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com   0, /* VAStatus (*vaBufferInfo) (VADriverContextP ctx,VAContextID context,VABufferID buf_id,VABufferType *type,unsigned int *size,unsigned int *num_elements); */
1161ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com   0, /* VAStatus (*vaLockSurface) (
1171ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com		VADriverContextP ctx,
1181ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com                VASurfaceID surface,
1191ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com                unsigned int *fourcc,
1201ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com                unsigned int *luma_stride,
1211ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com                unsigned int *chroma_u_stride,
1221ddd7c39289b7dd18537fdac4b630e378cd78842bungeman@google.com                unsigned int *chroma_v_stride,
1238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                unsigned int *luma_offset,
1248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                unsigned int *chroma_u_offset,
1258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                unsigned int *chroma_v_offset,
1268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                unsigned int *buffer_name,
127fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com                void **buffer); */
1288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0, /* VAStatus (*vaUnlockSurface) (VADriverContextP ctx,VASurfaceID surface); */
1298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com   0 /* struct VADriverVTableGLX *glx; "Optional" */
1308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
132fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com