This reverts commit 407fd15515.
			
			
This commit is contained in:
		@@ -5,7 +5,6 @@
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
#include <array>
 | 
			
		||||
#include <atomic>
 | 
			
		||||
#include <cmath>
 | 
			
		||||
#include <cstring>
 | 
			
		||||
#include <iterator>
 | 
			
		||||
#include <memory>
 | 
			
		||||
@@ -321,14 +320,8 @@ static void AllocateSurfaceTexture(GLuint texture, const FormatTuple& format_tup
 | 
			
		||||
    cur_state.Apply();
 | 
			
		||||
    glActiveTexture(GL_TEXTURE0);
 | 
			
		||||
 | 
			
		||||
    if (GL_ARB_texture_storage) {
 | 
			
		||||
        // Allocate all possible mipmap levels upfront
 | 
			
		||||
        auto levels = std::log2(std::max(width, height)) + 1;
 | 
			
		||||
        glTexStorage2D(GL_TEXTURE_2D, levels, format_tuple.internal_format, width, height);
 | 
			
		||||
    } else {
 | 
			
		||||
        glTexImage2D(GL_TEXTURE_2D, 0, format_tuple.internal_format, width, height, 0,
 | 
			
		||||
                     format_tuple.format, format_tuple.type, nullptr);
 | 
			
		||||
    }
 | 
			
		||||
    glTexImage2D(GL_TEXTURE_2D, 0, format_tuple.internal_format, width, height, 0,
 | 
			
		||||
                 format_tuple.format, format_tuple.type, nullptr);
 | 
			
		||||
 | 
			
		||||
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
 | 
			
		||||
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 | 
			
		||||
@@ -348,22 +341,17 @@ static void AllocateTextureCube(GLuint texture, const FormatTuple& format_tuple,
 | 
			
		||||
    cur_state.texture_cube_unit.texture_cube = texture;
 | 
			
		||||
    cur_state.Apply();
 | 
			
		||||
    glActiveTexture(TextureUnits::TextureCube.Enum());
 | 
			
		||||
    if (GL_ARB_texture_storage) {
 | 
			
		||||
        // Allocate all possible mipmap levels in case the game uses them later
 | 
			
		||||
        auto levels = std::log2(width) + 1;
 | 
			
		||||
        glTexStorage2D(GL_TEXTURE_CUBE_MAP, levels, format_tuple.internal_format, width, width);
 | 
			
		||||
    } else {
 | 
			
		||||
        for (auto faces : {
 | 
			
		||||
                 GL_TEXTURE_CUBE_MAP_POSITIVE_X,
 | 
			
		||||
                 GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
 | 
			
		||||
                 GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
 | 
			
		||||
                 GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
 | 
			
		||||
                 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
 | 
			
		||||
                 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
 | 
			
		||||
             }) {
 | 
			
		||||
            glTexImage2D(faces, 0, format_tuple.internal_format, width, width, 0,
 | 
			
		||||
                         format_tuple.format, format_tuple.type, nullptr);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    for (auto faces : {
 | 
			
		||||
             GL_TEXTURE_CUBE_MAP_POSITIVE_X,
 | 
			
		||||
             GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
 | 
			
		||||
             GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
 | 
			
		||||
             GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
 | 
			
		||||
             GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
 | 
			
		||||
             GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
 | 
			
		||||
         }) {
 | 
			
		||||
        glTexImage2D(faces, 0, format_tuple.internal_format, width, width, 0, format_tuple.format,
 | 
			
		||||
                     format_tuple.type, nullptr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Restore previous texture bindings
 | 
			
		||||
@@ -1562,14 +1550,9 @@ Surface RasterizerCacheOpenGL::GetTextureSurface(const Pica::Texture::TextureInf
 | 
			
		||||
                width = surface->GetScaledWidth();
 | 
			
		||||
                height = surface->GetScaledHeight();
 | 
			
		||||
            }
 | 
			
		||||
            // If we are using ARB_texture_storage then we've already allocated all of the mipmap
 | 
			
		||||
            // levels
 | 
			
		||||
            if (!GL_ARB_texture_storage) {
 | 
			
		||||
                for (u32 level = surface->max_level + 1; level <= max_level; ++level) {
 | 
			
		||||
                    glTexImage2D(GL_TEXTURE_2D, level, format_tuple.internal_format, width >> level,
 | 
			
		||||
                                 height >> level, 0, format_tuple.format, format_tuple.type,
 | 
			
		||||
                                 nullptr);
 | 
			
		||||
                }
 | 
			
		||||
            for (u32 level = surface->max_level + 1; level <= max_level; ++level) {
 | 
			
		||||
                glTexImage2D(GL_TEXTURE_2D, level, format_tuple.internal_format, width >> level,
 | 
			
		||||
                             height >> level, 0, format_tuple.format, format_tuple.type, nullptr);
 | 
			
		||||
            }
 | 
			
		||||
            if (surface->is_custom) {
 | 
			
		||||
                // TODO: proper mipmap support for custom textures
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user