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