Merge "Use supported number of atomic counters in opaque indexing tests" into nyc-dev
diff --git a/modules/gles2/functional/es2fClippingTests.cpp b/modules/gles2/functional/es2fClippingTests.cpp
index 796cdef..0433d93 100644
--- a/modules/gles2/functional/es2fClippingTests.cpp
+++ b/modules/gles2/functional/es2fClippingTests.cpp
@@ -1881,7 +1881,8 @@
void PolyVertexClipTestGroup::init (void)
{
- const float far = 30000.0f;
+ const float far = 30000.0f;
+ const float farForThreeVertex = 20000.0f; // 3 vertex clipping tests use smaller triangles
const tcu::IVec3 outside[] =
{
// outside one clipping plane
@@ -2023,9 +2024,9 @@
const tcu::IVec3 r0 = outside[ndx1];
const tcu::IVec3 r1 = outside[ndx2];
const tcu::IVec3 r2 = outside[ndx3];
- const tcu::Vec4 p0 = tcu::Vec4(float(r0.x()) * far * w0, float(r0.y()) * far * w0, float(r0.z()) * far * w0, w0);
- const tcu::Vec4 p1 = tcu::Vec4(float(r1.x()) * far * w1, float(r1.y()) * far * w1, float(r1.z()) * far * w1, w1);
- const tcu::Vec4 p2 = tcu::Vec4(float(r2.x()) * far * w2, float(r2.y()) * far * w2, float(r2.z()) * far * w2, w2);
+ const tcu::Vec4 p0 = tcu::Vec4(float(r0.x()) * farForThreeVertex * w0, float(r0.y()) * farForThreeVertex * w0, float(r0.z()) * farForThreeVertex * w0, w0);
+ const tcu::Vec4 p1 = tcu::Vec4(float(r1.x()) * farForThreeVertex * w1, float(r1.y()) * farForThreeVertex * w1, float(r1.z()) * farForThreeVertex * w1, w1);
+ const tcu::Vec4 p2 = tcu::Vec4(float(r2.x()) * farForThreeVertex * w2, float(r2.y()) * farForThreeVertex * w2, float(r2.z()) * farForThreeVertex * w2, w2);
// ignore cases where polygon is along xz or yz planes
if (pointsOnLine(r0.swizzle(0, 1), r1.swizzle(0, 1), r2.swizzle(0, 1)))
diff --git a/modules/gles2/functional/es2fNegativeTextureApiTests.cpp b/modules/gles2/functional/es2fNegativeTextureApiTests.cpp
index 4fc673d..6db6035 100644
--- a/modules/gles2/functional/es2fNegativeTextureApiTests.cpp
+++ b/modules/gles2/functional/es2fNegativeTextureApiTests.cpp
@@ -24,6 +24,8 @@
#include "es2fNegativeTextureApiTests.hpp"
#include "es2fApiCase.hpp"
#include "tcuFormatUtil.hpp"
+#include "tcuCompressedTexture.hpp"
+#include "gluTextureUtil.hpp"
#include "gluContextInfo.hpp"
#include <vector>
@@ -1970,12 +1972,37 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- glCompressedTexSubImage2D(0, 0, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_ENUM);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_ENUM is generated if target is invalid.");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ glCompressedTexSubImage2D(0, 0, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_ENUM);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -1995,13 +2022,38 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, -1, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -2021,33 +2073,58 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is less than 0.");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, -1, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, -1, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, -1, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, -1, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, -1, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, -1, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -2067,14 +2144,39 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- deUint32 log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_TEXTURE_SIZE).");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ deUint32 log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_TEXTURE_SIZE)) + 1;
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -2094,38 +2196,63 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- deUint32 log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if level is greater than log_2(GL_MAX_CUBE_MAP_TEXTURE_SIZE).");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ deUint32 log2MaxTextureSize = deLog2Floor32(m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE)) + 1;
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, log2MaxTextureSize, 0, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -2145,21 +2272,46 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset or yoffset are negative.");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -1, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, -1, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -1, -1, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset or yoffset are negative.");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -1, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, -1, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, -1, -1, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -2179,22 +2331,47 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- deUint32 maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset + width > texture_width or yoffset + height > texture_height.");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, maxTextureSize, 0, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, maxTextureSize, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, maxTextureSize, maxTextureSize, 0, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ deUint32 maxTextureSize = m_context.getContextInfo().getInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE) + 1;
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if xoffset + width > texture_width or yoffset + height > texture_height.");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, maxTextureSize, 0, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, maxTextureSize, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, maxTextureSize, maxTextureSize, 0, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -2214,21 +2391,46 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, 0, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, -1, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, -1, accepted[i], 0, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if width or height is less than 0.");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, 0, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, -1, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
+ //expectError(GL_NO_ERROR);
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, -1, -1, accepted[i], 0, 0);
+ expectError(GL_INVALID_VALUE);
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
@@ -2248,13 +2450,49 @@
{
for (int i = 0; i < (int)accepted.size(); i++)
{
- m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if imageSize is not consistent with the format, dimensions, and contents of the specified compressed image data.");
- m_log << TestLog::Message << "// Using texture format " << tcu::toHex(accepted[i]) << TestLog::EndMessage;
- //glCompressedTexImage2D(GL_TEXTURE_2D, 0, accepted[i], 0, 0, 0, 0, 0);
- //expectError(GL_NO_ERROR);
- glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, accepted[i], -1, 0);
- expectError(GL_INVALID_VALUE);
- m_log << TestLog::EndSection;
+ const deInt32 glFormat = accepted[i];
+
+ try
+ {
+ const tcu::CompressedTexFormat format = glu::mapGLCompressedTexFormat(glFormat);
+ const tcu::IVec3 blockPixelSize = tcu::getBlockPixelSize(format);
+ const int blockSize = tcu::getBlockSize(format);
+ const std::vector<deUint8> data (blockSize, 0);
+ GLuint texture = 0;
+
+ glGenTextures(1, &texture);
+ glBindTexture(GL_TEXTURE_2D, texture);
+ expectError(GL_NO_ERROR);
+
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, glFormat, blockPixelSize.x(), blockPixelSize.y(), 0, blockSize, DE_NULL);
+ expectError(GL_NO_ERROR);
+
+ m_log << TestLog::Section("", "GL_INVALID_VALUE is generated if imageSize is not consistent with the format, dimensions, and contents of the specified compressed image data.");
+ m_log << TestLog::Message << "// Using texture format " << tcu::toHex(glFormat) << TestLog::EndMessage;
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y(), glFormat, -1, &data[0]);
+ expectError(GL_INVALID_VALUE);
+
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y(), glFormat, blockSize / 2, &data[0]);
+ expectError(GL_INVALID_VALUE);
+
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y(), glFormat, blockSize * 2, &data[0]);
+ expectError(GL_INVALID_VALUE);
+
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x(), blockPixelSize.y() * 2, glFormat, blockSize, &data[0]);
+ expectError(GL_INVALID_VALUE);
+
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, blockPixelSize.x() * 2, blockPixelSize.y(), glFormat, blockSize, &data[0]);
+ expectError(GL_INVALID_VALUE);
+
+ m_log << TestLog::EndSection;
+
+ glDeleteTextures(1, &texture);
+ expectError(GL_NO_ERROR);
+ }
+ catch (const tcu::InternalError&)
+ {
+ m_log << TestLog::Message << "Skipping unknown format: " << glFormat << TestLog::EndMessage;
+ }
}
}
});
diff --git a/modules/gles31/functional/es31fNegativeBufferApiTests.cpp b/modules/gles31/functional/es31fNegativeBufferApiTests.cpp
index aba9705..1d3b046 100644
--- a/modules/gles31/functional/es31fNegativeBufferApiTests.cpp
+++ b/modules/gles31/functional/es31fNegativeBufferApiTests.cpp
@@ -1487,7 +1487,7 @@
ctx.beginSection("GL_INVALID_OPERATION is generated if the source and destination buffers are identical.");
ctx.glBindFramebuffer (GL_DRAW_FRAMEBUFFER, fbo[0]);
ctx.expectError (GL_NO_ERROR);
- ctx.glBlitFramebuffer (0, 0, 16, 16, 0, 0, 16, 16, 0, GL_NEAREST);
+ ctx.glBlitFramebuffer (0, 0, 16, 16, 0, 0, 16, 16, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
ctx.expectError (GL_INVALID_OPERATION);
// restore
ctx.glBindFramebuffer (GL_DRAW_FRAMEBUFFER, fbo[1]);