mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
gl: Do not rely on driver statistics for s3TC textures; they are inconsistent.
This commit is contained in:
parent
f1c3b46d60
commit
b96ed5cd4e
@ -1557,47 +1557,50 @@ namespace gl
|
|||||||
m_depth = depth;
|
m_depth = depth;
|
||||||
m_mipmaps = mipmaps;
|
m_mipmaps = mipmaps;
|
||||||
|
|
||||||
GLenum query_target = (target == GL_TEXTURE_CUBE_MAP) ? GL_TEXTURE_CUBE_MAP_POSITIVE_X : target;
|
switch (sized_format)
|
||||||
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_COMPRESSED, (GLint*)&m_compressed);
|
|
||||||
|
|
||||||
if (m_compressed)
|
|
||||||
{
|
{
|
||||||
GLint compressed_size;
|
case GL_DEPTH_COMPONENT16:
|
||||||
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compressed_size);
|
{
|
||||||
m_pitch = compressed_size / height;
|
m_pitch = width * 2;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
case GL_DEPTH24_STENCIL8:
|
||||||
|
case GL_DEPTH32F_STENCIL8:
|
||||||
{
|
{
|
||||||
switch (sized_format)
|
m_pitch = width * 4;
|
||||||
{
|
break;
|
||||||
case GL_DEPTH_COMPONENT16:
|
}
|
||||||
{
|
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
|
||||||
m_pitch = width * 2;
|
{
|
||||||
break;
|
m_compressed = true;
|
||||||
}
|
m_pitch = width / 2;
|
||||||
case GL_DEPTH24_STENCIL8:
|
break;
|
||||||
case GL_DEPTH32F_STENCIL8:
|
}
|
||||||
{
|
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
|
||||||
m_pitch = width * 4;
|
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
|
||||||
break;
|
{
|
||||||
}
|
m_compressed = true;
|
||||||
default:
|
m_pitch = width;
|
||||||
{
|
break;
|
||||||
GLint r, g, b, a;
|
}
|
||||||
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_RED_SIZE, &r);
|
default:
|
||||||
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_GREEN_SIZE, &g);
|
{
|
||||||
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_BLUE_SIZE, &b);
|
GLenum query_target = (target == GL_TEXTURE_CUBE_MAP) ? GL_TEXTURE_CUBE_MAP_POSITIVE_X : target;
|
||||||
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_ALPHA_SIZE, &a);
|
GLint r, g, b, a;
|
||||||
|
|
||||||
m_pitch = width * (r + g + b + a) / 8;
|
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_RED_SIZE, &r);
|
||||||
break;
|
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_GREEN_SIZE, &g);
|
||||||
}
|
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_BLUE_SIZE, &b);
|
||||||
}
|
glGetTexLevelParameteriv(query_target, 0, GL_TEXTURE_ALPHA_SIZE, &a);
|
||||||
|
|
||||||
if (!m_pitch)
|
m_pitch = width * (r + g + b + a) / 8;
|
||||||
{
|
break;
|
||||||
fmt::throw_exception("Unhandled GL format 0x%X" HERE, sized_format);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!m_pitch)
|
||||||
|
{
|
||||||
|
fmt::throw_exception("Unhandled GL format 0x%X" HERE, sized_format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user