44// found in the LICENSE file.
55
66#include " flutter/shell/platform/linux/testing/mock_epoxy.h"
7+ #include " flutter/fml/logging.h"
78
89using namespace flutter ::testing;
910
@@ -352,10 +353,14 @@ EGLBoolean _eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) {
352353
353354static GLuint bound_texture_2d;
354355
356+ static std::map<GLenum, GLuint> framebuffer_renderbuffers;
357+
355358void _glAttachShader (GLuint program, GLuint shader) {}
356359
357360static void _glBindFramebuffer (GLenum target, GLuint framebuffer) {}
358361
362+ static void _glBindRenderbuffer (GLenum target, GLuint framebuffer) {}
363+
359364static void _glBindTexture (GLenum target, GLuint texture) {
360365 if (target == GL_TEXTURE_2D) {
361366 bound_texture_2d = texture;
@@ -396,6 +401,13 @@ void _glDeleteShader(GLuint shader) {}
396401
397402void _glDeleteTextures (GLsizei n, const GLuint* textures) {}
398403
404+ static void _glFramebufferRenderbuffer (GLenum target,
405+ GLenum attachment,
406+ GLenum renderbuffertarget,
407+ GLuint renderbuffer) {
408+ framebuffer_renderbuffers[attachment] = renderbuffer;
409+ }
410+
399411static void _glFramebufferTexture2D (GLenum target,
400412 GLenum attachment,
401413 GLenum textarget,
@@ -414,6 +426,26 @@ static void _glGenFramebuffers(GLsizei n, GLuint* framebuffers) {
414426 }
415427}
416428
429+ static void _glGenRenderbuffers (GLsizei n, GLuint* renderbuffers) {
430+ for (GLsizei i = 0 ; i < n; i++) {
431+ renderbuffers[i] = 0 ;
432+ }
433+ }
434+
435+ static void _glGetFramebufferAttachmentParameteriv (GLenum target,
436+ GLenum attachment,
437+ GLenum pname,
438+ GLint* params) {
439+ if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) {
440+ auto it = framebuffer_renderbuffers.find (attachment);
441+ *params =
442+ (it != framebuffer_renderbuffers.end ()) ? GL_RENDERBUFFER : GL_NONE;
443+ } else if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) {
444+ auto it = framebuffer_renderbuffers.find (attachment);
445+ *params = (it != framebuffer_renderbuffers.end ()) ? it->second : 0 ;
446+ }
447+ }
448+
417449static void _glGetIntegerv (GLenum pname, GLint* data) {
418450 if (pname == GL_TEXTURE_BINDING_2D) {
419451 *data = bound_texture_2d;
@@ -466,6 +498,11 @@ static GLenum _glGetError() {
466498
467499void _glLinkProgram (GLuint program) {}
468500
501+ void _glRenderbufferStorage (GLenum target,
502+ GLenum internalformat,
503+ GLsizei width,
504+ GLsizei height) {}
505+
469506void _glShaderSource (GLuint shader,
470507 GLsizei count,
471508 const GLchar* const * string,
@@ -536,6 +573,7 @@ EGLBoolean (*epoxy_eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface);
536573
537574void (*epoxy_glAttachShader)(GLuint program, GLuint shader);
538575void (*epoxy_glBindFramebuffer)(GLenum target, GLuint framebuffer);
576+ void (*epoxy_glBindRenderbuffer)(GLenum target, GLuint renderbuffer);
539577void (*epoxy_glBindTexture)(GLenum target, GLuint texture);
540578void (*epoxy_glBlitFramebuffer)(GLint srcX0,
541579 GLint srcY0,
@@ -553,14 +591,26 @@ GLuint (*epoxy_glCreateShader)(GLenum shaderType);
553591void (*epoxy_glDeleteFramebuffers)(GLsizei n, const GLuint* framebuffers);
554592void (*expoxy_glDeleteShader)(GLuint shader);
555593void (*epoxy_glDeleteTextures)(GLsizei n, const GLuint* textures);
594+ void (*epoxy_glFramebufferRenderbuffer)(GLenum target,
595+ GLenum attachment,
596+ GLenum renderbuffertarget,
597+ GLuint renderbuffer);
556598void (*epoxy_glFramebufferTexture2D)(GLenum target,
557599 GLenum attachment,
558600 GLenum textarget,
559601 GLuint texture,
560602 GLint level);
603+ void (*epoxy_glGetFramebufferAttachmentParameteriv)(GLenum target,
604+ GLenum attachment,
605+ GLenum pname,
606+ GLint* params);
561607void (*epoxy_glGenFramebuffers)(GLsizei n, GLuint* framebuffers);
562608void (*epoxy_glGenTextures)(GLsizei n, GLuint* textures);
563609void (*epoxy_glLinkProgram)(GLuint program);
610+ void (*epoxy_glRenderbufferStorage)(GLenum target,
611+ GLenum internalformat,
612+ GLsizei width,
613+ GLsizei height);
564614void (*epoxy_glShaderSource)(GLuint shader,
565615 GLsizei count,
566616 const GLchar* const * string,
@@ -595,6 +645,7 @@ static void library_init() {
595645
596646 epoxy_glAttachShader = _glAttachShader;
597647 epoxy_glBindFramebuffer = _glBindFramebuffer;
648+ epoxy_glBindRenderbuffer = _glBindRenderbuffer;
598649 epoxy_glBindTexture = _glBindTexture;
599650 epoxy_glBlitFramebuffer = _glBlitFramebuffer;
600651 epoxy_glCompileShader = _glCompileShader;
@@ -604,16 +655,21 @@ static void library_init() {
604655 epoxy_glDeleteFramebuffers = _glDeleteFramebuffers;
605656 epoxy_glDeleteShader = _glDeleteShader;
606657 epoxy_glDeleteTextures = _glDeleteTextures;
658+ epoxy_glFramebufferRenderbuffer = _glFramebufferRenderbuffer;
607659 epoxy_glFramebufferTexture2D = _glFramebufferTexture2D;
608660 epoxy_glGenFramebuffers = _glGenFramebuffers;
661+ epoxy_glGenRenderbuffers = _glGenRenderbuffers;
609662 epoxy_glGenTextures = _glGenTextures;
663+ epoxy_glGetFramebufferAttachmentParameteriv =
664+ _glGetFramebufferAttachmentParameteriv;
610665 epoxy_glGetIntegerv = _glGetIntegerv;
611666 epoxy_glGetProgramiv = _glGetProgramiv;
612667 epoxy_glGetProgramInfoLog = _glGetProgramInfoLog;
613668 epoxy_glGetShaderiv = _glGetShaderiv;
614669 epoxy_glGetShaderInfoLog = _glGetShaderInfoLog;
615670 epoxy_glGetString = _glGetString;
616671 epoxy_glLinkProgram = _glLinkProgram;
672+ epoxy_glRenderbufferStorage = _glRenderbufferStorage;
617673 epoxy_glShaderSource = _glShaderSource;
618674 epoxy_glTexParameterf = _glTexParameterf;
619675 epoxy_glTexParameteri = _glTexParameteri;
0 commit comments