GLuint free_fbo_num = *freelist_it;
assert(fbo_formats.count(free_fbo_num) != 0);
fbo_formats.erase(free_fbo_num);
- glDeleteFramebuffers(1, &free_fbo_num);
- check_error();
+ // TODO: We currently leak due to FBO sharability issues.
+ // glDeleteFramebuffers(1, &free_fbo_num);
+ // check_error();
}
assert(fbo_formats.empty());
}
case GL_SRGB8_ALPHA8:
format = GL_RGBA;
break;
+ case GL_RGB32F_ARB:
+ case GL_RGB16F_ARB:
+ case GL_RGB8:
+ case GL_SRGB8:
+ format = GL_RGB;
+ break;
case GL_RG32F:
case GL_RG16F:
format = GL_RG;
map<GLuint, FBO>::const_iterator format_it = fbo_formats.find(fbo_num);
assert(format_it != fbo_formats.end());
if (format_it->second.texture_num == free_texture_num) {
- glDeleteFramebuffers(1, &fbo_num);
+ fbo_formats.erase(fbo_num);
+ // TODO: We currently leak due to FBO sharability issues.
+ // glDeleteFramebuffers(1, &fbo_num);
fbo_freelist.erase(fbo_freelist_it++);
} else {
++fbo_freelist_it;
fbo_freelist.pop_front();
assert(fbo_formats.count(free_fbo_num) != 0);
fbo_formats.erase(free_fbo_num);
- glDeleteFramebuffers(1, &free_fbo_num);
- check_error();
+ // TODO: We currently leak due to FBO sharability issues.
+ // glDeleteFramebuffers(1, &free_fbo_num);
+ // check_error();
}
pthread_mutex_unlock(&lock);
}
case GL_SRGB8_ALPHA8:
bytes_per_pixel = 4;
break;
+ case GL_RGB32F_ARB:
+ bytes_per_pixel = 12;
+ break;
+ case GL_RGB16F_ARB:
+ bytes_per_pixel = 6;
+ break;
+ case GL_RGB8:
+ case GL_SRGB8:
+ bytes_per_pixel = 3;
+ break;
case GL_RG32F:
bytes_per_pixel = 8;
break;