egl/dri2: Implement swapInterval fallback in a conformant way (v2)
[mesa.git] / src / egl / drivers / dri2 / egl_dri2_fallbacks.h
1 /*
2 * Copyright 2014 Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
25 #ifndef EGL_DRI2_FALLBACKS_INCLUDED
26 #define EGL_DRI2_FALLBACKS_INCLUDED
27
28 #include "egltypedefs.h"
29
30 struct wl_buffer;
31
32 static inline _EGLSurface *
33 dri2_fallback_create_pixmap_surface(_EGLDriver *drv, _EGLDisplay *disp,
34 _EGLConfig *conf,
35 void *native_pixmap,
36 const EGLint *attrib_list)
37 {
38 return NULL;
39 }
40
41 static inline _EGLSurface *
42 dri2_fallback_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *disp,
43 _EGLConfig *conf,
44 const EGLint *attrib_list)
45 {
46 return NULL;
47 }
48
49 static inline _EGLImage*
50 dri2_fallback_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
51 _EGLContext *ctx, EGLenum target,
52 EGLClientBuffer buffer,
53 const EGLint *attr_list)
54 {
55 return NULL;
56 }
57
58 static inline EGLBoolean
59 dri2_fallback_swap_buffers_with_damage(_EGLDriver *drv, _EGLDisplay *dpy,
60 _EGLSurface *surf,
61 const EGLint *rects, EGLint n_rects)
62 {
63 struct dri2_egl_display *dri2_dpy = dri2_egl_display(dpy);
64 dri2_dpy->vtbl->set_damage_region(drv, dpy, surf, rects, n_rects);
65 return dri2_dpy->vtbl->swap_buffers(drv, dpy, surf);
66 }
67
68 static inline EGLBoolean
69 dri2_fallback_swap_buffers_region(_EGLDriver *drv, _EGLDisplay *dpy,
70 _EGLSurface *surf,
71 EGLint numRects, const EGLint *rects)
72 {
73 return EGL_FALSE;
74 }
75
76 static inline EGLBoolean
77 dri2_fallback_post_sub_buffer(_EGLDriver *drv, _EGLDisplay *dpy,
78 _EGLSurface *draw,
79 EGLint x, EGLint y, EGLint width, EGLint height)
80 {
81 return EGL_FALSE;
82 }
83
84 static inline EGLBoolean
85 dri2_fallback_copy_buffers(_EGLDriver *drv, _EGLDisplay *dpy,
86 _EGLSurface *surf,
87 void *native_pixmap_target)
88 {
89 return EGL_FALSE;
90 }
91
92 static inline EGLBoolean
93 dri2_fallback_set_damage_region(_EGLDriver *drv, _EGLDisplay *dpy,
94 _EGLSurface *surf,
95 const EGLint *rects, EGLint n_rects)
96 {
97 return EGL_FALSE;
98 }
99
100 static inline EGLint
101 dri2_fallback_query_buffer_age(_EGLDriver *drv, _EGLDisplay *dpy,
102 _EGLSurface *surf)
103 {
104 return 0;
105 }
106
107 static inline struct wl_buffer*
108 dri2_fallback_create_wayland_buffer_from_image(_EGLDriver *drv,
109 _EGLDisplay *dpy,
110 _EGLImage *img)
111 {
112 return NULL;
113 }
114
115 static inline EGLBoolean
116 dri2_fallback_get_sync_values(_EGLDisplay *dpy, _EGLSurface *surf,
117 EGLuint64KHR *ust, EGLuint64KHR *msc,
118 EGLuint64KHR *sbc)
119 {
120 return EGL_FALSE;
121 }
122
123 #endif /* EGL_DRI2_FALLBACKS_INCLUDED */