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