1 /**************************************************************************
3 * Copyright 2010 LunarG, Inc.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 * DEALINGS IN THE SOFTWARE.
26 **************************************************************************/
30 #include "egltypedefs.h"
31 #include "egldriver.h"
32 #include "eglconfig.h"
33 #include "eglcontext.h"
34 #include "eglsurface.h"
36 #include "eglscreen.h"
49 * Plug all the available fallback routines into the given driver's
53 _eglInitDriverFallbacks(_EGLDriver
*drv
)
55 memset(&drv
->API
, 0, sizeof(drv
->API
));
57 /* the driver has to implement these */
58 drv
->API
.Initialize
= NULL
;
59 drv
->API
.Terminate
= NULL
;
61 drv
->API
.GetConfigs
= _eglGetConfigs
;
62 drv
->API
.ChooseConfig
= _eglChooseConfig
;
63 drv
->API
.GetConfigAttrib
= _eglGetConfigAttrib
;
65 drv
->API
.CreateContext
= (CreateContext_t
) _eglReturnFalse
;
66 drv
->API
.DestroyContext
= (DestroyContext_t
) _eglReturnFalse
;
67 drv
->API
.MakeCurrent
= (MakeCurrent_t
) _eglReturnFalse
;
68 drv
->API
.QueryContext
= _eglQueryContext
;
70 drv
->API
.CreateWindowSurface
= (CreateWindowSurface_t
) _eglReturnFalse
;
71 drv
->API
.CreatePixmapSurface
= (CreatePixmapSurface_t
) _eglReturnFalse
;
72 drv
->API
.CreatePbufferSurface
= (CreatePbufferSurface_t
) _eglReturnFalse
;
73 drv
->API
.CreatePbufferFromClientBuffer
=
74 (CreatePbufferFromClientBuffer_t
) _eglReturnFalse
;
75 drv
->API
.DestroySurface
= (DestroySurface_t
) _eglReturnFalse
;
76 drv
->API
.QuerySurface
= _eglQuerySurface
;
77 drv
->API
.SurfaceAttrib
= _eglSurfaceAttrib
;
79 drv
->API
.BindTexImage
= (BindTexImage_t
) _eglReturnFalse
;
80 drv
->API
.ReleaseTexImage
= (ReleaseTexImage_t
) _eglReturnFalse
;
81 drv
->API
.CopyBuffers
= (CopyBuffers_t
) _eglReturnFalse
;
82 drv
->API
.SwapBuffers
= (SwapBuffers_t
) _eglReturnFalse
;
83 drv
->API
.SwapInterval
= _eglSwapInterval
;
85 drv
->API
.WaitClient
= (WaitClient_t
) _eglReturnFalse
;
86 drv
->API
.WaitNative
= (WaitNative_t
) _eglReturnFalse
;
87 drv
->API
.GetProcAddress
= (GetProcAddress_t
) _eglReturnFalse
;
88 drv
->API
.QueryString
= _eglQueryString
;
90 #ifdef EGL_MESA_screen_surface
91 drv
->API
.CopyContextMESA
= (CopyContextMESA_t
) _eglReturnFalse
;
92 drv
->API
.CreateScreenSurfaceMESA
=
93 (CreateScreenSurfaceMESA_t
) _eglReturnFalse
;
94 drv
->API
.ShowScreenSurfaceMESA
= (ShowScreenSurfaceMESA_t
) _eglReturnFalse
;
95 drv
->API
.ChooseModeMESA
= _eglChooseModeMESA
;
96 drv
->API
.GetModesMESA
= _eglGetModesMESA
;
97 drv
->API
.GetModeAttribMESA
= _eglGetModeAttribMESA
;
98 drv
->API
.GetScreensMESA
= _eglGetScreensMESA
;
99 drv
->API
.ScreenPositionMESA
= _eglScreenPositionMESA
;
100 drv
->API
.QueryScreenMESA
= _eglQueryScreenMESA
;
101 drv
->API
.QueryScreenSurfaceMESA
= _eglQueryScreenSurfaceMESA
;
102 drv
->API
.QueryScreenModeMESA
= _eglQueryScreenModeMESA
;
103 drv
->API
.QueryModeStringMESA
= _eglQueryModeStringMESA
;
104 #endif /* EGL_MESA_screen_surface */
106 #ifdef EGL_KHR_image_base
107 drv
->API
.CreateImageKHR
= NULL
;
108 drv
->API
.DestroyImageKHR
= NULL
;
109 #endif /* EGL_KHR_image_base */
111 #ifdef EGL_KHR_reusable_sync
112 drv
->API
.CreateSyncKHR
= NULL
;
113 drv
->API
.DestroySyncKHR
= NULL
;
114 drv
->API
.ClientWaitSyncKHR
= NULL
;
115 drv
->API
.SignalSyncKHR
= NULL
;
116 drv
->API
.GetSyncAttribKHR
= _eglGetSyncAttribKHR
;
117 #endif /* EGL_KHR_reusable_sync */
119 #ifdef EGL_MESA_drm_image
120 drv
->API
.CreateDRMImageMESA
= NULL
;
121 drv
->API
.ExportDRMImageMESA
= NULL
;
124 #ifdef EGL_NOK_swap_region
125 drv
->API
.SwapBuffersRegionNOK
= NULL
;