Browse Source

GL: these assertions are handled by compressed images themselves now.

Which means, they never get hit because it's impossible to craft such an
image. So remove that all.
pull/680/head
Vladimír Vondruš 1 year ago
parent
commit
dd5ff23399
  1. 23
      src/Magnum/GL/AbstractTexture.cpp
  2. 25
      src/Magnum/GL/CubeMapTexture.cpp
  3. 48
      src/Magnum/GL/Test/AbstractTextureGLTest.cpp
  4. 66
      src/Magnum/GL/Test/CubeMapTextureGLTest.cpp

23
src/Magnum/GL/AbstractTexture.cpp

@ -1831,18 +1831,6 @@ template<UnsignedInt dimensions> void AbstractTexture::compressedImage(const GLi
CORRADE_ASSERT(image.size() == size,
"GL::AbstractTexture::compressedImage(): expected image view size" << size << "but got" << image.size(), );
/* If the user-provided pixel storage doesn't tell us all properties about
the compression, we need to ask GL for it */
std::size_t dataSize;
if(!image.storage().compressedBlockSize().product() || !image.storage().compressedBlockDataSize()) {
GLint textureDataSize;
Context::current().state().texture.getLevelParameterivImplementation(*this, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &textureDataSize);
dataSize = textureDataSize;
} else dataSize = Magnum::Implementation::compressedImageDataSizeFor(image, size);
CORRADE_ASSERT(image.data().size() == dataSize,
"GL::AbstractTexture::compressedImage(): expected image view data size" << dataSize << "bytes but got" << image.data().size(), );
/* Internal texture format */
GLint format;
Context::current().state().texture.getLevelParameterivImplementation(*this, level, GL_TEXTURE_INTERNAL_FORMAT, &format);
@ -2022,17 +2010,6 @@ template<UnsignedInt dimensions> void AbstractTexture::compressedSubImage(const
CORRADE_ASSERT(compressedPixelFormat(image.format()) == CompressedPixelFormat(format),
"GL::AbstractTexture::compressedSubImage(): expected image view format" << CompressedPixelFormat(format) << "but got" << compressedPixelFormat(image.format()), );
/* Calculate compressed subimage size. If the user-provided pixel storage
doesn't tell us all properties about the compression, we need to ask GL
for it. That requires GL_ARB_internalformat_query2. */
std::size_t dataSize;
if(!image.storage().compressedBlockSize().product() || !image.storage().compressedBlockDataSize())
dataSize = compressedSubImageSize<dimensions>(TextureFormat(format), size);
else dataSize = Magnum::Implementation::compressedImageDataSizeFor(image, size);
CORRADE_ASSERT(image.data().size() == dataSize,
"GL::AbstractTexture::compressedSubImage(): expected image view data size" << dataSize << "bytes but got" << image.data().size(), );
#endif
const Vector3i paddedOffset = Vector3i::pad<dimensions>(range.min());

25
src/Magnum/GL/CubeMapTexture.cpp

@ -205,9 +205,6 @@ void CubeMapTexture::compressedImage(const Int level, const MutableCompressedIma
dataOffsetSize.second = Context::current().state().texture.getCubeLevelCompressedImageSizeImplementation(*this, level)*6;
} else dataOffsetSize = Magnum::Implementation::compressedImageDataOffsetSizeFor(image, size);
CORRADE_ASSERT(image.data().size() == dataOffsetSize.first + dataOffsetSize.second,
"GL::CubeMapTexture::compressedImage(): expected image view data size" << dataOffsetSize.first + dataOffsetSize.second << "bytes but got" << image.data().size(), );
#ifndef CORRADE_NO_ASSERT
/* Internal texture format */
GLint format;
@ -351,17 +348,6 @@ void CubeMapTexture::compressedImage(const CubeMapCoordinate coordinate, const I
"GL::CubeMapTexture::compressedImage(): expected image view size" << size << "but got" << image.size(), );
#ifndef CORRADE_NO_ASSERT
/* If the user-provided pixel storage doesn't tell us all properties about
the compression, we need to ask GL for it */
std::size_t dataSize;
if(!image.storage().compressedBlockSize().product() || !image.storage().compressedBlockDataSize())
dataSize = Context::current().state().texture.getCubeLevelCompressedImageSizeImplementation(*this, level);
else
dataSize = Magnum::Implementation::compressedImageDataSizeFor(image, size);
CORRADE_ASSERT(image.data().size() == dataSize,
"GL::CubeMapTexture::compressedImage(): expected image view data size" << dataSize << "bytes but got" << image.data().size(), );
/* Internal texture format. Zero-init to avoid an assert about value
already wrapped in compressedPixelFormatWrap() later if the drivers are
extra shitty (Intel Windows drivers, I'm talking about you). */
@ -477,17 +463,6 @@ void CubeMapTexture::compressedSubImage(const Int level, const Range3Di& range,
CORRADE_ASSERT(compressedPixelFormat(image.format()) == CompressedPixelFormat(format),
"GL::CubeMapTexture::compressedSubImage(): expected image view format" << CompressedPixelFormat(format) << "but got" << compressedPixelFormat(image.format()), );
/* Calculate compressed subimage size. If the user-provided pixel storage
doesn't tell us all properties about the compression, we need to ask GL
for it. That requires GL_ARB_internalformat_query2. */
std::size_t dataSize;
if(!image.storage().compressedBlockSize().product() || !image.storage().compressedBlockDataSize())
dataSize = compressedSubImageSize<3>(TextureFormat(format), range.size());
else dataSize = Magnum::Implementation::compressedImageDataSizeFor(image, range.size());
CORRADE_ASSERT(image.data().size() == dataSize,
"GL::CubeMapTexture::compressedSubImage(): expected image view data size" << dataSize << "bytes but got" << image.data().size(), );
#endif
Buffer::unbindInternal(Buffer::TargetHint::PixelPack);

48
src/Magnum/GL/Test/AbstractTextureGLTest.cpp

@ -55,11 +55,9 @@ struct AbstractTextureGLTest: OpenGLTester {
void compressedImageQueryViewNullptr();
void compressedImageQueryViewBadSize();
void compressedImageQueryViewBadDataSize();
void compressedImageQueryViewBadFormat();
void compressedSubImageQueryViewNullptr();
void compressedSubImageQueryViewBadSize();
void compressedSubImageQueryViewBadDataSize();
void compressedSubImageQueryViewBadFormat();
#endif
};
@ -76,11 +74,9 @@ AbstractTextureGLTest::AbstractTextureGLTest() {
&AbstractTextureGLTest::compressedImageQueryViewNullptr,
&AbstractTextureGLTest::compressedImageQueryViewBadSize,
&AbstractTextureGLTest::compressedImageQueryViewBadDataSize,
&AbstractTextureGLTest::compressedImageQueryViewBadFormat,
&AbstractTextureGLTest::compressedSubImageQueryViewNullptr,
&AbstractTextureGLTest::compressedSubImageQueryViewBadSize,
&AbstractTextureGLTest::compressedSubImageQueryViewBadDataSize,
&AbstractTextureGLTest::compressedSubImageQueryViewBadFormat,
#endif
});
@ -229,26 +225,6 @@ void AbstractTextureGLTest::compressedImageQueryViewBadSize() {
CORRADE_COMPARE(out, "GL::AbstractTexture::compressedImage(): expected image view size Vector(4, 4) but got Vector(4, 8)\n");
}
void AbstractTextureGLTest::compressedImageQueryViewBadDataSize() {
CORRADE_SKIP_IF_NO_ASSERT();
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() << "is not supported.");
Texture2D texture;
texture.setStorage(1, TextureFormat::CompressedRGBAS3tcDxt3, Vector2i{4});
MAGNUM_VERIFY_NO_GL_ERROR();
char data[16 - 1];
MutableCompressedImageView2D image{CompressedPixelFormat::RGBAS3tcDxt3, Vector2i{4}, data};
Containers::String out;
Error redirectError{&out};
texture.compressedImage(0, image);
CORRADE_COMPARE(out, "GL::AbstractTexture::compressedImage(): expected image view data size 16 bytes but got 15\n");
}
void AbstractTextureGLTest::compressedImageQueryViewBadFormat() {
CORRADE_SKIP_IF_NO_ASSERT();
@ -316,30 +292,6 @@ void AbstractTextureGLTest::compressedSubImageQueryViewBadSize() {
CORRADE_COMPARE(out, "GL::AbstractTexture::compressedSubImage(): expected image view size Vector(4, 4) but got Vector(4, 8)\n");
}
void AbstractTextureGLTest::compressedSubImageQueryViewBadDataSize() {
CORRADE_SKIP_IF_NO_ASSERT();
if(!Context::current().isExtensionSupported<Extensions::ARB::get_texture_sub_image>())
CORRADE_SKIP(Extensions::ARB::get_texture_sub_image::string() << "is not supported.");
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() << "is not supported.");
if(!Context::current().isExtensionSupported<Extensions::ARB::internalformat_query2>())
CORRADE_SKIP(Extensions::ARB::internalformat_query2::string() << "is not supported.");
Texture2D texture;
texture.setStorage(1, TextureFormat::CompressedRGBAS3tcDxt3, Vector2i{4});
MAGNUM_VERIFY_NO_GL_ERROR();
char data[16 - 1];
MutableCompressedImageView2D image{CompressedPixelFormat::RGBAS3tcDxt3, Vector2i{4}, data};
Containers::String out;
Error redirectError{&out};
texture.compressedSubImage(0, {{}, Vector2i{4}}, image);
CORRADE_COMPARE(out, "GL::AbstractTexture::compressedSubImage(): expected image view data size 16 bytes but got 15\n");
}
void AbstractTextureGLTest::compressedSubImageQueryViewBadFormat() {
CORRADE_SKIP_IF_NO_ASSERT();

66
src/Magnum/GL/Test/CubeMapTextureGLTest.cpp

@ -130,7 +130,6 @@ struct CubeMapTextureGLTest: OpenGLTester {
void compressedImageQueryView();
void compressedImageQueryViewNullptr();
void compressedImageQueryViewBadSize();
void compressedImageQueryViewBadDataSize();
void compressedImageQueryViewBadFormat();
#endif
#if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL))
@ -145,7 +144,6 @@ struct CubeMapTextureGLTest: OpenGLTester {
void compressedSubImageQueryView();
void compressedSubImageQueryViewNullptr();
void compressedSubImageQueryViewBadSize();
void compressedSubImageQueryViewBadDataSize();
void compressedSubImageQueryViewBadFormat();
void compressedSubImageQueryBuffer();
#endif
@ -168,7 +166,6 @@ struct CubeMapTextureGLTest: OpenGLTester {
void compressedImage3DQueryView();
void compressedImage3DQueryViewNullptr();
void compressedImage3DQueryViewBadSize();
void compressedImage3DQueryViewBadDataSize();
void compressedImage3DQueryViewBadFormat();
#endif
@ -432,7 +429,6 @@ CubeMapTextureGLTest::CubeMapTextureGLTest() {
#ifndef MAGNUM_TARGET_GLES
addTests({&CubeMapTextureGLTest::compressedImageQueryViewNullptr,
&CubeMapTextureGLTest::compressedImageQueryViewBadSize,
&CubeMapTextureGLTest::compressedImageQueryViewBadDataSize,
&CubeMapTextureGLTest::compressedImageQueryViewBadFormat});
addInstancedTests({
@ -443,7 +439,6 @@ CubeMapTextureGLTest::CubeMapTextureGLTest() {
addTests({&CubeMapTextureGLTest::compressedImage3DQueryViewNullptr,
&CubeMapTextureGLTest::compressedImage3DQueryViewBadSize,
&CubeMapTextureGLTest::compressedImage3DQueryViewBadDataSize,
&CubeMapTextureGLTest::compressedImage3DQueryViewBadFormat});
#endif
@ -462,7 +457,6 @@ CubeMapTextureGLTest::CubeMapTextureGLTest() {
#ifndef MAGNUM_TARGET_GLES
addTests({&CubeMapTextureGLTest::compressedSubImageQueryViewNullptr,
&CubeMapTextureGLTest::compressedSubImageQueryViewBadSize,
&CubeMapTextureGLTest::compressedSubImageQueryViewBadDataSize,
&CubeMapTextureGLTest::compressedSubImageQueryViewBadFormat});
#endif
@ -1462,26 +1456,6 @@ void CubeMapTextureGLTest::compressedImageQueryViewBadSize() {
CORRADE_COMPARE(out, "GL::CubeMapTexture::compressedImage(): expected image view size Vector(4, 4) but got Vector(4, 8)\n");
}
void CubeMapTextureGLTest::compressedImageQueryViewBadDataSize() {
CORRADE_SKIP_IF_NO_ASSERT();
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() << "is not supported.");
CubeMapTexture texture;
texture.setStorage(1, TextureFormat::CompressedRGBAS3tcDxt3, Vector2i{4});
MAGNUM_VERIFY_NO_GL_ERROR();
char data[16 - 1];
MutableCompressedImageView2D image{CompressedPixelFormat::RGBAS3tcDxt3, Vector2i{4}, data};
Containers::String out;
Error redirectError{&out};
texture.compressedImage(CubeMapCoordinate::PositiveX, 0, image);
CORRADE_COMPARE(out, "GL::CubeMapTexture::compressedImage(): expected image view data size 16 bytes but got 15\n");
}
void CubeMapTextureGLTest::compressedImageQueryViewBadFormat() {
CORRADE_SKIP_IF_NO_ASSERT();
@ -1813,26 +1787,6 @@ void CubeMapTextureGLTest::compressedSubImageQueryViewBadSize() {
CORRADE_COMPARE(out, "GL::CubeMapTexture::compressedSubImage(): expected image view size Vector(4, 4, 1) but got Vector(4, 4, 2)\n");
}
void CubeMapTextureGLTest::compressedSubImageQueryViewBadDataSize() {
CORRADE_SKIP_IF_NO_ASSERT();
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() << "is not supported.");
CubeMapTexture texture;
texture.setStorage(1, TextureFormat::CompressedRGBAS3tcDxt3, Vector2i{12});
MAGNUM_VERIFY_NO_GL_ERROR();
char data[16 - 1];
MutableCompressedImageView3D image{CompressedPixelFormat::RGBAS3tcDxt3, Vector3i{4, 4, 1}, data};
Containers::String out;
Error redirectError{&out};
texture.compressedSubImage(0, Range3Di::fromSize({4, 4, 0}, {4, 4, 1}), image);
CORRADE_COMPARE(out, "GL::CubeMapTexture::compressedSubImage(): expected image view data size 16 bytes but got 15\n");
}
void CubeMapTextureGLTest::compressedSubImageQueryViewBadFormat() {
CORRADE_SKIP_IF_NO_ASSERT();
@ -2221,26 +2175,6 @@ void CubeMapTextureGLTest::compressedImage3DQueryViewBadSize() {
CORRADE_COMPARE(out, "GL::CubeMapTexture::compressedImage(): expected image view size Vector(4, 4, 6) but got Vector(4, 8, 6)\n");
}
void CubeMapTextureGLTest::compressedImage3DQueryViewBadDataSize() {
CORRADE_SKIP_IF_NO_ASSERT();
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() << "is not supported.");
CubeMapTexture texture;
texture.setStorage(1, TextureFormat::CompressedRGBAS3tcDxt3, Vector2i{4});
MAGNUM_VERIFY_NO_GL_ERROR();
char data[16*6 - 1];
MutableCompressedImageView3D image{CompressedPixelFormat::RGBAS3tcDxt3, Vector3i{4, 4, 6}, data};
Containers::String out;
Error redirectError{&out};
texture.compressedImage(0, image);
CORRADE_COMPARE(out, "GL::CubeMapTexture::compressedImage(): expected image view data size 96 bytes but got 95\n");
}
void CubeMapTextureGLTest::compressedImage3DQueryViewBadFormat() {
CORRADE_SKIP_IF_NO_ASSERT();

Loading…
Cancel
Save