1*54e60f84SAndroid Build Coastguard Worker /* 2*54e60f84SAndroid Build Coastguard Worker * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved. 3*54e60f84SAndroid Build Coastguard Worker * 4*54e60f84SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*54e60f84SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the 6*54e60f84SAndroid Build Coastguard Worker * "Software"), to deal in the Software without restriction, including 7*54e60f84SAndroid Build Coastguard Worker * without limitation the rights to use, copy, modify, merge, publish, 8*54e60f84SAndroid Build Coastguard Worker * distribute, sub license, and/or sell copies of the Software, and to 9*54e60f84SAndroid Build Coastguard Worker * permit persons to whom the Software is furnished to do so, subject to 10*54e60f84SAndroid Build Coastguard Worker * the following conditions: 11*54e60f84SAndroid Build Coastguard Worker * 12*54e60f84SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the 13*54e60f84SAndroid Build Coastguard Worker * next paragraph) shall be included in all copies or substantial portions 14*54e60f84SAndroid Build Coastguard Worker * of the Software. 15*54e60f84SAndroid Build Coastguard Worker * 16*54e60f84SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17*54e60f84SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18*54e60f84SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19*54e60f84SAndroid Build Coastguard Worker * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20*54e60f84SAndroid Build Coastguard Worker * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21*54e60f84SAndroid Build Coastguard Worker * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22*54e60f84SAndroid Build Coastguard Worker * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23*54e60f84SAndroid Build Coastguard Worker */ 24*54e60f84SAndroid Build Coastguard Worker 25*54e60f84SAndroid Build Coastguard Worker #ifndef VA_GLX_H 26*54e60f84SAndroid Build Coastguard Worker #define VA_GLX_H 27*54e60f84SAndroid Build Coastguard Worker 28*54e60f84SAndroid Build Coastguard Worker #include <va/va.h> 29*54e60f84SAndroid Build Coastguard Worker #include <GL/glx.h> 30*54e60f84SAndroid Build Coastguard Worker 31*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus 32*54e60f84SAndroid Build Coastguard Worker extern "C" { 33*54e60f84SAndroid Build Coastguard Worker #endif 34*54e60f84SAndroid Build Coastguard Worker 35*54e60f84SAndroid Build Coastguard Worker /** 36*54e60f84SAndroid Build Coastguard Worker * Return a suitable VADisplay for VA API 37*54e60f84SAndroid Build Coastguard Worker * 38*54e60f84SAndroid Build Coastguard Worker * @param[in] dpy the X11 display 39*54e60f84SAndroid Build Coastguard Worker * @return a VADisplay 40*54e60f84SAndroid Build Coastguard Worker */ 41*54e60f84SAndroid Build Coastguard Worker VADisplay vaGetDisplayGLX( 42*54e60f84SAndroid Build Coastguard Worker Display *dpy 43*54e60f84SAndroid Build Coastguard Worker ); 44*54e60f84SAndroid Build Coastguard Worker 45*54e60f84SAndroid Build Coastguard Worker /** 46*54e60f84SAndroid Build Coastguard Worker * Create a surface used for display to OpenGL 47*54e60f84SAndroid Build Coastguard Worker * 48*54e60f84SAndroid Build Coastguard Worker * The application shall maintain the live GLX context itself. 49*54e60f84SAndroid Build Coastguard Worker * Implementations are free to use glXGetCurrentContext() and 50*54e60f84SAndroid Build Coastguard Worker * glXGetCurrentDrawable() functions for internal purposes. 51*54e60f84SAndroid Build Coastguard Worker * 52*54e60f84SAndroid Build Coastguard Worker * @param[in] dpy the VA display 53*54e60f84SAndroid Build Coastguard Worker * @param[in] target the GL target to which the texture needs to be bound 54*54e60f84SAndroid Build Coastguard Worker * @param[in] texture the GL texture 55*54e60f84SAndroid Build Coastguard Worker * @param[out] gl_surface the VA/GLX surface 56*54e60f84SAndroid Build Coastguard Worker * @return VA_STATUS_SUCCESS if successful 57*54e60f84SAndroid Build Coastguard Worker */ 58*54e60f84SAndroid Build Coastguard Worker VAStatus vaCreateSurfaceGLX( 59*54e60f84SAndroid Build Coastguard Worker VADisplay dpy, 60*54e60f84SAndroid Build Coastguard Worker GLenum target, 61*54e60f84SAndroid Build Coastguard Worker GLuint texture, 62*54e60f84SAndroid Build Coastguard Worker void **gl_surface 63*54e60f84SAndroid Build Coastguard Worker ); 64*54e60f84SAndroid Build Coastguard Worker 65*54e60f84SAndroid Build Coastguard Worker /** 66*54e60f84SAndroid Build Coastguard Worker * Destroy a VA/GLX surface 67*54e60f84SAndroid Build Coastguard Worker * 68*54e60f84SAndroid Build Coastguard Worker * The application shall maintain the live GLX context itself. 69*54e60f84SAndroid Build Coastguard Worker * Implementations are free to use glXGetCurrentContext() and 70*54e60f84SAndroid Build Coastguard Worker * glXGetCurrentDrawable() functions for internal purposes. 71*54e60f84SAndroid Build Coastguard Worker * 72*54e60f84SAndroid Build Coastguard Worker * @param[in] dpy the VA display 73*54e60f84SAndroid Build Coastguard Worker * @param[in] gl_surface the VA surface 74*54e60f84SAndroid Build Coastguard Worker * @return VA_STATUS_SUCCESS if successful 75*54e60f84SAndroid Build Coastguard Worker */ 76*54e60f84SAndroid Build Coastguard Worker VAStatus vaDestroySurfaceGLX( 77*54e60f84SAndroid Build Coastguard Worker VADisplay dpy, 78*54e60f84SAndroid Build Coastguard Worker void *gl_surface 79*54e60f84SAndroid Build Coastguard Worker ); 80*54e60f84SAndroid Build Coastguard Worker 81*54e60f84SAndroid Build Coastguard Worker /** 82*54e60f84SAndroid Build Coastguard Worker * Copy a VA surface to a VA/GLX surface 83*54e60f84SAndroid Build Coastguard Worker * 84*54e60f84SAndroid Build Coastguard Worker * This function will not return until the copy is completed. At this 85*54e60f84SAndroid Build Coastguard Worker * point, the underlying GL texture will contain the surface pixels 86*54e60f84SAndroid Build Coastguard Worker * in an RGB format defined by the user. 87*54e60f84SAndroid Build Coastguard Worker * 88*54e60f84SAndroid Build Coastguard Worker * The application shall maintain the live GLX context itself. 89*54e60f84SAndroid Build Coastguard Worker * Implementations are free to use glXGetCurrentContext() and 90*54e60f84SAndroid Build Coastguard Worker * glXGetCurrentDrawable() functions for internal purposes. 91*54e60f84SAndroid Build Coastguard Worker * 92*54e60f84SAndroid Build Coastguard Worker * @param[in] dpy the VA display 93*54e60f84SAndroid Build Coastguard Worker * @param[in] gl_surface the VA/GLX destination surface 94*54e60f84SAndroid Build Coastguard Worker * @param[in] surface the VA source surface 95*54e60f84SAndroid Build Coastguard Worker * @param[in] flags the PutSurface flags 96*54e60f84SAndroid Build Coastguard Worker * @return VA_STATUS_SUCCESS if successful 97*54e60f84SAndroid Build Coastguard Worker */ 98*54e60f84SAndroid Build Coastguard Worker VAStatus vaCopySurfaceGLX( 99*54e60f84SAndroid Build Coastguard Worker VADisplay dpy, 100*54e60f84SAndroid Build Coastguard Worker void *gl_surface, 101*54e60f84SAndroid Build Coastguard Worker VASurfaceID surface, 102*54e60f84SAndroid Build Coastguard Worker unsigned int flags 103*54e60f84SAndroid Build Coastguard Worker ); 104*54e60f84SAndroid Build Coastguard Worker 105*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus 106*54e60f84SAndroid Build Coastguard Worker } 107*54e60f84SAndroid Build Coastguard Worker #endif 108*54e60f84SAndroid Build Coastguard Worker 109*54e60f84SAndroid Build Coastguard Worker #endif /* VA_GLX_H */ 110