Flutter Engine
 
Loading...
Searching...
No Matches
mock_epoxy.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5
8
9using namespace flutter::testing;
10
40
41typedef struct {
42} MockDisplay;
43
44typedef struct {
46
47typedef struct {
48} MockSurface;
49
50typedef struct {
51} MockImage;
52
53static MockEpoxy* mock = nullptr;
54static bool display_initialized = false;
55static MockDisplay mock_display;
58static MockSurface mock_surface;
60
61static EGLint mock_error = EGL_SUCCESS;
62
64 mock = this;
65}
66
68 if (mock == this) {
69 mock = nullptr;
70 }
71}
72
73static bool check_display(EGLDisplay dpy) {
74 if (dpy == nullptr) {
75 mock_error = EGL_BAD_DISPLAY;
76 return false;
77 }
78
79 return true;
80}
81
82static bool check_initialized(EGLDisplay dpy) {
84 mock_error = EGL_NOT_INITIALIZED;
85 return false;
86 }
87
88 return true;
89}
90
91static bool check_config(EGLConfig config) {
92 if (config == nullptr) {
93 mock_error = EGL_BAD_CONFIG;
94 return false;
95 }
96
97 return true;
98}
99
100static EGLBoolean bool_success() {
101 mock_error = EGL_SUCCESS;
102 return EGL_TRUE;
103}
104
105static EGLBoolean bool_failure(EGLint error) {
107 return EGL_FALSE;
108}
109
110EGLBoolean _eglBindAPI(EGLenum api) {
111 return bool_success();
112}
113
114EGLBoolean _eglChooseConfig(EGLDisplay dpy,
115 const EGLint* attrib_list,
116 EGLConfig* configs,
117 EGLint config_size,
118 EGLint* num_config) {
119 if (!check_display(dpy) || !check_initialized(dpy)) {
120 return EGL_FALSE;
121 }
122
123 if (configs == nullptr) {
124 if (num_config != nullptr) {
125 *num_config = 1;
126 }
127 return bool_success();
128 }
129
130 EGLint n_returned = 0;
131 if (config_size >= 1) {
132 configs[0] = &mock_config;
133 n_returned++;
134 }
135
136 if (num_config != nullptr) {
137 *num_config = n_returned;
138 }
139
140 return bool_success();
141}
142
143EGLContext _eglCreateContext(EGLDisplay dpy,
144 EGLConfig config,
145 EGLContext share_context,
146 const EGLint* attrib_list) {
147 if (!check_display(dpy) || !check_initialized(dpy) || !check_config(config)) {
148 return EGL_NO_CONTEXT;
149 }
150
151 mock_error = EGL_SUCCESS;
152 return &mock_context;
153}
154
156 return &mock_context;
157}
158
159EGLSurface _eglCreatePbufferSurface(EGLDisplay dpy,
160 EGLConfig config,
161 const EGLint* attrib_list) {
162 if (!check_display(dpy) || !check_initialized(dpy) || !check_config(config)) {
163 return EGL_NO_SURFACE;
164 }
165
166 mock_error = EGL_SUCCESS;
167 return &mock_surface;
168}
169
170EGLSurface _eglCreateWindowSurface(EGLDisplay dpy,
171 EGLConfig config,
172 EGLNativeWindowType win,
173 const EGLint* attrib_list) {
174 if (!check_display(dpy) || !check_initialized(dpy) || !check_config(config)) {
175 return EGL_NO_SURFACE;
176 }
177
178 mock_error = EGL_SUCCESS;
179 return &mock_surface;
180}
181
182EGLBoolean _eglGetConfigAttrib(EGLDisplay dpy,
183 EGLConfig config,
184 EGLint attribute,
185 EGLint* value) {
186 if (!check_display(dpy) || !check_initialized(dpy) || !check_config(config)) {
187 return EGL_FALSE;
188 }
189
190 MockConfig* c = static_cast<MockConfig*>(config);
191 switch (attribute) {
192 case EGL_CONFIG_ID:
193 *value = c->config_id;
194 return bool_success();
195 case EGL_BUFFER_SIZE:
196 *value = c->buffer_size;
197 return bool_success();
198 case EGL_COLOR_BUFFER_TYPE:
200 return bool_success();
201 case EGL_TRANSPARENT_TYPE:
203 return bool_success();
204 case EGL_LEVEL:
205 *value = c->level;
206 return bool_success();
207 case EGL_RED_SIZE:
208 *value = c->red_size;
209 return bool_success();
210 case EGL_GREEN_SIZE:
211 *value = c->green_size;
212 return bool_success();
213 case EGL_BLUE_SIZE:
214 *value = c->blue_size;
215 return bool_success();
216 case EGL_ALPHA_SIZE:
217 *value = c->alpha_size;
218 return bool_success();
219 case EGL_DEPTH_SIZE:
220 *value = c->depth_size;
221 return bool_success();
222 case EGL_STENCIL_SIZE:
223 *value = c->stencil_size;
224 return bool_success();
225 case EGL_SAMPLES:
226 *value = c->samples;
227 return bool_success();
228 case EGL_SAMPLE_BUFFERS:
229 *value = c->sample_buffers;
230 return bool_success();
231 case EGL_NATIVE_VISUAL_ID:
233 return bool_success();
234 case EGL_NATIVE_VISUAL_TYPE:
236 return bool_success();
237 case EGL_NATIVE_RENDERABLE:
239 return bool_success();
240 case EGL_CONFIG_CAVEAT:
241 *value = c->config_caveat;
242 return bool_success();
243 case EGL_BIND_TO_TEXTURE_RGB:
245 return bool_success();
246 case EGL_BIND_TO_TEXTURE_RGBA:
248 return bool_success();
249 case EGL_RENDERABLE_TYPE:
251 return bool_success();
252 case EGL_CONFORMANT:
253 *value = c->conformant;
254 return bool_success();
255 case EGL_SURFACE_TYPE:
256 *value = c->surface_type;
257 return bool_success();
258 case EGL_MAX_PBUFFER_WIDTH:
260 return bool_success();
261 case EGL_MAX_PBUFFER_HEIGHT:
263 return bool_success();
264 case EGL_MAX_PBUFFER_PIXELS:
266 return bool_success();
267 case EGL_MIN_SWAP_INTERVAL:
269 return bool_success();
270 case EGL_MAX_SWAP_INTERVAL:
272 return bool_success();
273 default:
274 return bool_failure(EGL_BAD_ATTRIBUTE);
275 }
276}
277
278EGLDisplay _eglGetDisplay(EGLNativeDisplayType display_id) {
279 return &mock_display;
280}
281
283 return &mock_display;
284}
285
286EGLDisplay _eglGetPlatformDisplayEXT(EGLenum platform,
287 void* native_display,
288 const EGLint* attrib_list) {
289 return &mock_display;
290}
291
292EGLint _eglGetError() {
293 EGLint error = mock_error;
294 mock_error = EGL_SUCCESS;
295 return error;
296}
297
298void (*_eglGetProcAddress(const char* procname))(void) {
299 mock_error = EGL_SUCCESS;
300 return nullptr;
301}
302
303EGLBoolean _eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor) {
304 if (!check_display(dpy)) {
305 return EGL_FALSE;
306 }
307
308 if (!display_initialized) {
311 mock_config.color_buffer_type = EGL_RGB_BUFFER;
312 mock_config.transparent_type = EGL_NONE;
313 mock_config.level = 1;
325 mock_config.config_caveat = EGL_NONE;
328 mock_config.renderable_type = EGL_OPENGL_ES2_BIT;
329 mock_config.conformant = EGL_OPENGL_ES2_BIT;
330 mock_config.surface_type = EGL_WINDOW_BIT | EGL_PBUFFER_BIT;
333 mock_config.max_pbuffer_pixels = 1024 * 1024;
336 display_initialized = true;
337 }
338
339 if (major != nullptr) {
340 *major = 1;
341 }
342 if (minor != nullptr) {
343 *minor = 5;
344 }
345
346 return bool_success();
347}
348
349EGLBoolean _eglMakeCurrent(EGLDisplay dpy,
350 EGLSurface draw,
351 EGLSurface read,
352 EGLContext ctx) {
353 if (!check_display(dpy) || !check_initialized(dpy)) {
354 return EGL_FALSE;
355 }
356
357 return bool_success();
358}
359EGLBoolean _eglQueryContext(EGLDisplay display,
360 EGLContext context,
361 EGLint attribute,
362 EGLint* value) {
363 if (attribute == EGL_CONTEXT_CLIENT_TYPE) {
364 *value = EGL_OPENGL_API;
365 return EGL_TRUE;
366 }
367 return EGL_FALSE;
368}
369
370EGLBoolean _eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) {
371 if (!check_display(dpy) || !check_initialized(dpy)) {
372 return EGL_FALSE;
373 }
374
375 return bool_success();
376}
377
378EGLImage _eglCreateImage(EGLDisplay dpy,
379 EGLContext ctx,
380 EGLenum target,
381 EGLClientBuffer buffer,
382 const EGLAttrib* attrib_list) {
383 mock->eglCreateImage(dpy, ctx, target, buffer, attrib_list);
384 return &mock_image;
385}
386
387static GLuint bound_texture_2d;
388
389static std::map<GLenum, GLuint> framebuffer_renderbuffers;
390
391void _glAttachShader(GLuint program, GLuint shader) {}
392
393static void _glBindFramebuffer(GLenum target, GLuint framebuffer) {}
394
395static void _glBindRenderbuffer(GLenum target, GLuint framebuffer) {}
396
397static void _glBindTexture(GLenum target, GLuint texture) {
398 if (target == GL_TEXTURE_2D) {
400 }
401}
402
403static void _glBlitFramebuffer(GLint srcX0,
404 GLint srcY0,
405 GLint srcX1,
406 GLint srcY1,
407 GLint dstX0,
408 GLint dstY0,
409 GLint dstX1,
410 GLint dstY1,
411 GLbitfield mask,
412 GLenum filter) {
413 mock->glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1,
414 dstY1, mask, filter);
415}
416
418 return 0;
419}
420
421void _glCompileShader(GLuint shader) {}
422
423void _glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a) {
424 mock->glClearColor(r, g, b, a);
425}
426
427GLuint _glCreateShader(GLenum shaderType) {
428 return 0;
429}
430
431void _glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
432 if (mock) {
433 mock->glDeleteFramebuffers(n, framebuffers);
434 }
435}
436
437void _glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {
438 if (mock) {
439 mock->glDeleteRenderbuffers(n, renderbuffers);
440 }
441}
442
443void _glDeleteShader(GLuint shader) {}
444
445void _glDeleteTextures(GLsizei n, const GLuint* textures) {
446 if (mock) {
447 mock->glDeleteTextures(n, textures);
448 }
449}
450
452 GLenum attachment,
453 GLenum renderbuffertarget,
454 GLuint renderbuffer) {
455 framebuffer_renderbuffers[attachment] = renderbuffer;
456}
457
459 GLenum attachment,
460 GLenum textarget,
461 GLuint texture,
462 GLint level) {}
463
464static void _glGenTextures(GLsizei n, GLuint* textures) {
465 for (GLsizei i = 0; i < n; i++) {
466 textures[i] = 0;
467 }
468 if (mock) {
469 mock->glGenTextures(n, textures);
470 }
471}
472
473static void _glGenFramebuffers(GLsizei n, GLuint* framebuffers) {
474 for (GLsizei i = 0; i < n; i++) {
475 framebuffers[i] = 0;
476 }
477 if (mock) {
478 mock->glGenFramebuffers(n, framebuffers);
479 }
480}
481
482static void _glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
483 for (GLsizei i = 0; i < n; i++) {
484 renderbuffers[i] = 0;
485 }
486 if (mock) {
487 mock->glGenRenderbuffers(n, renderbuffers);
488 }
489}
490
492 GLenum attachment,
493 GLenum pname,
494 GLint* params) {
495 if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) {
496 auto it = framebuffer_renderbuffers.find(attachment);
497 *params =
498 (it != framebuffer_renderbuffers.end()) ? GL_RENDERBUFFER : GL_NONE;
499 } else if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) {
500 auto it = framebuffer_renderbuffers.find(attachment);
501 *params = (it != framebuffer_renderbuffers.end()) ? it->second : 0;
502 }
503}
504
505static void _glGetIntegerv(GLenum pname, GLint* data) {
506 if (pname == GL_TEXTURE_BINDING_2D) {
508 }
509}
510
511static void _glGetProgramiv(GLuint program, GLenum pname, GLint* params) {
512 if (pname == GL_LINK_STATUS) {
513 *params = GL_TRUE;
514 }
515}
516
517static void _glGetProgramInfoLog(GLuint program,
518 GLsizei maxLength,
519 GLsizei* length,
520 GLchar* infoLog) {}
521
522static void _glGetShaderiv(GLuint shader, GLenum pname, GLint* params) {
523 if (pname == GL_COMPILE_STATUS) {
524 *params = GL_TRUE;
525 }
526}
527
528static void _glGetShaderInfoLog(GLuint shader,
529 GLsizei maxLength,
530 GLsizei* length,
531 GLchar* infoLog) {}
532
533static const GLubyte* _glGetString(GLenum pname) {
534 return mock->glGetString(pname);
535}
536
537static void _glTexParameterf(GLenum target, GLenum pname, GLfloat param) {}
538
539static void _glTexParameteri(GLenum target, GLenum pname, GLint param) {}
540
541static void _glTexImage2D(GLenum target,
542 GLint level,
543 GLint internalformat,
544 GLsizei width,
545 GLsizei height,
546 GLint border,
547 GLenum format,
548 GLenum type,
549 const void* pixels) {}
550
551static GLenum _glGetError() {
552 return GL_NO_ERROR;
553}
554
555void _glLinkProgram(GLuint program) {}
556
558 GLenum internalformat,
559 GLsizei width,
560 GLsizei height) {}
561
562void _glShaderSource(GLuint shader,
563 GLsizei count,
564 const GLchar* const* string,
565 const GLint* length) {}
566
567bool epoxy_has_gl_extension(const char* extension) {
568 return mock->epoxy_has_gl_extension(extension);
569}
570
572 return mock->epoxy_is_desktop_gl();
573}
574
576 return mock->epoxy_gl_version();
577}
578
579#ifdef __GNUC__
580#define CONSTRUCT(_func) static void _func(void) __attribute__((constructor));
581#define DESTRUCT(_func) static void _func(void) __attribute__((destructor));
582#elif defined(_MSC_VER) && (_MSC_VER >= 1500)
583#define CONSTRUCT(_func) \
584 static void _func(void); \
585 static int _func##_wrapper(void) { \
586 _func(); \
587 return 0; \
588 } \
589 __pragma(section(".CRT$XCU", read)) \
590 __declspec(allocate(".CRT$XCU")) static int (*_array##_func)(void) = \
591 _func##_wrapper;
592
593#else
594#error "You will need constructor support for your compiler"
595#endif
596
597CONSTRUCT(library_init)
598
599EGLBoolean (*epoxy_eglBindAPI)(EGLenum api);
600EGLBoolean (*epoxy_eglChooseConfig)(EGLDisplay dpy,
601 const EGLint* attrib_list,
602 EGLConfig* configs,
603 EGLint config_size,
604 EGLint* num_config);
605EGLContext (*epoxy_eglCreateContext)(EGLDisplay dpy,
606 EGLConfig config,
607 EGLContext share_context,
608 const EGLint* attrib_list);
609EGLSurface (*epoxy_eglCreatePbufferSurface)(EGLDisplay dpy,
610 EGLConfig config,
611 const EGLint* attrib_list);
612EGLSurface (*epoxy_eglCreateWindowSurface)(EGLDisplay dpy,
613 EGLConfig config,
614 EGLNativeWindowType win,
615 const EGLint* attrib_list);
616EGLBoolean (*epoxy_eglGetConfigAttrib)(EGLDisplay dpy,
617 EGLConfig config,
618 EGLint attribute,
619 EGLint* value);
620EGLDisplay (*epoxy_eglGetDisplay)(EGLNativeDisplayType display_id);
621EGLDisplay (*epoxy_eglGetPlatformDisplayEXT)(EGLenum platform,
622 void* native_display,
623 const EGLint* attrib_list);
625void (*(*epoxy_eglGetProcAddress)(const char* procname))(void);
626EGLBoolean (*epoxy_eglInitialize)(EGLDisplay dpy, EGLint* major, EGLint* minor);
627EGLBoolean (*epoxy_eglMakeCurrent)(EGLDisplay dpy,
628 EGLSurface draw,
629 EGLSurface read,
630 EGLContext ctx);
631EGLBoolean (*epoxy_eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface);
632EGLImage (*epoxy_eglCreateImage)(EGLDisplay dpy,
633 EGLContext ctx,
634 EGLenum target,
635 EGLClientBuffer buffer,
636 const EGLAttrib* attrib_list);
637
638void (*epoxy_glAttachShader)(GLuint program, GLuint shader);
639void (*epoxy_glBindFramebuffer)(GLenum target, GLuint framebuffer);
640void (*epoxy_glBindRenderbuffer)(GLenum target, GLuint renderbuffer);
641void (*epoxy_glBindTexture)(GLenum target, GLuint texture);
642void (*epoxy_glBlitFramebuffer)(GLint srcX0,
643 GLint srcY0,
644 GLint srcX1,
645 GLint srcY1,
646 GLint dstX0,
647 GLint dstY0,
648 GLint dstX1,
649 GLint dstY1,
650 GLbitfield mask,
651 GLenum filter);
652void (*epoxy_glCompileShader)(GLuint shader);
654GLuint (*epoxy_glCreateShader)(GLenum shaderType);
655void (*epoxy_glDeleteFramebuffers)(GLsizei n, const GLuint* framebuffers);
656void (*expoxy_glDeleteShader)(GLuint shader);
657void (*epoxy_glDeleteTextures)(GLsizei n, const GLuint* textures);
659 GLenum attachment,
660 GLenum renderbuffertarget,
661 GLuint renderbuffer);
663 GLenum attachment,
664 GLenum textarget,
665 GLuint texture,
666 GLint level);
668 GLenum attachment,
669 GLenum pname,
670 GLint* params);
671void (*epoxy_glGenFramebuffers)(GLsizei n, GLuint* framebuffers);
672void (*epoxy_glGenTextures)(GLsizei n, GLuint* textures);
673void (*epoxy_glLinkProgram)(GLuint program);
675 GLenum internalformat,
676 GLsizei width,
677 GLsizei height);
678void (*epoxy_glShaderSource)(GLuint shader,
679 GLsizei count,
680 const GLchar* const* string,
681 const GLint* length);
682void (*epoxy_glTexParameterf)(GLenum target, GLenum pname, GLfloat param);
683void (*epoxy_glTexParameteri)(GLenum target, GLenum pname, GLint param);
685 GLint level,
686 GLint internalformat,
687 GLsizei width,
688 GLsizei height,
689 GLint border,
690 GLenum format,
691 GLenum type,
692 const void* pixels);
694
695static void library_init() {
699 epoxy_eglGetCurrentContext = _eglGetCurrentContext;
704 epoxy_eglGetCurrentDisplay = _eglGetCurrentDisplay;
710 epoxy_eglQueryContext = _eglQueryContext;
713
720 epoxy_glClearColor = _glClearColor;
724 epoxy_glDeleteRenderbuffers = _glDeleteRenderbuffers;
725 epoxy_glDeleteShader = _glDeleteShader;
730 epoxy_glGenRenderbuffers = _glGenRenderbuffers;
734 epoxy_glGetIntegerv = _glGetIntegerv;
735 epoxy_glGetProgramiv = _glGetProgramiv;
736 epoxy_glGetProgramInfoLog = _glGetProgramInfoLog;
737 epoxy_glGetShaderiv = _glGetShaderiv;
738 epoxy_glGetShaderInfoLog = _glGetShaderInfoLog;
739 epoxy_glGetString = _glGetString;
747}
GLenum type
int32_t value
const EmbeddedViewParams * params
const uint8_t uint32_t uint32_t GError ** error
uint32_t * target
size_t length
static EGLBoolean bool_failure(EGLint error)
void(* epoxy_glCompileShader)(GLuint shader)
static void _glGenFramebuffers(GLsizei n, GLuint *framebuffers)
static bool check_config(EGLConfig config)
Definition mock_epoxy.cc:91
GLuint(* epoxy_glCreateProgram)()
void(* epoxy_glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
void(* epoxy_glBindTexture)(GLenum target, GLuint texture)
EGLBoolean _eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
EGLSurface(* epoxy_eglCreateWindowSurface)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list)
EGLBoolean _eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
void(* epoxy_glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params)
void _glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length)
void _glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a)
void(* epoxy_glShaderSource)(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length)
void(* epoxy_glDeleteTextures)(GLsizei n, const GLuint *textures)
EGLBoolean _eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
static void _glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
EGLBoolean _eglQueryContext(EGLDisplay display, EGLContext context, EGLint attribute, EGLint *value)
void(* epoxy_glBindRenderbuffer)(GLenum target, GLuint renderbuffer)
void _glDeleteShader(GLuint shader)
void(* expoxy_glDeleteShader)(GLuint shader)
static void _glGetProgramiv(GLuint program, GLenum pname, GLint *params)
static GLuint bound_texture_2d
void(* epoxy_glGenFramebuffers)(GLsizei n, GLuint *framebuffers)
static std::map< GLenum, GLuint > framebuffer_renderbuffers
bool epoxy_has_gl_extension(const char *extension)
void(* epoxy_glAttachShader)(GLuint program, GLuint shader)
static void _glGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog)
void(* epoxy_glTexParameteri)(GLenum target, GLenum pname, GLint param)
static void _glGenRenderbuffers(GLsizei n, GLuint *renderbuffers)
static void _glBindRenderbuffer(GLenum target, GLuint framebuffer)
static MockContext mock_context
Definition mock_epoxy.cc:57
static void library_init()
EGLImage _eglCreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
void(* epoxy_glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
static MockImage mock_image
Definition mock_epoxy.cc:59
static void _glTexParameteri(GLenum target, GLenum pname, GLint param)
static void _glTexParameterf(GLenum target, GLenum pname, GLfloat param)
void(*(* epoxy_eglGetProcAddress)(const char *procname))(void)
EGLSurface _eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list)
EGLBoolean _eglBindAPI(EGLenum api)
EGLContext(* epoxy_eglCreateContext)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
static void _glGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog)
static void _glBindFramebuffer(GLenum target, GLuint framebuffer)
GLuint(* epoxy_glCreateShader)(GLenum shaderType)
static void _glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params)
static bool check_initialized(EGLDisplay dpy)
Definition mock_epoxy.cc:82
EGLBoolean(* epoxy_eglGetConfigAttrib)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
void _glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers)
EGLint _eglGetError()
static MockConfig mock_config
Definition mock_epoxy.cc:56
GLuint _glCreateShader(GLenum shaderType)
void _glAttachShader(GLuint program, GLuint shader)
static const GLubyte * _glGetString(GLenum pname)
static void _glGetShaderiv(GLuint shader, GLenum pname, GLint *params)
static MockEpoxy * mock
Definition mock_epoxy.cc:53
void(* epoxy_glDeleteFramebuffers)(GLsizei n, const GLuint *framebuffers)
void(* epoxy_glTexParameterf)(GLenum target, GLenum pname, GLfloat param)
EGLBoolean(* epoxy_eglInitialize)(EGLDisplay dpy, EGLint *major, EGLint *minor)
static void _glBindTexture(GLenum target, GLuint texture)
EGLDisplay _eglGetDisplay(EGLNativeDisplayType display_id)
static bool check_display(EGLDisplay dpy)
Definition mock_epoxy.cc:73
GLuint _glCreateProgram()
void(* epoxy_glGenTextures)(GLsizei n, GLuint *textures)
void _glDeleteTextures(GLsizei n, const GLuint *textures)
void(* epoxy_glBindFramebuffer)(GLenum target, GLuint framebuffer)
EGLContext _eglGetCurrentContext()
EGLSurface _eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
EGLSurface(* epoxy_eglCreatePbufferSurface)(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
static bool display_initialized
Definition mock_epoxy.cc:54
void _glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers)
static void _glGenTextures(GLsizei n, GLuint *textures)
void _glCompileShader(GLuint shader)
EGLDisplay(* epoxy_eglGetPlatformDisplayEXT)(EGLenum platform, void *native_display, const EGLint *attrib_list)
void(*)(void) _eglGetProcAddress(const char *procname)
void(* epoxy_glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
EGLDisplay(* epoxy_eglGetDisplay)(EGLNativeDisplayType display_id)
EGLint(* epoxy_eglGetError)()
EGLImage(* epoxy_eglCreateImage)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
static EGLBoolean bool_success()
static void _glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
static void _glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
void(* epoxy_glLinkProgram)(GLuint program)
GLenum(* epoxy_glGetError)()
bool epoxy_is_desktop_gl(void)
EGLDisplay _eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list)
int epoxy_gl_version(void)
static void _glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
EGLBoolean(* epoxy_eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface)
static EGLint mock_error
Definition mock_epoxy.cc:61
EGLContext _eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
EGLBoolean _eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
EGLBoolean(* epoxy_eglMakeCurrent)(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
EGLBoolean(* epoxy_eglBindAPI)(EGLenum api)
static void _glGetIntegerv(GLenum pname, GLint *data)
EGLDisplay _eglGetCurrentDisplay()
EGLBoolean(* epoxy_eglChooseConfig)(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
void _glLinkProgram(GLuint program)
static MockDisplay mock_display
Definition mock_epoxy.cc:55
static MockSurface mock_surface
Definition mock_epoxy.cc:58
void(* epoxy_glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
EGLBoolean _eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
void _glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
void(* epoxy_glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
static GLenum _glGetError()
FlTexture * texture
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition switch_defs.h:36
int32_t height
int32_t width
EGLint depth_size
Definition mock_epoxy.cc:21
EGLint renderable_type
Definition mock_epoxy.cc:31
EGLint native_renderable
Definition mock_epoxy.cc:27
EGLint bind_to_texture_rgba
Definition mock_epoxy.cc:30
EGLint native_visual_type
Definition mock_epoxy.cc:26
EGLint max_pbuffer_width
Definition mock_epoxy.cc:34
EGLint conformant
Definition mock_epoxy.cc:32
EGLint green_size
Definition mock_epoxy.cc:18
EGLint config_id
Definition mock_epoxy.cc:12
EGLint buffer_size
Definition mock_epoxy.cc:13
EGLint surface_type
Definition mock_epoxy.cc:33
EGLint level
Definition mock_epoxy.cc:16
EGLint config_caveat
Definition mock_epoxy.cc:28
EGLint color_buffer_type
Definition mock_epoxy.cc:14
EGLint min_swap_interval
Definition mock_epoxy.cc:37
EGLint native_visual_id
Definition mock_epoxy.cc:25
EGLint max_pbuffer_pixels
Definition mock_epoxy.cc:36
EGLint red_size
Definition mock_epoxy.cc:17
EGLint max_pbuffer_height
Definition mock_epoxy.cc:35
EGLint sample_buffers
Definition mock_epoxy.cc:24
EGLint max_swap_interval
Definition mock_epoxy.cc:38
EGLint stencil_size
Definition mock_epoxy.cc:22
EGLint samples
Definition mock_epoxy.cc:23
EGLint blue_size
Definition mock_epoxy.cc:19
EGLint alpha_size
Definition mock_epoxy.cc:20
EGLint transparent_type
Definition mock_epoxy.cc:15
EGLint bind_to_texture_rgb
Definition mock_epoxy.cc:29