| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (c) 2012 Intel Corporation. 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 #ifndef _VA_EGL_H_ | |
| 25 #define _VA_EGL_H_ | |
| 26 | |
| 27 #include <va/va.h> | |
| 28 #include <EGL/egl.h> | |
| 29 #include <EGL/eglext.h> | |
| 30 | |
| 31 #ifdef __cplusplus | |
| 32 extern "C" { | |
| 33 #endif | |
| 34 | |
| 35 typedef void *VASurfaceEGL; | |
| 36 | |
| 37 /*This function is used to get EGLClientBuffer | |
| 38 * (lower 16bits is buffer index, upper 16bits | |
| 39 * is BC device id.) from surface id. Application | |
| 40 * should maintain EGLClientBuffer itself.*/ | |
| 41 | |
| 42 VAStatus vaGetEGLClientBufferFromSurface ( | |
| 43 VADisplay dpy, | |
| 44 VASurfaceID surface, | |
| 45 EGLClientBuffer *buffer /* out*/ | |
| 46 ); | |
| 47 | |
| 48 /** | |
| 49 * Return a suitable VADisplay for VA API | |
| 50 * | |
| 51 * @param[in] native_dpy the native display | |
| 52 * @param[in] egl_dpy the EGL display | |
| 53 * @return a VADisplay | |
| 54 */ | |
| 55 VADisplay vaGetDisplayEGL( | |
| 56 VANativeDisplay native_dpy, | |
| 57 EGLDisplay egl_dpy | |
| 58 ); | |
| 59 | |
| 60 /** | |
| 61 * Return maximum number of EGL targets supported by the implementation | |
| 62 * | |
| 63 * @param[in] dpy the VADisplay | |
| 64 * @return the maximum number of EGL Target | |
| 65 */ | |
| 66 int vaMaxNumSurfaceTargetsEGL( | |
| 67 VADisplay dpy | |
| 68 ); | |
| 69 | |
| 70 /** | |
| 71 * Return maximum number of EGL surface attributes supported by the implementati
on | |
| 72 * | |
| 73 * @param[in] dpy the VADisplay | |
| 74 * @return the maximum number of EGL surface attributes | |
| 75 */ | |
| 76 int vaMaxNumSurfaceAttributesEGL( | |
| 77 VADisplay dpy | |
| 78 ); | |
| 79 | |
| 80 /** | |
| 81 * Query supported EGL targets for eglCreateImageKHR(). | |
| 82 * | |
| 83 * The caller must provide a "target_list" array that can hold at | |
| 84 * least vaMaxNumSurfaceTargetsEGL() entries. The actual number of | |
| 85 * targets returned in "target_list" is returned in "num_targets". | |
| 86 * | |
| 87 * @param[in]] dpy the VADisplay | |
| 88 * @param[out] target_list the array to hold target entries | |
| 89 * @param[out] num_targets the actual number of targets | |
| 90 * @return VA_STATUS_SUCCESS if successful | |
| 91 */ | |
| 92 VAStatus vaQuerySurfaceTargetsEGL( | |
| 93 VADisplay dpy, | |
| 94 EGLenum *target_list, /* out */ | |
| 95 int *num_targets /* out */ | |
| 96 ); | |
| 97 | |
| 98 /** | |
| 99 * Creates a VA/EGL surface with the specified target | |
| 100 * | |
| 101 * If target is 0, this means the best efficient target by default. | |
| 102 * | |
| 103 * @param[in] dpy the VADisplay | |
| 104 * @param[in] target the specified EGL target | |
| 105 * @param[in] width the surface width | |
| 106 * @param[in] height the surface height | |
| 107 * @param[out] gl_surface the VA/EGL surface | |
| 108 * @return VA_STATUS_SUCCESS if successful | |
| 109 */ | |
| 110 VAStatus vaCreateSurfaceEGL( | |
| 111 VADisplay dpy, | |
| 112 EGLenum target, | |
| 113 unsigned int width, | |
| 114 unsigned int height, | |
| 115 VASurfaceEGL *gl_surface | |
| 116 ); | |
| 117 | |
| 118 /** | |
| 119 * Destroy a VA/EGL surface | |
| 120 * | |
| 121 * The application shall maintain the live EGL context itself. | |
| 122 * | |
| 123 * @param[in] dpy the VA display | |
| 124 * @param[in] gl_surface the VA surface | |
| 125 * @return VA_STATUS_SUCCESS if successful | |
| 126 */ | |
| 127 VAStatus vaDestroySurfaceEGL( | |
| 128 VADisplay dpy, | |
| 129 VASurfaceEGL gl_surface | |
| 130 ); | |
| 131 | |
| 132 /** | |
| 133 * Associate a EGL surface with a VA surface | |
| 134 * | |
| 135 * @param[in] dpy the VA display | |
| 136 * @param[in] egl_surface the VA/EGL destination surface | |
| 137 * @param[in] surface the VA surface | |
| 138 * @param[in] flags the flags to PutSurface | |
| 139 * @return VA_STATUS_SUCCESS if successful | |
| 140 */ | |
| 141 VAStatus vaAssociateSurfaceEGL( | |
| 142 VADisplay dpy, | |
| 143 VASurfaceEGL egl_surface, | |
| 144 VASurfaceID surface, | |
| 145 unsigned int flags | |
| 146 ); | |
| 147 | |
| 148 /** | |
| 149 * Update the content of a VA/EGL surface | |
| 150 * | |
| 151 * Changes to VA surface are committed to VA/EGL surface at this point. | |
| 152 * | |
| 153 * @param[in] dpy the VA display | |
| 154 * @param[in] egl_surface the VA/EGL surface that has been associated with a VA
surface | |
| 155 * @return VA_STATUS_SUCCESS if successful | |
| 156 */ | |
| 157 VAStatus vaSyncSurfaceEGL( | |
| 158 VADisplay dpy, | |
| 159 VASurfaceEGL egl_surface | |
| 160 ); | |
| 161 | |
| 162 /** | |
| 163 * Get the necessary information for eglCreateImageKHR() | |
| 164 * | |
| 165 * The caller must provide a "attrib_list" array that can hold at | |
| 166 * least (2 * vaMaxNumSurfaceAttributesEGL()) entries. The last attribute | |
| 167 * specified in attrib_list must be EGL_NONE | |
| 168 * | |
| 169 * @param[in] dpy the VA display | |
| 170 * @param[in] egl_surface the VA/EGL surface that has been associated with a VA
surface | |
| 171 * @param[out] target the type of <buffer> for eglCreateImageKHR() | |
| 172 * @param[out] buffer the EGLClientBuffer for eglCreateImageKHR() | |
| 173 * @param[out] attrib_list the list of attribute-value pairs for eglCreateImageK
HR() | |
| 174 * @param[in/out] num_attribs input: the number of allocated attribute-value pai
rs in attrib_list; output: the actual number of attribute-value pairs | |
| 175 * @return VA_STATUS_SUCCESS if successful | |
| 176 */ | |
| 177 VAStatus vaGetSurfaceInfoEGL( | |
| 178 VADisplay dpy, | |
| 179 VASurfaceEGL egl_surface, | |
| 180 EGLenum *target, /* out, the type of <buffer> */ | |
| 181 EGLClientBuffer *buffer, /* out */ | |
| 182 EGLint *attrib_list, /* out, the last attribute must be EGL_NONE */ | |
| 183 int *num_attribs /* in/out, the number of attribute-value pairs *
/ | |
| 184 ); | |
| 185 | |
| 186 /** | |
| 187 * Deassociate a EGL surface | |
| 188 * | |
| 189 * @param[in] dpy the VA display | |
| 190 * @param[in] egl_surface the VA/EGL destination surface | |
| 191 * @return VA_STATUS_SUCCESS if successful | |
| 192 */ | |
| 193 VAStatus vaDeassociateSurfaceEGL( | |
| 194 VADisplay dpy, | |
| 195 VASurfaceEGL egl_surface | |
| 196 ); | |
| 197 | |
| 198 #ifdef __cplusplus | |
| 199 } | |
| 200 #endif | |
| 201 | |
| 202 #endif /* _VA_EGL_H_ */ | |
| OLD | NEW |