texture_freelist_bytes += estimate_texture_size(texture_formats[texture_num]);
while (texture_freelist_bytes > texture_freelist_max_bytes) {
- GLuint free_texture_num = texture_freelist.front();
- texture_freelist.pop_front();
+ GLuint free_texture_num = texture_freelist.back();
+ texture_freelist.pop_back();
assert(texture_formats.count(free_texture_num) != 0);
texture_freelist_bytes -= estimate_texture_size(texture_formats[free_texture_num]);
texture_formats.erase(free_texture_num);
pair<void *, GLuint> key(context, fbo_num);
assert(fbo_formats.count(key) != 0);
if (fbo_formats[key].texture_num == 0) {
+ fbo_formats.erase(key);
glDeleteFramebuffers(1, &fbo_num);
check_error();
fbo_freelist[context].erase(freelist_it++);
case GL_R16F:
bytes_per_pixel = 2;
break;
+ case GL_RG8:
+ bytes_per_pixel = 2;
+ break;
case GL_R8:
bytes_per_pixel = 1;
break;