Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
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
391static GLboolean enable_blend = GL_FALSE;
392static GLboolean enable_scissor_test = GL_FALSE;
393
394static void _setEnable(GLenum cap, GLboolean value) {
395 if (cap == GL_BLEND) {
397 } else if (cap == GL_SCISSOR_TEST) {
399 }
400}
401
402void _glAttachShader(GLuint program, GLuint shader) {}
403
404static void _glBindFramebuffer(GLenum target, GLuint framebuffer) {}
405
406static void _glBindRenderbuffer(GLenum target, GLuint framebuffer) {}
407
408static void _glBindTexture(GLenum target, GLuint texture) {
409 if (target == GL_TEXTURE_2D) {
411 }
412}
413
414static void _glBlitFramebuffer(GLint srcX0,
415 GLint srcY0,
416 GLint srcX1,
417 GLint srcY1,
418 GLint dstX0,
419 GLint dstY0,
420 GLint dstX1,
421 GLint dstY1,
422 GLbitfield mask,
423 GLenum filter) {
424 mock->glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1,
425 dstY1, mask, filter);
426}
427
429 return 0;
430}
431
432void _glCompileShader(GLuint shader) {}
433
434void _glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a) {
435 mock->glClearColor(r, g, b, a);
436}
437
438GLuint _glCreateShader(GLenum shaderType) {
439 return 0;
440}
441
442void _glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
443 if (mock) {
444 mock->glDeleteFramebuffers(n, framebuffers);
445 }
446}
447
448void _glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {
449 if (mock) {
450 mock->glDeleteRenderbuffers(n, renderbuffers);
451 }
452}
453
454void _glDeleteShader(GLuint shader) {}
455
456void _glDeleteTextures(GLsizei n, const GLuint* textures) {
457 if (mock) {
458 mock->glDeleteTextures(n, textures);
459 }
460}
461
462static void _glDisable(GLenum cap) {
463 _setEnable(cap, GL_FALSE);
464}
465
466static void _glEnable(GLenum cap) {
467 _setEnable(cap, GL_TRUE);
468}
469
471 GLenum attachment,
472 GLenum renderbuffertarget,
473 GLuint renderbuffer) {
474 framebuffer_renderbuffers[attachment] = renderbuffer;
475}
476
478 GLenum attachment,
479 GLenum textarget,
480 GLuint texture,
481 GLint level) {}
482
483static void _glGenTextures(GLsizei n, GLuint* textures) {
484 for (GLsizei i = 0; i < n; i++) {
485 textures[i] = 0;
486 }
487 if (mock) {
488 mock->glGenTextures(n, textures);
489 }
490}
491
492static void _glGenFramebuffers(GLsizei n, GLuint* framebuffers) {
493 for (GLsizei i = 0; i < n; i++) {
494 framebuffers[i] = 0;
495 }
496 if (mock) {
497 mock->glGenFramebuffers(n, framebuffers);
498 }
499}
500
501static void _glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
502 for (GLsizei i = 0; i < n; i++) {
503 renderbuffers[i] = 0;
504 }
505 if (mock) {
506 mock->glGenRenderbuffers(n, renderbuffers);
507 }
508}
509
511 GLenum attachment,
512 GLenum pname,
513 GLint* params) {
514 if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) {
515 auto it = framebuffer_renderbuffers.find(attachment);
516 *params =
517 (it != framebuffer_renderbuffers.end()) ? GL_RENDERBUFFER : GL_NONE;
518 } else if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) {
519 auto it = framebuffer_renderbuffers.find(attachment);
520 *params = (it != framebuffer_renderbuffers.end()) ? it->second : 0;
521 }
522}
523
524static void _glGetIntegerv(GLenum pname, GLint* data) {
525 if (pname == GL_TEXTURE_BINDING_2D) {
527 }
528}
529
530static void _glGetProgramiv(GLuint program, GLenum pname, GLint* params) {
531 if (pname == GL_LINK_STATUS) {
532 *params = GL_TRUE;
533 }
534}
535
536static void _glGetProgramInfoLog(GLuint program,
537 GLsizei maxLength,
538 GLsizei* length,
539 GLchar* infoLog) {}
540
541static void _glGetShaderiv(GLuint shader, GLenum pname, GLint* params) {
542 if (pname == GL_COMPILE_STATUS) {
543 *params = GL_TRUE;
544 }
545}
546
547static void _glGetShaderInfoLog(GLuint shader,
548 GLsizei maxLength,
549 GLsizei* length,
550 GLchar* infoLog) {}
551
552static const GLubyte* _glGetString(GLenum pname) {
553 return mock->glGetString(pname);
554}
555
556static GLboolean _glIsEnabled(GLenum cap) {
557 if (cap == GL_BLEND) {
558 return enable_blend;
559 } else if (cap == GL_SCISSOR_TEST) {
560 return enable_scissor_test;
561 } else {
562 return GL_FALSE;
563 }
564}
565
566static void _glTexParameterf(GLenum target, GLenum pname, GLfloat param) {}
567
568static void _glTexParameteri(GLenum target, GLenum pname, GLint param) {}
569
570static void _glTexImage2D(GLenum target,
571 GLint level,
572 GLint internalformat,
573 GLsizei width,
574 GLsizei height,
575 GLint border,
576 GLenum format,
577 GLenum type,
578 const void* pixels) {}
579
580static GLenum _glGetError() {
581 return GL_NO_ERROR;
582}
583
584void _glLinkProgram(GLuint program) {}
585
587 GLenum internalformat,
588 GLsizei width,
589 GLsizei height) {}
590
591void _glShaderSource(GLuint shader,
592 GLsizei count,
593 const GLchar* const* string,
594 const GLint* length) {}
595
596bool epoxy_has_gl_extension(const char* extension) {
597 return mock->epoxy_has_gl_extension(extension);
598}
599
601 return mock->epoxy_is_desktop_gl();
602}
603
605 return mock->epoxy_gl_version();
606}
607
608#ifdef __GNUC__
609#define CONSTRUCT(_func) static void _func(void) __attribute__((constructor));
610#define DESTRUCT(_func) static void _func(void) __attribute__((destructor));
611#elif defined(_MSC_VER) && (_MSC_VER >= 1500)
612#define CONSTRUCT(_func) \
613 static void _func(void); \
614 static int _func##_wrapper(void) { \
615 _func(); \
616 return 0; \
617 } \
618 __pragma(section(".CRT$XCU", read)) \
619 __declspec(allocate(".CRT$XCU")) static int (*_array##_func)(void) = \
620 _func##_wrapper;
621
622#else
623#error "You will need constructor support for your compiler"
624#endif
625
626CONSTRUCT(library_init)
627
628EGLBoolean (*epoxy_eglBindAPI)(EGLenum api);
629EGLBoolean (*epoxy_eglChooseConfig)(EGLDisplay dpy,
630 const EGLint* attrib_list,
631 EGLConfig* configs,
632 EGLint config_size,
633 EGLint* num_config);
634EGLContext (*epoxy_eglCreateContext)(EGLDisplay dpy,
635 EGLConfig config,
636 EGLContext share_context,
637 const EGLint* attrib_list);
638EGLSurface (*epoxy_eglCreatePbufferSurface)(EGLDisplay dpy,
639 EGLConfig config,
640 const EGLint* attrib_list);
641EGLSurface (*epoxy_eglCreateWindowSurface)(EGLDisplay dpy,
642 EGLConfig config,
643 EGLNativeWindowType win,
644 const EGLint* attrib_list);
645EGLBoolean (*epoxy_eglGetConfigAttrib)(EGLDisplay dpy,
646 EGLConfig config,
647 EGLint attribute,
648 EGLint* value);
649EGLDisplay (*epoxy_eglGetDisplay)(EGLNativeDisplayType display_id);
650EGLDisplay (*epoxy_eglGetPlatformDisplayEXT)(EGLenum platform,
651 void* native_display,
652 const EGLint* attrib_list);
654void (*(*epoxy_eglGetProcAddress)(const char* procname))(void);
655EGLBoolean (*epoxy_eglInitialize)(EGLDisplay dpy, EGLint* major, EGLint* minor);
656EGLBoolean (*epoxy_eglMakeCurrent)(EGLDisplay dpy,
657 EGLSurface draw,
658 EGLSurface read,
659 EGLContext ctx);
660EGLBoolean (*epoxy_eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface);
661EGLImage (*epoxy_eglCreateImage)(EGLDisplay dpy,
662 EGLContext ctx,
663 EGLenum target,
664 EGLClientBuffer buffer,
665 const EGLAttrib* attrib_list);
666
667void (*epoxy_glAttachShader)(GLuint program, GLuint shader);
668void (*epoxy_glBindFramebuffer)(GLenum target, GLuint framebuffer);
669void (*epoxy_glBindRenderbuffer)(GLenum target, GLuint renderbuffer);
670void (*epoxy_glBindTexture)(GLenum target, GLuint texture);
671void (*epoxy_glBlitFramebuffer)(GLint srcX0,
672 GLint srcY0,
673 GLint srcX1,
674 GLint srcY1,
675 GLint dstX0,
676 GLint dstY0,
677 GLint dstX1,
678 GLint dstY1,
679 GLbitfield mask,
680 GLenum filter);
681void (*epoxy_glCompileShader)(GLuint shader);
683GLuint (*epoxy_glCreateShader)(GLenum shaderType);
684void (*epoxy_glDeleteFramebuffers)(GLsizei n, const GLuint* framebuffers);
685void (*expoxy_glDeleteShader)(GLuint shader);
686void (*epoxy_glDeleteTextures)(GLsizei n, const GLuint* textures);
688 GLenum attachment,
689 GLenum renderbuffertarget,
690 GLuint renderbuffer);
692 GLenum attachment,
693 GLenum textarget,
694 GLuint texture,
695 GLint level);
697 GLenum attachment,
698 GLenum pname,
699 GLint* params);
700void (*epoxy_glGenFramebuffers)(GLsizei n, GLuint* framebuffers);
701void (*epoxy_glGenTextures)(GLsizei n, GLuint* textures);
702void (*epoxy_glLinkProgram)(GLuint program);
704 GLenum internalformat,
705 GLsizei width,
706 GLsizei height);
707void (*epoxy_glShaderSource)(GLuint shader,
708 GLsizei count,
709 const GLchar* const* string,
710 const GLint* length);
711void (*epoxy_glTexParameterf)(GLenum target, GLenum pname, GLfloat param);
712void (*epoxy_glTexParameteri)(GLenum target, GLenum pname, GLint param);
714 GLint level,
715 GLint internalformat,
716 GLsizei width,
717 GLsizei height,
718 GLint border,
719 GLenum format,
720 GLenum type,
721 const void* pixels);
723
724static void library_init() {
728 epoxy_eglGetCurrentContext = _eglGetCurrentContext;
733 epoxy_eglGetCurrentDisplay = _eglGetCurrentDisplay;
739 epoxy_eglQueryContext = _eglQueryContext;
742
749 epoxy_glClearColor = _glClearColor;
753 epoxy_glDeleteRenderbuffers = _glDeleteRenderbuffers;
754 epoxy_glDeleteShader = _glDeleteShader;
756 epoxy_glDisable = _glDisable;
757 epoxy_glEnable = _glEnable;
761 epoxy_glGenRenderbuffers = _glGenRenderbuffers;
765 epoxy_glGetIntegerv = _glGetIntegerv;
766 epoxy_glGetProgramiv = _glGetProgramiv;
767 epoxy_glGetProgramInfoLog = _glGetProgramInfoLog;
768 epoxy_glGetShaderiv = _glGetShaderiv;
769 epoxy_glGetShaderInfoLog = _glGetShaderInfoLog;
770 epoxy_glGetString = _glGetString;
771 epoxy_glIsEnabled = _glIsEnabled;
779}
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)
static GLboolean enable_blend
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()
static void _glEnable(GLenum cap)
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)
static GLboolean _glIsEnabled(GLenum cap)
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)
static GLboolean enable_scissor_test
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)
static void _glDisable(GLenum cap)
int epoxy_gl_version(void)
static void _glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
static void _setEnable(GLenum cap, GLboolean value)
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