Skip to content

Commit 2ba8b40

Browse files
SiegeLordExSiegeLord
authored andcommitted
Refuse to create FBOs for bitmaps for which we tried to create FBOs and failed.
1 parent 95bbfe4 commit 2ba8b40

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

include/allegro5/internal/aintern_opengl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ typedef struct ALLEGRO_BITMAP_EXTRA_OPENGL
7979
GLuint texture; /* 0 means, not uploaded yet. */
8080

8181
ALLEGRO_FBO_INFO *fbo_info;
82+
/* We tried to create an FBO, but failed... don't keep trying. */
83+
bool fbo_failed;
8284

8385
/* When an OpenGL bitmap is locked, the locked region is usually backed by a
8486
* temporary memory buffer pointed to by lock_buffer.

src/opengl/ogl_fbo.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,9 @@ bool _al_ogl_setup_fbo_non_backbuffer(ALLEGRO_DISPLAY *display,
566566

567567
ASSERT(bitmap->parent == NULL);
568568

569+
if (ogl_bitmap->fbo_failed)
570+
return false;
571+
569572
/* When a bitmap is set as target bitmap, we try to create an FBO for it. */
570573
info = ogl_bitmap->fbo_info;
571574
if (!info) {
@@ -662,6 +665,7 @@ static void use_fbo_for_bitmap(ALLEGRO_DISPLAY *display,
662665
glDeleteFramebuffersEXT(1, &info->fbo);
663666
_al_ogl_reset_fbo_info(info);
664667
ogl_bitmap->fbo_info = NULL;
668+
ogl_bitmap->fbo_failed = true;
665669
}
666670
else {
667671
display->ogl_extras->opengl_target = bitmap;

0 commit comments

Comments
 (0)