7 #include "flutter/fml/closure.h"
18 gl.BindFramebuffer(type, GL_NONE);
19 gl.DeleteFramebuffers(1u, &fbo);
25 const std::shared_ptr<Texture>& texture,
28 if (!handle.has_value()) {
35 gl.BindFramebuffer(fbo_type, 0);
40 gl.GenFramebuffers(1u, &fbo);
41 gl.BindFramebuffer(fbo_type, fbo);
50 if (gl.CheckFramebufferStatus(fbo_type) != GL_FRAMEBUFFER_COMPLETE) {
72 if (!gl.BlitFramebuffer.IsAvailable()) {
74 FML_LOG(ERROR) <<
"Texture blit fallback not implemented yet for GLES2.";
78 GLuint read_fbo = GL_NONE;
79 GLuint draw_fbo = GL_NONE;
80 fml::ScopedCleanupClosure delete_fbos([&gl, &read_fbo, &draw_fbo]() {
81 DeleteFBO(gl, read_fbo, GL_READ_FRAMEBUFFER);
82 DeleteFBO(gl, draw_fbo, GL_DRAW_FRAMEBUFFER);
87 if (!read.has_value()) {
90 read_fbo = read.value();
95 if (!draw.has_value()) {
98 draw_fbo = draw.value();
101 gl.Disable(GL_SCISSOR_TEST);
102 gl.Disable(GL_DEPTH_TEST);
103 gl.Disable(GL_STENCIL_TEST);
130 VALIDATION_LOG <<
"Only textures with pixel format RGBA are supported yet.";
136 GLuint read_fbo = GL_NONE;
137 fml::ScopedCleanupClosure delete_fbos(
138 [&gl, &read_fbo]() {
DeleteFBO(gl, read_fbo, GL_READ_FRAMEBUFFER); });
142 if (!read.has_value()) {
145 read_fbo = read.value();
166 if (!texture_gles->GenerateMipmap()) {