Commit d2d8282a by Shahbaz Youssefi Committed by Commit Bot

Refactor 3D/2DArray copy texture tests

The test methods were duplicated between 3d and 2d array tests. This change creates common methods that can be called by the two test sets. Additionally: - Input colors are symbolized as they are repeated multiple times. - The color used for unmultiply-alpha test is slightly tweaked to avoid generating exactly x.5 values with undefined rounding. Bug: None Change-Id: If0cf694017724a72976d3d5cb0f54f8c49a0502a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246319 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com>
parent 7005248b
...@@ -226,6 +226,13 @@ class CopyTexture3DTest : public ANGLETest ...@@ -226,6 +226,13 @@ class CopyTexture3DTest : public ANGLETest
} }
} }
void testUnsizedFormats(const GLenum testTarget);
void testSnormFormats(const GLenum testTarget);
void testUnsignedByteFormats(const GLenum testTarget);
void testFloatFormats(const GLenum testTarget);
void testIntFormats(const GLenum testTarget);
void testUintFormats(const GLenum testTarget);
virtual const char *getFragmentShaderSource() = 0; virtual const char *getFragmentShaderSource() = 0;
GLuint mProgram = 0; GLuint mProgram = 0;
...@@ -472,109 +479,233 @@ TEST_P(Texture3DCopy, FlipY) ...@@ -472,109 +479,233 @@ TEST_P(Texture3DCopy, FlipY)
EXPECT_PIXEL_COLOR_EQ(width, height, GLColor::green); EXPECT_PIXEL_COLOR_EQ(width, height, GLColor::green);
} }
void CopyTexture3DTest::testUnsizedFormats(const GLenum testTarget)
{
const GLColor kColorNoAlpha(250, 200, 150, 100);
const GLColor kColorPreAlpha(250, 200, 150, 100);
const GLColor kColorUnAlpha(101, 150, 200, 200);
testCopy(testTarget, kColorNoAlpha, GL_RGB, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 200, 150, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 78, 59, 255));
testCopy(testTarget, kColorUnAlpha, GL_RGB, GL_UNSIGNED_BYTE, false, false, true,
GLColor(128, 191, 255, 255));
testCopy(testTarget, kColorNoAlpha, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, false, false, false,
GLColor(247, 199, 148, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, false, true, false,
GLColor(99, 77, 57, 255));
testCopy(testTarget, kColorUnAlpha, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, false, false, true,
GLColor(132, 190, 255, 255));
testCopy(testTarget, kColorNoAlpha, GL_RGBA, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 200, 150, 100));
testCopy(testTarget, kColorPreAlpha, GL_RGBA, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 78, 59, 100));
testCopy(testTarget, kColorUnAlpha, GL_RGBA, GL_UNSIGNED_BYTE, false, false, true,
GLColor(128, 191, 255, 200));
testCopy(testTarget, kColorNoAlpha, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, false, false, false,
GLColor(255, 204, 153, 102));
testCopy(testTarget, kColorPreAlpha, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, false, true, false,
GLColor(102, 85, 51, 102));
testCopy(testTarget, kColorUnAlpha, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, false, false, true,
GLColor(136, 187, 255, 204));
testCopy(testTarget, kColorNoAlpha, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, false, false, false,
GLColor(247, 198, 148, 0));
testCopy(testTarget, kColorPreAlpha, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, false, true, false,
GLColor(99, 82, 57, 0));
testCopy(testTarget, kColorUnAlpha, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, false, false, true,
GLColor(132, 189, 255, 255));
testCopy(testTarget, kColorNoAlpha, GL_LUMINANCE, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 250, 250, 255));
testCopy(testTarget, kColorPreAlpha, GL_LUMINANCE, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 98, 98, 255));
testCopy(testTarget, kColorUnAlpha, GL_LUMINANCE, GL_UNSIGNED_BYTE, false, false, true,
GLColor(128, 128, 128, 255));
testCopy(testTarget, kColorNoAlpha, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 250, 250, 100));
testCopy(testTarget, kColorPreAlpha, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 98, 98, 100));
testCopy(testTarget, kColorUnAlpha, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, false, false, true,
GLColor(128, 128, 128, 200));
testCopy(testTarget, kColorNoAlpha, GL_ALPHA, GL_UNSIGNED_BYTE, false, false, false,
GLColor(0, 0, 0, 100));
testCopy(testTarget, kColorNoAlpha, GL_ALPHA, GL_UNSIGNED_BYTE, false, false, false,
GLColor(0, 0, 0, 100));
testCopy(testTarget, kColorNoAlpha, GL_ALPHA, GL_UNSIGNED_BYTE, false, false, false,
GLColor(0, 0, 0, 100));
}
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with unsized // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with unsized
// formats. // formats.
TEST_P(Texture3DCopy, UnsizedFormats) TEST_P(Texture3DCopy, UnsizedFormats)
{ {
ANGLE_SKIP_TEST_IF(!checkExtensions()); ANGLE_SKIP_TEST_IF(!checkExtensions());
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_BYTE, false, false, testUnsizedFormats(GL_TEXTURE_3D);
false, GLColor(250, 200, 150, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_BYTE, false, true,
false, GLColor(98, 78, 59, 255));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 200), GL_RGB, GL_UNSIGNED_BYTE, false, false,
true, GLColor(128, 191, 255, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_SHORT_5_6_5, false,
false, false, GLColor(247, 199, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_SHORT_5_6_5, false,
true, false, GLColor(99, 77, 57, 255));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 200), GL_RGB, GL_UNSIGNED_SHORT_5_6_5, false,
false, true, GLColor(132, 190, 255, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_BYTE, false, false,
false, GLColor(250, 200, 150, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_BYTE, false, true,
false, GLColor(98, 78, 59, 100));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 200), GL_RGBA, GL_UNSIGNED_BYTE, false, false,
true, GLColor(128, 191, 255, 200));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, false,
false, false, GLColor(255, 204, 153, 102));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, false,
true, false, GLColor(102, 85, 51, 102));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 200), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, false,
false, true, GLColor(136, 187, 255, 204));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, false,
false, false, GLColor(247, 198, 148, 0));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, false,
true, false, GLColor(99, 82, 57, 0));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 200), GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, false,
false, true, GLColor(132, 189, 255, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_LUMINANCE, GL_UNSIGNED_BYTE, false,
false, false, GLColor(250, 250, 250, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_LUMINANCE, GL_UNSIGNED_BYTE, false,
true, false, GLColor(98, 98, 98, 255));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 200), GL_LUMINANCE, GL_UNSIGNED_BYTE, false,
false, true, GLColor(128, 128, 128, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE,
false, false, false, GLColor(250, 250, 250, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE,
false, true, false, GLColor(98, 98, 98, 100));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 200), GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE,
false, false, true, GLColor(128, 128, 128, 200));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_ALPHA, GL_UNSIGNED_BYTE, false, false,
false, GLColor(0, 0, 0, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_ALPHA, GL_UNSIGNED_BYTE, false, false,
false, GLColor(0, 0, 0, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_ALPHA, GL_UNSIGNED_BYTE, false, false,
false, GLColor(0, 0, 0, 100));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with snorm void CopyTexture3DTest::testSnormFormats(const GLenum testTarget)
// formats.
TEST_P(Texture3DCopy, SnormFormats)
{ {
ANGLE_SKIP_TEST_IF(!checkExtensions()); const GLColor kColorNoAlpha(250, 200, 150, 190);
const GLColor kColorPreAlpha(250, 200, 150, 190);
const GLColor kColorUnAlpha(200, 150, 100, 230);
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_R8_SNORM, GL_BYTE, false, false, false, testCopy(testTarget, kColorNoAlpha, GL_R8_SNORM, GL_BYTE, false, false, false,
GLColor(251, 0, 0, 255)); GLColor(251, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_R8_SNORM, GL_BYTE, false, true, false, testCopy(testTarget, kColorPreAlpha, GL_R8_SNORM, GL_BYTE, false, true, false,
GLColor(187, 0, 0, 255)); GLColor(187, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(200, 150, 100, 230), GL_R8_SNORM, GL_BYTE, false, false, true, testCopy(testTarget, kColorUnAlpha, GL_R8_SNORM, GL_BYTE, false, false, true,
GLColor(221, 0, 0, 255)); GLColor(221, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_RG8_SNORM, GL_BYTE, false, false, false, testCopy(testTarget, kColorNoAlpha, GL_RG8_SNORM, GL_BYTE, false, false, false,
GLColor(251, 201, 0, 255)); GLColor(251, 201, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_RG8_SNORM, GL_BYTE, false, true, false, testCopy(testTarget, kColorPreAlpha, GL_RG8_SNORM, GL_BYTE, false, true, false,
GLColor(187, 149, 0, 255)); GLColor(187, 149, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(200, 150, 100, 230), GL_RG8_SNORM, GL_BYTE, false, false, true, testCopy(testTarget, kColorUnAlpha, GL_RG8_SNORM, GL_BYTE, false, false, true,
GLColor(221, 167, 0, 255)); GLColor(221, 167, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_RGB8_SNORM, GL_BYTE, false, false, testCopy(testTarget, kColorNoAlpha, GL_RGB8_SNORM, GL_BYTE, false, false, false,
false, GLColor(251, 201, 151, 255)); GLColor(251, 201, 151, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_RGB8_SNORM, GL_BYTE, false, true, false, testCopy(testTarget, kColorPreAlpha, GL_RGB8_SNORM, GL_BYTE, false, true, false,
GLColor(187, 149, 112, 255)); GLColor(187, 149, 112, 255));
testCopy(GL_TEXTURE_3D, GLColor(200, 150, 100, 230), GL_RGB8_SNORM, GL_BYTE, false, false, true, testCopy(testTarget, kColorUnAlpha, GL_RGB8_SNORM, GL_BYTE, false, false, true,
GLColor(221, 167, 110, 255)); GLColor(221, 167, 110, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_RGBA8_SNORM, GL_BYTE, false, false, testCopy(testTarget, kColorNoAlpha, GL_RGBA8_SNORM, GL_BYTE, false, false, false,
false, GLColor(251, 201, 151, 191)); GLColor(251, 201, 151, 191));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 190), GL_RGBA8_SNORM, GL_BYTE, false, true, testCopy(testTarget, kColorPreAlpha, GL_RGBA8_SNORM, GL_BYTE, false, true, false,
false, GLColor(187, 149, 112, 191)); GLColor(187, 149, 112, 191));
testCopy(GL_TEXTURE_3D, GLColor(200, 150, 100, 230), GL_RGBA8_SNORM, GL_BYTE, false, false, testCopy(testTarget, kColorUnAlpha, GL_RGBA8_SNORM, GL_BYTE, false, false, true,
true, GLColor(221, 167, 110, 231)); GLColor(221, 167, 110, 231));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB10_A2, testCopy(testTarget, GLColor(250, 200, 150, 100), GL_RGB10_A2, GL_UNSIGNED_INT_2_10_10_10_REV,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, false, GLColor(250, 200, 150, 85)); false, false, false, GLColor(250, 200, 150, 85));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB10_A2, testCopy(testTarget, GLColor(250, 200, 150, 200), GL_RGB10_A2, GL_UNSIGNED_INT_2_10_10_10_REV,
GL_UNSIGNED_INT_2_10_10_10_REV, false, true, false, GLColor(196, 157, 118, 170)); false, true, false, GLColor(196, 157, 118, 170));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 250, 200), GL_RGB10_A2, testCopy(testTarget, GLColor(101, 150, 250, 200), GL_RGB10_A2, GL_UNSIGNED_INT_2_10_10_10_REV,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, true, GLColor(128, 191, 255, 170)); false, false, true, GLColor(128, 191, 255, 170));
}
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with snorm
// formats.
TEST_P(Texture3DCopy, SnormFormats)
{
ANGLE_SKIP_TEST_IF(!checkExtensions());
testSnormFormats(GL_TEXTURE_3D);
}
void CopyTexture3DTest::testUnsignedByteFormats(const GLenum testTarget)
{
{
const GLColor kColorNoAlpha(250, 200, 150, 100);
const GLColor kColorPreAlpha(250, 200, 150, 100);
const GLColor kColorUnAlpha(250, 200, 150, 100);
testCopy(testTarget, kColorNoAlpha, GL_R8, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 0, 0, 255));
testCopy(testTarget, kColorPreAlpha, GL_R8, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 0, 0, 255));
testCopy(testTarget, kColorUnAlpha, GL_R8, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 0, 0, 255));
testCopy(testTarget, kColorNoAlpha, GL_RG8, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 200, 0, 255));
testCopy(testTarget, kColorPreAlpha, GL_RG8, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 78, 0, 255));
testCopy(testTarget, kColorUnAlpha, GL_RG8, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 255, 0, 255));
testCopy(testTarget, kColorNoAlpha, GL_RGB8, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 200, 150, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB8, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 78, 59, 255));
testCopy(testTarget, kColorUnAlpha, GL_RGB8, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 255, 255, 255));
testCopy(testTarget, kColorNoAlpha, GL_RGBA8, GL_UNSIGNED_BYTE, false, false, false,
GLColor(250, 200, 150, 100));
testCopy(testTarget, kColorPreAlpha, GL_RGBA8, GL_UNSIGNED_BYTE, false, true, false,
GLColor(98, 78, 59, 100));
testCopy(testTarget, kColorUnAlpha, GL_RGBA8, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 255, 255, 100));
testCopy(testTarget, kColorNoAlpha, GL_RGBA4, GL_UNSIGNED_BYTE, false, false, false,
GLColor(255, 204, 153, 102));
testCopy(testTarget, kColorPreAlpha, GL_RGBA4, GL_UNSIGNED_BYTE, false, true, false,
GLColor(102, 85, 51, 102));
testCopy(testTarget, GLColor(100, 150, 200, 210), GL_RGBA4, GL_UNSIGNED_BYTE, false, false,
true, GLColor(119, 187, 238, 204));
testCopy(testTarget, kColorNoAlpha, GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4, false, false,
false, GLColor(255, 204, 153, 102));
testCopy(testTarget, kColorPreAlpha, GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4, false, true,
false, GLColor(102, 85, 51, 102));
testCopy(testTarget, GLColor(100, 150, 200, 210), GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4,
false, false, true, GLColor(119, 187, 238, 204));
testCopy(testTarget, kColorNoAlpha, GL_SRGB8, GL_UNSIGNED_BYTE, false, false, false,
GLColor(244, 148, 78, 255));
testCopy(testTarget, kColorPreAlpha, GL_SRGB8, GL_UNSIGNED_BYTE, false, true, false,
GLColor(31, 19, 11, 255));
testCopy(testTarget, kColorUnAlpha, GL_SRGB8, GL_UNSIGNED_BYTE, false, false, true,
GLColor(52, 253, 53, 255));
testCopy(testTarget, kColorNoAlpha, GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE, false, false, false,
GLColor(244, 148, 78, 100));
testCopy(testTarget, kColorPreAlpha, GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE, false, true, false,
GLColor(31, 19, 11, 100));
testCopy(testTarget, kColorUnAlpha, GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE, false, false, true,
GLColor(52, 253, 53, 100));
testCopy(testTarget, GLColor(250, 200, 150, 200), GL_RGB5_A1, GL_UNSIGNED_BYTE, false,
false, false, GLColor(247, 198, 148, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB5_A1, GL_UNSIGNED_BYTE, false, true, false,
GLColor(99, 82, 57, 0));
testCopy(testTarget, kColorUnAlpha, GL_RGB5_A1, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 255, 255, 0));
}
{
const GLColor kColorNoAlpha(250, 200, 150, 200);
const GLColor kColorPreAlpha(250, 200, 150, 200);
const GLColor kColorUnAlpha(101, 150, 250, 200);
testCopy(testTarget, kColorNoAlpha, GL_RGB5_A1, GL_UNSIGNED_INT_2_10_10_10_REV, false,
false, false, GLColor(247, 198, 148, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB5_A1, GL_UNSIGNED_INT_2_10_10_10_REV, false,
true, false, GLColor(198, 156, 115, 255));
testCopy(testTarget, kColorUnAlpha, GL_RGB5_A1, GL_UNSIGNED_INT_2_10_10_10_REV, false,
false, true, GLColor(132, 189, 255, 255));
testCopy(testTarget, kColorNoAlpha, GL_RGB5_A1, GL_UNSIGNED_SHORT_5_5_5_1, false, false,
false, GLColor(247, 198, 148, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB5_A1, GL_UNSIGNED_SHORT_5_5_5_1, false, true,
false, GLColor(198, 156, 115, 255));
testCopy(testTarget, kColorUnAlpha, GL_RGB5_A1, GL_UNSIGNED_SHORT_5_5_5_1, false, false,
true, GLColor(132, 189, 255, 255));
testCopy(testTarget, kColorNoAlpha, GL_RGB565, GL_UNSIGNED_BYTE, false, false, false,
GLColor(247, 199, 148, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB565, GL_UNSIGNED_BYTE, false, true, false,
GLColor(198, 158, 115, 255));
testCopy(testTarget, kColorUnAlpha, GL_RGB565, GL_UNSIGNED_BYTE, false, false, true,
GLColor(132, 190, 255, 255));
testCopy(testTarget, kColorNoAlpha, GL_RGB565, GL_UNSIGNED_SHORT_5_6_5, false, false, false,
GLColor(247, 199, 148, 255));
testCopy(testTarget, kColorPreAlpha, GL_RGB565, GL_UNSIGNED_SHORT_5_6_5, false, true, false,
GLColor(198, 158, 115, 255));
testCopy(testTarget, kColorUnAlpha, GL_RGB565, GL_UNSIGNED_SHORT_5_6_5, false, false, true,
GLColor(132, 190, 255, 255));
}
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with unsigned // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with unsigned
...@@ -583,191 +714,164 @@ TEST_P(Texture3DCopy, UnsignedByteFormats) ...@@ -583,191 +714,164 @@ TEST_P(Texture3DCopy, UnsignedByteFormats)
{ {
ANGLE_SKIP_TEST_IF(!checkExtensions()); ANGLE_SKIP_TEST_IF(!checkExtensions());
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_R8, GL_UNSIGNED_BYTE, false, false, testUnsignedByteFormats(GL_TEXTURE_3D);
false, GLColor(250, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_R8, GL_UNSIGNED_BYTE, false, true,
false, GLColor(98, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_R8, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RG8, GL_UNSIGNED_BYTE, false, false,
false, GLColor(250, 200, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RG8, GL_UNSIGNED_BYTE, false, true,
false, GLColor(98, 78, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RG8, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 255, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB8, GL_UNSIGNED_BYTE, false, false,
false, GLColor(250, 200, 150, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB8, GL_UNSIGNED_BYTE, false, true,
false, GLColor(98, 78, 59, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB8, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 255, 255, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA8, GL_UNSIGNED_BYTE, false, false,
false, GLColor(250, 200, 150, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA8, GL_UNSIGNED_BYTE, false, true,
false, GLColor(98, 78, 59, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA8, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 255, 255, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_BYTE, false, false,
false, GLColor(255, 204, 153, 102));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_BYTE, false, true,
false, GLColor(102, 85, 51, 102));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 210), GL_RGBA4, GL_UNSIGNED_BYTE, false, false,
true, GLColor(119, 187, 238, 204));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4, false,
false, false, GLColor(255, 204, 153, 102));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4, false,
true, false, GLColor(102, 85, 51, 102));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 200, 210), GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4, false,
false, true, GLColor(119, 187, 238, 204));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_SRGB8, GL_UNSIGNED_BYTE, false, false,
false, GLColor(244, 148, 78, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_SRGB8, GL_UNSIGNED_BYTE, false, true,
false, GLColor(31, 19, 11, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_SRGB8, GL_UNSIGNED_BYTE, false, false,
true, GLColor(52, 253, 53, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE, false,
false, false, GLColor(244, 148, 78, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE, false,
true, false, GLColor(31, 19, 11, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE, false,
false, true, GLColor(52, 253, 53, 100));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB5_A1, GL_UNSIGNED_BYTE, false, false,
false, GLColor(247, 198, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB5_A1, GL_UNSIGNED_BYTE, false, true,
false, GLColor(99, 82, 57, 0));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 100), GL_RGB5_A1, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 255, 255, 0));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB5_A1, GL_UNSIGNED_INT_2_10_10_10_REV,
false, false, false, GLColor(247, 198, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB5_A1, GL_UNSIGNED_INT_2_10_10_10_REV,
false, true, false, GLColor(198, 156, 115, 255));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 250, 200), GL_RGB5_A1, GL_UNSIGNED_INT_2_10_10_10_REV,
false, false, true, GLColor(132, 189, 255, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB5_A1, GL_UNSIGNED_SHORT_5_5_5_1,
false, false, false, GLColor(247, 198, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB5_A1, GL_UNSIGNED_SHORT_5_5_5_1,
false, true, false, GLColor(198, 156, 115, 255));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 250, 200), GL_RGB5_A1, GL_UNSIGNED_SHORT_5_5_5_1,
false, false, true, GLColor(132, 189, 255, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_BYTE, false, false,
false, GLColor(247, 199, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_BYTE, false, true,
false, GLColor(198, 158, 115, 255));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 250, 200), GL_RGB565, GL_UNSIGNED_BYTE, false, false,
true, GLColor(132, 190, 255, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_SHORT_5_6_5, false,
false, false, GLColor(247, 199, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_SHORT_5_6_5, false,
true, false, GLColor(198, 158, 115, 255));
testCopy(GL_TEXTURE_3D, GLColor(100, 150, 250, 200), GL_RGB565, GL_UNSIGNED_SHORT_5_6_5, false,
false, true, GLColor(132, 190, 255, 255));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with float void CopyTexture3DTest::testFloatFormats(const GLenum testTarget)
// formats.
TEST_P(Texture3DCopy, FloatFormats)
{ {
ANGLE_SKIP_TEST_IF(!checkExtensions());
std::vector<GLenum> floatTypes = {GL_FLOAT, GL_HALF_FLOAT, GL_UNSIGNED_INT_10F_11F_11F_REV, std::vector<GLenum> floatTypes = {GL_FLOAT, GL_HALF_FLOAT, GL_UNSIGNED_INT_10F_11F_11F_REV,
GL_UNSIGNED_INT_5_9_9_9_REV}; GL_UNSIGNED_INT_5_9_9_9_REV};
const GLColor kColor(210, 200, 150, 235);
for (GLenum floatType : floatTypes) for (GLenum floatType : floatTypes)
{ {
if (floatType != GL_UNSIGNED_INT_5_9_9_9_REV && if (floatType != GL_UNSIGNED_INT_5_9_9_9_REV &&
floatType != GL_UNSIGNED_INT_10F_11F_11F_REV) floatType != GL_UNSIGNED_INT_10F_11F_11F_REV)
{ {
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R16F, floatType, false, false, testCopy(testTarget, kColor, GL_R16F, floatType, false, false, false,
false, GLColor(210, 0, 0, 255)); GLColor(210, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R16F, floatType, false, true, testCopy(testTarget, kColor, GL_R16F, floatType, false, true, false,
false, GLColor(191, 0, 0, 255)); GLColor(191, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R16F, floatType, false, false, testCopy(testTarget, kColor, GL_R16F, floatType, false, false, true,
true, GLColor(227, 0, 0, 255)); GLColor(227, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RG16F, floatType, false, false, testCopy(testTarget, kColor, GL_RG16F, floatType, false, false, false,
false, GLColor(210, 200, 0, 255)); GLColor(210, 200, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RG16F, floatType, false, true, testCopy(testTarget, kColor, GL_RG16F, floatType, false, true, false,
false, GLColor(191, 184, 0, 255)); GLColor(191, 184, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RG16F, floatType, false, false, testCopy(testTarget, kColor, GL_RG16F, floatType, false, false, true,
true, GLColor(227, 217, 0, 255)); GLColor(227, 217, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB16F, floatType, false, false, testCopy(testTarget, kColor, GL_RGB16F, floatType, false, false, false,
false, GLColor(210, 200, 150, 255)); GLColor(210, 200, 150, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB16F, floatType, false, true, testCopy(testTarget, kColor, GL_RGB16F, floatType, false, true, false,
false, GLColor(191, 184, 138, 255)); GLColor(191, 184, 138, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB16F, floatType, false, false, testCopy(testTarget, kColor, GL_RGB16F, floatType, false, false, true,
true, GLColor(227, 217, 161, 255)); GLColor(227, 217, 161, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGBA16F, floatType, false, testCopy(testTarget, kColor, GL_RGBA16F, floatType, false, false, false,
false, false, GLColor(210, 200, 150, 235)); GLColor(210, 200, 150, 235));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGBA16F, floatType, false, true, testCopy(testTarget, kColor, GL_RGBA16F, floatType, false, true, false,
false, GLColor(191, 184, 138, 235)); GLColor(191, 184, 138, 235));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGBA16F, floatType, false, testCopy(testTarget, kColor, GL_RGBA16F, floatType, false, false, true,
false, true, GLColor(227, 217, 161, 235)); GLColor(227, 217, 161, 235));
} }
if (floatType != GL_UNSIGNED_INT_5_9_9_9_REV) if (floatType != GL_UNSIGNED_INT_5_9_9_9_REV)
{ {
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R11F_G11F_B10F, floatType, testCopy(testTarget, kColor, GL_R11F_G11F_B10F, floatType, false, false, false,
false, false, false, GLColor(210, 200, 148, 255)); GLColor(210, 200, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R11F_G11F_B10F, floatType, testCopy(testTarget, kColor, GL_R11F_G11F_B10F, floatType, false, true, false,
false, true, false, GLColor(191, 184, 138, 255)); GLColor(191, 184, 138, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R11F_G11F_B10F, floatType, testCopy(testTarget, kColor, GL_R11F_G11F_B10F, floatType, false, false, true,
false, false, true, GLColor(227, 217, 161, 255)); GLColor(227, 217, 161, 255));
} }
if (floatType != GL_UNSIGNED_INT_10F_11F_11F_REV) if (floatType != GL_UNSIGNED_INT_10F_11F_11F_REV)
{ {
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB9_E5, floatType, false, testCopy(testTarget, kColor, GL_RGB9_E5, floatType, false, false, false,
false, false, GLColor(210, 200, 148, 255)); GLColor(210, 200, 148, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB9_E5, floatType, false, true, testCopy(testTarget, kColor, GL_RGB9_E5, floatType, false, true, false,
false, GLColor(192, 184, 138, 255)); GLColor(192, 184, 138, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB9_E5, floatType, false, testCopy(testTarget, kColor, GL_RGB9_E5, floatType, false, false, true,
false, true, GLColor(227, 217, 161, 255)); GLColor(227, 217, 161, 255));
} }
} }
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R32F, GL_FLOAT, false, false, false, testCopy(testTarget, kColor, GL_R32F, GL_FLOAT, false, false, false, GLColor(210, 0, 0, 255));
GLColor(210, 0, 0, 255)); testCopy(testTarget, kColor, GL_R32F, GL_FLOAT, false, true, false, GLColor(191, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R32F, GL_FLOAT, false, true, false, testCopy(testTarget, kColor, GL_R32F, GL_FLOAT, false, false, true, GLColor(227, 0, 0, 255));
GLColor(191, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_R32F, GL_FLOAT, false, false, true,
GLColor(227, 0, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RG32F, GL_FLOAT, false, false, false, testCopy(testTarget, kColor, GL_RG32F, GL_FLOAT, false, false, false,
GLColor(210, 200, 0, 255)); GLColor(210, 200, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RG32F, GL_FLOAT, false, true, false, testCopy(testTarget, kColor, GL_RG32F, GL_FLOAT, false, true, false, GLColor(191, 184, 0, 255));
GLColor(191, 184, 0, 255)); testCopy(testTarget, kColor, GL_RG32F, GL_FLOAT, false, false, true, GLColor(227, 217, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RG32F, GL_FLOAT, false, false, true,
GLColor(227, 217, 0, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB32F, GL_FLOAT, false, false, false, testCopy(testTarget, kColor, GL_RGB32F, GL_FLOAT, false, false, false,
GLColor(210, 200, 150, 255)); GLColor(210, 200, 150, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB32F, GL_FLOAT, false, true, false, testCopy(testTarget, kColor, GL_RGB32F, GL_FLOAT, false, true, false,
GLColor(191, 184, 138, 255)); GLColor(191, 184, 138, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGB32F, GL_FLOAT, false, false, true, testCopy(testTarget, kColor, GL_RGB32F, GL_FLOAT, false, false, true,
GLColor(227, 217, 161, 255)); GLColor(227, 217, 161, 255));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGBA32F, GL_FLOAT, false, false, false, testCopy(testTarget, kColor, GL_RGBA32F, GL_FLOAT, false, false, false,
GLColor(210, 200, 150, 235)); GLColor(210, 200, 150, 235));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGBA32F, GL_FLOAT, false, true, false, testCopy(testTarget, kColor, GL_RGBA32F, GL_FLOAT, false, true, false,
GLColor(191, 184, 138, 235)); GLColor(191, 184, 138, 235));
testCopy(GL_TEXTURE_3D, GLColor(210, 200, 150, 235), GL_RGBA32F, GL_FLOAT, false, false, true, testCopy(testTarget, kColor, GL_RGBA32F, GL_FLOAT, false, false, true,
GLColor(227, 217, 161, 235)); GLColor(227, 217, 161, 235));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with float
// formats.
TEST_P(Texture3DCopy, FloatFormats)
{
ANGLE_SKIP_TEST_IF(!checkExtensions());
testFloatFormats(GL_TEXTURE_3D);
}
void CopyTexture3DTest::testIntFormats(const GLenum testTarget)
{
const GLColor kColor(255, 140, 150, 230);
// Pixels will be read as if the most significant bit is data, not the sign. The expected colors
// reflect this.
testCopy(testTarget, kColor, GL_R8I, GL_BYTE, false, false, false, GLColor(127, 0, 0, 1));
testCopy(testTarget, kColor, GL_R8I, GL_BYTE, false, true, false, GLColor(115, 0, 0, 1));
testCopy(testTarget, kColor, GL_R8I, GL_BYTE, false, false, true, GLColor(127, 0, 0, 1));
testCopy(testTarget, kColor, GL_R16I, GL_SHORT, false, false, false, GLColor(127, 0, 0, 1));
testCopy(testTarget, kColor, GL_R16I, GL_SHORT, false, true, false, GLColor(115, 0, 0, 1));
testCopy(testTarget, kColor, GL_R16I, GL_SHORT, false, false, true, GLColor(127, 0, 0, 1));
testCopy(testTarget, kColor, GL_R32I, GL_INT, false, false, false, GLColor(127, 0, 0, 1));
testCopy(testTarget, kColor, GL_R32I, GL_INT, false, true, false, GLColor(115, 0, 0, 1));
testCopy(testTarget, kColor, GL_R32I, GL_INT, false, false, true, GLColor(127, 0, 0, 1));
testCopy(testTarget, kColor, GL_RG8I, GL_BYTE, false, false, false, GLColor(127, 70, 0, 1));
testCopy(testTarget, kColor, GL_RG8I, GL_BYTE, false, true, false, GLColor(115, 63, 0, 1));
testCopy(testTarget, kColor, GL_RG8I, GL_BYTE, false, false, true, GLColor(127, 77, 0, 1));
testCopy(testTarget, kColor, GL_RG16I, GL_SHORT, false, false, false, GLColor(127, 70, 0, 1));
testCopy(testTarget, kColor, GL_RG16I, GL_SHORT, false, true, false, GLColor(115, 63, 0, 1));
testCopy(testTarget, kColor, GL_RG16I, GL_SHORT, false, false, true, GLColor(127, 77, 0, 1));
testCopy(testTarget, kColor, GL_RG32I, GL_INT, false, false, false, GLColor(127, 70, 0, 1));
testCopy(testTarget, kColor, GL_RG32I, GL_INT, false, true, false, GLColor(115, 63, 0, 1));
testCopy(testTarget, kColor, GL_RG32I, GL_INT, false, false, true, GLColor(127, 77, 0, 1));
testCopy(testTarget, kColor, GL_RGB8I, GL_BYTE, false, false, false, GLColor(127, 70, 75, 1));
testCopy(testTarget, kColor, GL_RGB8I, GL_BYTE, false, true, false, GLColor(115, 63, 67, 1));
testCopy(testTarget, kColor, GL_RGB8I, GL_BYTE, false, false, true, GLColor(127, 77, 83, 1));
testCopy(testTarget, kColor, GL_RGB16I, GL_SHORT, false, false, false, GLColor(127, 70, 75, 1));
testCopy(testTarget, kColor, GL_RGB16I, GL_SHORT, false, true, false, GLColor(115, 63, 67, 1));
testCopy(testTarget, kColor, GL_RGB16I, GL_SHORT, false, false, true, GLColor(127, 77, 83, 1));
testCopy(testTarget, kColor, GL_RGB32I, GL_INT, false, false, false, GLColor(127, 70, 75, 1));
testCopy(testTarget, kColor, GL_RGB32I, GL_INT, false, true, false, GLColor(115, 63, 67, 1));
testCopy(testTarget, kColor, GL_RGB32I, GL_INT, false, false, true, GLColor(127, 77, 83, 1));
testCopy(testTarget, kColor, GL_RGBA8I, GL_BYTE, false, false, false,
GLColor(127, 70, 75, 115));
testCopy(testTarget, kColor, GL_RGBA8I, GL_BYTE, false, true, false, GLColor(115, 63, 67, 115));
testCopy(testTarget, kColor, GL_RGBA8I, GL_BYTE, false, false, true, GLColor(127, 77, 83, 115));
testCopy(testTarget, kColor, GL_RGBA16I, GL_SHORT, false, false, false,
GLColor(127, 70, 75, 115));
testCopy(testTarget, kColor, GL_RGBA16I, GL_SHORT, false, true, false,
GLColor(115, 63, 67, 115));
testCopy(testTarget, kColor, GL_RGBA16I, GL_SHORT, false, false, true,
GLColor(127, 77, 83, 115));
testCopy(testTarget, kColor, GL_RGBA32I, GL_INT, false, false, false,
GLColor(127, 70, 75, 115));
testCopy(testTarget, kColor, GL_RGBA32I, GL_INT, false, true, false, GLColor(115, 63, 67, 115));
testCopy(testTarget, kColor, GL_RGBA32I, GL_INT, false, false, true, GLColor(127, 77, 83, 115));
}
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with integer // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with integer
// formats. // formats.
TEST_P(Texture3DCopy, IntFormats) TEST_P(Texture3DCopy, IntFormats)
...@@ -791,91 +895,103 @@ TEST_P(Texture3DCopy, IntFormats) ...@@ -791,91 +895,103 @@ TEST_P(Texture3DCopy, IntFormats)
glUseProgram(mProgram); glUseProgram(mProgram);
// Pixels will be read as if the most significant bit is data, not the sign. The expected colors testIntFormats(GL_TEXTURE_3D);
// reflect this. }
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R8I, GL_BYTE, false, false, false,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R8I, GL_BYTE, false, true, false,
GLColor(115, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R8I, GL_BYTE, false, false, true,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R16I, GL_SHORT, false, false, false,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R16I, GL_SHORT, false, true, false,
GLColor(115, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R16I, GL_SHORT, false, false, true,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R32I, GL_INT, false, false, false,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R32I, GL_INT, false, true, false,
GLColor(115, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_R32I, GL_INT, false, false, true,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG8I, GL_BYTE, false, false, false,
GLColor(127, 70, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG8I, GL_BYTE, false, true, false,
GLColor(115, 63, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG8I, GL_BYTE, false, false, true,
GLColor(127, 77, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG16I, GL_SHORT, false, false, false,
GLColor(127, 70, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG16I, GL_SHORT, false, true, false,
GLColor(115, 63, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG16I, GL_SHORT, false, false, true,
GLColor(127, 77, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG32I, GL_INT, false, false, false,
GLColor(127, 70, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG32I, GL_INT, false, true, false,
GLColor(115, 63, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RG32I, GL_INT, false, false, true,
GLColor(127, 77, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB8I, GL_BYTE, false, false, false,
GLColor(127, 70, 75, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB8I, GL_BYTE, false, true, false,
GLColor(115, 63, 67, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB8I, GL_BYTE, false, false, true,
GLColor(127, 77, 83, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB16I, GL_SHORT, false, false, false,
GLColor(127, 70, 75, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB16I, GL_SHORT, false, true, false,
GLColor(115, 63, 67, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB16I, GL_SHORT, false, false, true,
GLColor(127, 77, 83, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB32I, GL_INT, false, false, false,
GLColor(127, 70, 75, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB32I, GL_INT, false, true, false,
GLColor(115, 63, 67, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGB32I, GL_INT, false, false, true,
GLColor(127, 77, 83, 1));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA8I, GL_BYTE, false, false, false,
GLColor(127, 70, 75, 115));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA8I, GL_BYTE, false, true, false,
GLColor(115, 63, 67, 115));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA8I, GL_BYTE, false, false, true,
GLColor(127, 77, 83, 115));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA16I, GL_SHORT, false, false, false,
GLColor(127, 70, 75, 115));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA16I, GL_SHORT, false, true, false,
GLColor(115, 63, 67, 115));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA16I, GL_SHORT, false, false, true,
GLColor(127, 77, 83, 115));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA32I, GL_INT, false, false, false, void CopyTexture3DTest::testUintFormats(const GLenum testTarget)
GLColor(127, 70, 75, 115)); {
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA32I, GL_INT, false, true, false, const GLColor kColor(128, 84, 32, 100);
GLColor(115, 63, 67, 115));
testCopy(GL_TEXTURE_3D, GLColor(255, 140, 150, 230), GL_RGBA32I, GL_INT, false, false, true, testCopy(testTarget, kColor, GL_R8UI, GL_UNSIGNED_BYTE, false, false, false,
GLColor(127, 77, 83, 115)); GLColor(128, 0, 0, 1));
testCopy(testTarget, kColor, GL_R8UI, GL_UNSIGNED_BYTE, false, true, false,
GLColor(50, 0, 0, 1));
testCopy(testTarget, kColor, GL_R8UI, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 0, 0, 1));
testCopy(testTarget, kColor, GL_R16UI, GL_UNSIGNED_SHORT, false, false, false,
GLColor(128, 0, 0, 1));
testCopy(testTarget, kColor, GL_R16UI, GL_UNSIGNED_SHORT, false, true, false,
GLColor(50, 0, 0, 1));
testCopy(testTarget, kColor, GL_R16UI, GL_UNSIGNED_SHORT, false, false, true,
GLColor(255, 0, 0, 1));
testCopy(testTarget, kColor, GL_R32UI, GL_UNSIGNED_INT, false, false, false,
GLColor(128, 0, 0, 1));
testCopy(testTarget, kColor, GL_R32UI, GL_UNSIGNED_INT, false, true, false,
GLColor(50, 0, 0, 1));
testCopy(testTarget, kColor, GL_R32UI, GL_UNSIGNED_INT, false, false, true,
GLColor(255, 0, 0, 1));
testCopy(testTarget, kColor, GL_RG8UI, GL_UNSIGNED_BYTE, false, false, false,
GLColor(128, 84, 0, 1));
testCopy(testTarget, kColor, GL_RG8UI, GL_UNSIGNED_BYTE, false, true, false,
GLColor(50, 32, 0, 1));
testCopy(testTarget, kColor, GL_RG8UI, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 214, 0, 1));
testCopy(testTarget, kColor, GL_RG16UI, GL_UNSIGNED_SHORT, false, false, false,
GLColor(128, 84, 0, 1));
testCopy(testTarget, kColor, GL_RG16UI, GL_UNSIGNED_SHORT, false, true, false,
GLColor(50, 32, 0, 1));
testCopy(testTarget, kColor, GL_RG16UI, GL_UNSIGNED_SHORT, false, false, true,
GLColor(255, 214, 0, 1));
testCopy(testTarget, kColor, GL_RG32UI, GL_UNSIGNED_INT, false, false, false,
GLColor(128, 84, 0, 1));
testCopy(testTarget, kColor, GL_RG32UI, GL_UNSIGNED_INT, false, true, false,
GLColor(50, 32, 0, 1));
testCopy(testTarget, kColor, GL_RG32UI, GL_UNSIGNED_INT, false, false, true,
GLColor(255, 214, 0, 1));
testCopy(testTarget, kColor, GL_RGB8UI, GL_UNSIGNED_BYTE, false, false, false,
GLColor(128, 84, 32, 1));
testCopy(testTarget, kColor, GL_RGB8UI, GL_UNSIGNED_BYTE, false, true, false,
GLColor(50, 32, 12, 1));
testCopy(testTarget, kColor, GL_RGB8UI, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 214, 81, 1));
testCopy(testTarget, kColor, GL_RGB16UI, GL_UNSIGNED_SHORT, false, false, false,
GLColor(128, 84, 32, 1));
testCopy(testTarget, kColor, GL_RGB16UI, GL_UNSIGNED_SHORT, false, true, false,
GLColor(50, 32, 12, 1));
testCopy(testTarget, kColor, GL_RGB16UI, GL_UNSIGNED_SHORT, false, false, true,
GLColor(255, 214, 81, 1));
testCopy(testTarget, kColor, GL_RGB32UI, GL_UNSIGNED_INT, false, false, false,
GLColor(128, 84, 32, 1));
testCopy(testTarget, kColor, GL_RGB32UI, GL_UNSIGNED_INT, false, true, false,
GLColor(50, 32, 12, 1));
testCopy(testTarget, kColor, GL_RGB32UI, GL_UNSIGNED_INT, false, false, true,
GLColor(255, 214, 81, 1));
testCopy(testTarget, kColor, GL_RGBA8UI, GL_UNSIGNED_BYTE, false, false, false,
GLColor(128, 84, 32, 100));
testCopy(testTarget, kColor, GL_RGBA8UI, GL_UNSIGNED_BYTE, false, true, false,
GLColor(50, 32, 12, 100));
testCopy(testTarget, kColor, GL_RGBA8UI, GL_UNSIGNED_BYTE, false, false, true,
GLColor(255, 214, 81, 100));
testCopy(testTarget, kColor, GL_RGBA16UI, GL_UNSIGNED_SHORT, false, false, false,
GLColor(128, 84, 32, 100));
testCopy(testTarget, kColor, GL_RGBA16UI, GL_UNSIGNED_SHORT, false, true, false,
GLColor(50, 32, 12, 100));
testCopy(testTarget, kColor, GL_RGBA16UI, GL_UNSIGNED_SHORT, false, false, true,
GLColor(255, 214, 81, 100));
testCopy(testTarget, kColor, GL_RGBA32UI, GL_UNSIGNED_INT, false, false, false,
GLColor(128, 84, 32, 100));
testCopy(testTarget, kColor, GL_RGBA32UI, GL_UNSIGNED_INT, false, true, false,
GLColor(50, 32, 12, 100));
testCopy(testTarget, kColor, GL_RGBA32UI, GL_UNSIGNED_INT, false, false, true,
GLColor(255, 214, 81, 100));
testCopy(testTarget, kColor, GL_RGB10_A2UI, GL_UNSIGNED_INT_2_10_10_10_REV, false, false, false,
GLColor(128, 84, 32, 3));
testCopy(testTarget, kColor, GL_RGB10_A2UI, GL_UNSIGNED_INT_2_10_10_10_REV, false, true, false,
GLColor(50, 32, 12, 3));
testCopy(testTarget, kColor, GL_RGB10_A2UI, GL_UNSIGNED_INT_2_10_10_10_REV, false, false, true,
GLColor(255, 214, 81, 3));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with unsigned // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_3D with unsigned
...@@ -901,96 +1017,7 @@ TEST_P(Texture3DCopy, UintFormats) ...@@ -901,96 +1017,7 @@ TEST_P(Texture3DCopy, UintFormats)
glUseProgram(mProgram); glUseProgram(mProgram);
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R8UI, GL_UNSIGNED_BYTE, false, false, testUintFormats(GL_TEXTURE_3D);
false, GLColor(128, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R8UI, GL_UNSIGNED_BYTE, false, true,
false, GLColor(50, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R8UI, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R16UI, GL_UNSIGNED_SHORT, false, false,
false, GLColor(128, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R16UI, GL_UNSIGNED_SHORT, false, true,
false, GLColor(50, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R16UI, GL_UNSIGNED_SHORT, false, false,
true, GLColor(255, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R32UI, GL_UNSIGNED_INT, false, false,
false, GLColor(128, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R32UI, GL_UNSIGNED_INT, false, true,
false, GLColor(50, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_R32UI, GL_UNSIGNED_INT, false, false,
true, GLColor(255, 0, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG8UI, GL_UNSIGNED_BYTE, false, false,
false, GLColor(128, 84, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG8UI, GL_UNSIGNED_BYTE, false, true,
false, GLColor(50, 32, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG8UI, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 214, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG16UI, GL_UNSIGNED_SHORT, false, false,
false, GLColor(128, 84, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG16UI, GL_UNSIGNED_SHORT, false, true,
false, GLColor(50, 32, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG16UI, GL_UNSIGNED_SHORT, false, false,
true, GLColor(255, 214, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG32UI, GL_UNSIGNED_INT, false, false,
false, GLColor(128, 84, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG32UI, GL_UNSIGNED_INT, false, true,
false, GLColor(50, 32, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RG32UI, GL_UNSIGNED_INT, false, false,
true, GLColor(255, 214, 0, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB8UI, GL_UNSIGNED_BYTE, false, false,
false, GLColor(128, 84, 32, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB8UI, GL_UNSIGNED_BYTE, false, true,
false, GLColor(50, 32, 12, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB8UI, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 214, 81, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB16UI, GL_UNSIGNED_SHORT, false, false,
false, GLColor(128, 84, 32, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB16UI, GL_UNSIGNED_SHORT, false, true,
false, GLColor(50, 32, 12, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB16UI, GL_UNSIGNED_SHORT, false, false,
true, GLColor(255, 214, 81, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB32UI, GL_UNSIGNED_INT, false, false,
false, GLColor(128, 84, 32, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB32UI, GL_UNSIGNED_INT, false, true,
false, GLColor(50, 32, 12, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB32UI, GL_UNSIGNED_INT, false, false,
true, GLColor(255, 214, 81, 1));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA8UI, GL_UNSIGNED_BYTE, false, false,
false, GLColor(128, 84, 32, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA8UI, GL_UNSIGNED_BYTE, false, true,
false, GLColor(50, 32, 12, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA8UI, GL_UNSIGNED_BYTE, false, false,
true, GLColor(255, 214, 81, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA16UI, GL_UNSIGNED_SHORT, false, false,
false, GLColor(128, 84, 32, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA16UI, GL_UNSIGNED_SHORT, false, true,
false, GLColor(50, 32, 12, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA16UI, GL_UNSIGNED_SHORT, false, false,
true, GLColor(255, 214, 81, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA32UI, GL_UNSIGNED_INT, false, false,
false, GLColor(128, 84, 32, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA32UI, GL_UNSIGNED_INT, false, true,
false, GLColor(50, 32, 12, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGBA32UI, GL_UNSIGNED_INT, false, false,
true, GLColor(255, 214, 81, 100));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB10_A2UI,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, false, GLColor(128, 84, 32, 3));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB10_A2UI,
GL_UNSIGNED_INT_2_10_10_10_REV, false, true, false, GLColor(50, 32, 12, 3));
testCopy(GL_TEXTURE_3D, GLColor(128, 84, 32, 100), GL_RGB10_A2UI,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, true, GLColor(255, 214, 81, 3));
} }
// Test that glCopySubTexture3DANGLE correctly copies to and from a GL_TEXTURE_2D_ARRAY texture. // Test that glCopySubTexture3DANGLE correctly copies to and from a GL_TEXTURE_2D_ARRAY texture.
...@@ -1206,61 +1233,7 @@ TEST_P(Texture2DArrayCopy, UnsizedFormats) ...@@ -1206,61 +1233,7 @@ TEST_P(Texture2DArrayCopy, UnsizedFormats)
{ {
ANGLE_SKIP_TEST_IF(!checkExtensions()); ANGLE_SKIP_TEST_IF(!checkExtensions());
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_BYTE, false, testUnsizedFormats(GL_TEXTURE_2D_ARRAY);
false, false, GLColor(250, 200, 150, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_BYTE, false,
true, false, GLColor(98, 78, 59, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 200), GL_RGB, GL_UNSIGNED_BYTE, false,
false, true, GLColor(128, 191, 255, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
false, false, false, GLColor(247, 199, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
false, true, false, GLColor(99, 77, 57, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 200), GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
false, false, true, GLColor(132, 190, 255, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_BYTE, false,
false, false, GLColor(250, 200, 150, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_BYTE, false,
true, false, GLColor(98, 78, 59, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 200), GL_RGBA, GL_UNSIGNED_BYTE, false,
false, true, GLColor(128, 191, 255, 200));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4,
false, false, false, GLColor(255, 204, 153, 102));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4,
false, true, false, GLColor(102, 85, 51, 102));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 200), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4,
false, false, true, GLColor(136, 187, 255, 204));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1,
false, false, false, GLColor(247, 198, 148, 0));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1,
false, true, false, GLColor(99, 82, 57, 0));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 200), GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1,
false, false, true, GLColor(132, 189, 255, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_LUMINANCE, GL_UNSIGNED_BYTE,
false, false, false, GLColor(250, 250, 250, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_LUMINANCE, GL_UNSIGNED_BYTE,
false, true, false, GLColor(98, 98, 98, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 200), GL_LUMINANCE, GL_UNSIGNED_BYTE,
false, false, true, GLColor(128, 128, 128, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE,
false, false, false, GLColor(250, 250, 250, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE,
false, true, false, GLColor(98, 98, 98, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 200), GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE,
false, false, true, GLColor(128, 128, 128, 200));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_ALPHA, GL_UNSIGNED_BYTE, false,
false, false, GLColor(0, 0, 0, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_ALPHA, GL_UNSIGNED_BYTE, false,
false, false, GLColor(0, 0, 0, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_ALPHA, GL_UNSIGNED_BYTE, false,
false, false, GLColor(0, 0, 0, 100));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with
...@@ -1269,40 +1242,7 @@ TEST_P(Texture2DArrayCopy, SnormFormats) ...@@ -1269,40 +1242,7 @@ TEST_P(Texture2DArrayCopy, SnormFormats)
{ {
ANGLE_SKIP_TEST_IF(!checkExtensions()); ANGLE_SKIP_TEST_IF(!checkExtensions());
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_R8_SNORM, GL_BYTE, false, false, testSnormFormats(GL_TEXTURE_2D_ARRAY);
false, GLColor(251, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_R8_SNORM, GL_BYTE, false, true,
false, GLColor(187, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(200, 150, 100, 230), GL_R8_SNORM, GL_BYTE, false, false,
true, GLColor(221, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_RG8_SNORM, GL_BYTE, false, false,
false, GLColor(251, 201, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_RG8_SNORM, GL_BYTE, false, true,
false, GLColor(187, 149, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(200, 150, 100, 230), GL_RG8_SNORM, GL_BYTE, false, false,
true, GLColor(221, 167, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_RGB8_SNORM, GL_BYTE, false, false,
false, GLColor(251, 201, 151, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_RGB8_SNORM, GL_BYTE, false, true,
false, GLColor(187, 149, 112, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(200, 150, 100, 230), GL_RGB8_SNORM, GL_BYTE, false, false,
true, GLColor(221, 167, 110, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_RGBA8_SNORM, GL_BYTE, false,
false, false, GLColor(251, 201, 151, 191));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 190), GL_RGBA8_SNORM, GL_BYTE, false, true,
false, GLColor(187, 149, 112, 191));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(200, 150, 100, 230), GL_RGBA8_SNORM, GL_BYTE, false,
false, true, GLColor(221, 167, 110, 231));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB10_A2,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, false, GLColor(250, 200, 150, 85));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB10_A2,
GL_UNSIGNED_INT_2_10_10_10_REV, false, true, false, GLColor(196, 157, 118, 170));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 250, 200), GL_RGB10_A2,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, true, GLColor(128, 191, 255, 170));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with
...@@ -1314,98 +1254,7 @@ TEST_P(Texture2DArrayCopy, UnsignedByteFormats) ...@@ -1314,98 +1254,7 @@ TEST_P(Texture2DArrayCopy, UnsignedByteFormats)
// Flay on Windows D3D11. http://anglebug.com/2896 // Flay on Windows D3D11. http://anglebug.com/2896
ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D11()); ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D11());
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_R8, GL_UNSIGNED_BYTE, false, testUnsignedByteFormats(GL_TEXTURE_2D_ARRAY);
false, false, GLColor(250, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_R8, GL_UNSIGNED_BYTE, false, true,
false, GLColor(98, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_R8, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RG8, GL_UNSIGNED_BYTE, false,
false, false, GLColor(250, 200, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RG8, GL_UNSIGNED_BYTE, false,
true, false, GLColor(98, 78, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RG8, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 255, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB8, GL_UNSIGNED_BYTE, false,
false, false, GLColor(250, 200, 150, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB8, GL_UNSIGNED_BYTE, false,
true, false, GLColor(98, 78, 59, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB8, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 255, 255, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA8, GL_UNSIGNED_BYTE, false,
false, false, GLColor(250, 200, 150, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA8, GL_UNSIGNED_BYTE, false,
true, false, GLColor(98, 78, 59, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA8, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 255, 255, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_BYTE, false,
false, false, GLColor(255, 204, 153, 102));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_BYTE, false,
true, false, GLColor(102, 85, 51, 102));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 210), GL_RGBA4, GL_UNSIGNED_BYTE, false,
false, true, GLColor(119, 187, 238, 204));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4,
false, false, false, GLColor(255, 204, 153, 102));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4,
false, true, false, GLColor(102, 85, 51, 102));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 200, 210), GL_RGBA4, GL_UNSIGNED_SHORT_4_4_4_4,
false, false, true, GLColor(119, 187, 238, 204));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB5_A1, GL_UNSIGNED_BYTE, false,
false, false, GLColor(247, 198, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB5_A1, GL_UNSIGNED_BYTE, false,
true, false, GLColor(99, 82, 57, 0));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_RGB5_A1, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 255, 255, 0));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB5_A1,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, false, GLColor(247, 198, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB5_A1,
GL_UNSIGNED_INT_2_10_10_10_REV, false, true, false, GLColor(198, 156, 115, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 250, 200), GL_RGB5_A1,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, true, GLColor(132, 189, 255, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB5_A1,
GL_UNSIGNED_SHORT_5_5_5_1, false, false, false, GLColor(247, 198, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB5_A1,
GL_UNSIGNED_SHORT_5_5_5_1, false, true, false, GLColor(198, 156, 115, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 250, 200), GL_RGB5_A1,
GL_UNSIGNED_SHORT_5_5_5_1, false, false, true, GLColor(132, 189, 255, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_BYTE, false,
false, false, GLColor(247, 199, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_BYTE, false,
true, false, GLColor(198, 158, 115, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 250, 200), GL_RGB565, GL_UNSIGNED_BYTE, false,
false, true, GLColor(132, 190, 255, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_SHORT_5_6_5,
false, false, false, GLColor(247, 199, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 200), GL_RGB565, GL_UNSIGNED_SHORT_5_6_5,
false, true, false, GLColor(198, 158, 115, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(100, 150, 250, 200), GL_RGB565, GL_UNSIGNED_SHORT_5_6_5,
false, false, true, GLColor(132, 190, 255, 255));
ANGLE_SKIP_TEST_IF(IsAMD() && IsWindows() && IsD3D11());
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_SRGB8, GL_UNSIGNED_BYTE, false,
false, false, GLColor(244, 148, 78, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_SRGB8, GL_UNSIGNED_BYTE, false,
true, false, GLColor(31, 19, 11, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_SRGB8, GL_UNSIGNED_BYTE, false,
false, true, GLColor(52, 253, 53, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE,
false, false, false, GLColor(244, 148, 78, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE,
false, true, false, GLColor(31, 19, 11, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(250, 200, 150, 100), GL_SRGB8_ALPHA8, GL_UNSIGNED_BYTE,
false, false, true, GLColor(52, 253, 53, 100));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with
...@@ -1414,91 +1263,7 @@ TEST_P(Texture2DArrayCopy, FloatFormats) ...@@ -1414,91 +1263,7 @@ TEST_P(Texture2DArrayCopy, FloatFormats)
{ {
ANGLE_SKIP_TEST_IF(!checkExtensions()); ANGLE_SKIP_TEST_IF(!checkExtensions());
std::vector<GLenum> floatTypes = {GL_FLOAT, GL_HALF_FLOAT, GL_UNSIGNED_INT_10F_11F_11F_REV, testFloatFormats(GL_TEXTURE_2D_ARRAY);
GL_UNSIGNED_INT_5_9_9_9_REV};
for (GLenum floatType : floatTypes)
{
if (floatType != GL_UNSIGNED_INT_5_9_9_9_REV &&
floatType != GL_UNSIGNED_INT_10F_11F_11F_REV)
{
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R16F, floatType, false,
false, false, GLColor(210, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R16F, floatType, false,
true, false, GLColor(191, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R16F, floatType, false,
false, true, GLColor(227, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RG16F, floatType, false,
false, false, GLColor(210, 200, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RG16F, floatType, false,
true, false, GLColor(191, 184, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RG16F, floatType, false,
false, true, GLColor(227, 217, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB16F, floatType, false,
false, false, GLColor(210, 200, 150, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB16F, floatType, false,
true, false, GLColor(191, 184, 138, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB16F, floatType, false,
false, true, GLColor(227, 217, 161, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGBA16F, floatType, false,
false, false, GLColor(210, 200, 150, 235));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGBA16F, floatType, false,
true, false, GLColor(191, 184, 138, 235));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGBA16F, floatType, false,
false, true, GLColor(227, 217, 161, 235));
}
if (floatType != GL_UNSIGNED_INT_5_9_9_9_REV)
{
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R11F_G11F_B10F, floatType,
false, false, false, GLColor(210, 200, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R11F_G11F_B10F, floatType,
false, true, false, GLColor(191, 184, 138, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R11F_G11F_B10F, floatType,
false, false, true, GLColor(227, 217, 161, 255));
}
if (floatType != GL_UNSIGNED_INT_10F_11F_11F_REV)
{
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB9_E5, floatType, false,
false, false, GLColor(210, 200, 148, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB9_E5, floatType, false,
true, false, GLColor(192, 184, 138, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB9_E5, floatType, false,
false, true, GLColor(227, 217, 161, 255));
}
}
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R32F, GL_FLOAT, false, false,
false, GLColor(210, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R32F, GL_FLOAT, false, true,
false, GLColor(191, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_R32F, GL_FLOAT, false, false,
true, GLColor(227, 0, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RG32F, GL_FLOAT, false, false,
false, GLColor(210, 200, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RG32F, GL_FLOAT, false, true,
false, GLColor(191, 184, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RG32F, GL_FLOAT, false, false,
true, GLColor(227, 217, 0, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB32F, GL_FLOAT, false, false,
false, GLColor(210, 200, 150, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB32F, GL_FLOAT, false, true,
false, GLColor(191, 184, 138, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGB32F, GL_FLOAT, false, false,
true, GLColor(227, 217, 161, 255));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGBA32F, GL_FLOAT, false, false,
false, GLColor(210, 200, 150, 235));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGBA32F, GL_FLOAT, false, true,
false, GLColor(191, 184, 138, 235));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(210, 200, 150, 235), GL_RGBA32F, GL_FLOAT, false, false,
true, GLColor(227, 217, 161, 235));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with
...@@ -1524,91 +1289,7 @@ TEST_P(Texture2DArrayCopy, IntFormats) ...@@ -1524,91 +1289,7 @@ TEST_P(Texture2DArrayCopy, IntFormats)
glUseProgram(mProgram); glUseProgram(mProgram);
// Pixels will be read as if the most significant bit is data, not the sign. The expected colors testIntFormats(GL_TEXTURE_2D_ARRAY);
// reflect this.
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R8I, GL_BYTE, false, false, false,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R8I, GL_BYTE, false, true, false,
GLColor(115, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R8I, GL_BYTE, false, false, true,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R16I, GL_SHORT, false, false,
false, GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R16I, GL_SHORT, false, true,
false, GLColor(115, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R16I, GL_SHORT, false, false,
true, GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R32I, GL_INT, false, false, false,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R32I, GL_INT, false, true, false,
GLColor(115, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_R32I, GL_INT, false, false, true,
GLColor(127, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG8I, GL_BYTE, false, false,
false, GLColor(127, 70, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG8I, GL_BYTE, false, true, false,
GLColor(115, 63, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG8I, GL_BYTE, false, false, true,
GLColor(127, 77, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG16I, GL_SHORT, false, false,
false, GLColor(127, 70, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG16I, GL_SHORT, false, true,
false, GLColor(115, 63, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG16I, GL_SHORT, false, false,
true, GLColor(127, 77, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG32I, GL_INT, false, false,
false, GLColor(127, 70, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG32I, GL_INT, false, true, false,
GLColor(115, 63, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RG32I, GL_INT, false, false, true,
GLColor(127, 77, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB8I, GL_BYTE, false, false,
false, GLColor(127, 70, 75, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB8I, GL_BYTE, false, true,
false, GLColor(115, 63, 67, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB8I, GL_BYTE, false, false,
true, GLColor(127, 77, 83, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB16I, GL_SHORT, false, false,
false, GLColor(127, 70, 75, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB16I, GL_SHORT, false, true,
false, GLColor(115, 63, 67, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB16I, GL_SHORT, false, false,
true, GLColor(127, 77, 83, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB32I, GL_INT, false, false,
false, GLColor(127, 70, 75, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB32I, GL_INT, false, true,
false, GLColor(115, 63, 67, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGB32I, GL_INT, false, false,
true, GLColor(127, 77, 83, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA8I, GL_BYTE, false, false,
false, GLColor(127, 70, 75, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA8I, GL_BYTE, false, true,
false, GLColor(115, 63, 67, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA8I, GL_BYTE, false, false,
true, GLColor(127, 77, 83, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA16I, GL_SHORT, false, false,
false, GLColor(127, 70, 75, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA16I, GL_SHORT, false, true,
false, GLColor(115, 63, 67, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA16I, GL_SHORT, false, false,
true, GLColor(127, 77, 83, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA32I, GL_INT, false, false,
false, GLColor(127, 70, 75, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA32I, GL_INT, false, true,
false, GLColor(115, 63, 67, 115));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(255, 140, 150, 230), GL_RGBA32I, GL_INT, false, false,
true, GLColor(127, 77, 83, 115));
} }
// Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with // Test passthrough, premultiply alpha, and unmultiply alpha copies for GL_TEXTURE_2D_ARRAY with
...@@ -1634,96 +1315,7 @@ TEST_P(Texture2DArrayCopy, UintFormats) ...@@ -1634,96 +1315,7 @@ TEST_P(Texture2DArrayCopy, UintFormats)
glUseProgram(mProgram); glUseProgram(mProgram);
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R8UI, GL_UNSIGNED_BYTE, false, testUintFormats(GL_TEXTURE_2D_ARRAY);
false, false, GLColor(128, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R8UI, GL_UNSIGNED_BYTE, false, true,
false, GLColor(50, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R8UI, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R16UI, GL_UNSIGNED_SHORT, false,
false, false, GLColor(128, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R16UI, GL_UNSIGNED_SHORT, false,
true, false, GLColor(50, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R16UI, GL_UNSIGNED_SHORT, false,
false, true, GLColor(255, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R32UI, GL_UNSIGNED_INT, false,
false, false, GLColor(128, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R32UI, GL_UNSIGNED_INT, false, true,
false, GLColor(50, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_R32UI, GL_UNSIGNED_INT, false,
false, true, GLColor(255, 0, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG8UI, GL_UNSIGNED_BYTE, false,
false, false, GLColor(128, 84, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG8UI, GL_UNSIGNED_BYTE, false,
true, false, GLColor(50, 32, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG8UI, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 214, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG16UI, GL_UNSIGNED_SHORT, false,
false, false, GLColor(128, 84, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG16UI, GL_UNSIGNED_SHORT, false,
true, false, GLColor(50, 32, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG16UI, GL_UNSIGNED_SHORT, false,
false, true, GLColor(255, 214, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG32UI, GL_UNSIGNED_INT, false,
false, false, GLColor(128, 84, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG32UI, GL_UNSIGNED_INT, false,
true, false, GLColor(50, 32, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RG32UI, GL_UNSIGNED_INT, false,
false, true, GLColor(255, 214, 0, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB8UI, GL_UNSIGNED_BYTE, false,
false, false, GLColor(128, 84, 32, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB8UI, GL_UNSIGNED_BYTE, false,
true, false, GLColor(50, 32, 12, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB8UI, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 214, 81, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB16UI, GL_UNSIGNED_SHORT, false,
false, false, GLColor(128, 84, 32, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB16UI, GL_UNSIGNED_SHORT, false,
true, false, GLColor(50, 32, 12, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB16UI, GL_UNSIGNED_SHORT, false,
false, true, GLColor(255, 214, 81, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB32UI, GL_UNSIGNED_INT, false,
false, false, GLColor(128, 84, 32, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB32UI, GL_UNSIGNED_INT, false,
true, false, GLColor(50, 32, 12, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB32UI, GL_UNSIGNED_INT, false,
false, true, GLColor(255, 214, 81, 1));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA8UI, GL_UNSIGNED_BYTE, false,
false, false, GLColor(128, 84, 32, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA8UI, GL_UNSIGNED_BYTE, false,
true, false, GLColor(50, 32, 12, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA8UI, GL_UNSIGNED_BYTE, false,
false, true, GLColor(255, 214, 81, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA16UI, GL_UNSIGNED_SHORT, false,
false, false, GLColor(128, 84, 32, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA16UI, GL_UNSIGNED_SHORT, false,
true, false, GLColor(50, 32, 12, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA16UI, GL_UNSIGNED_SHORT, false,
false, true, GLColor(255, 214, 81, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA32UI, GL_UNSIGNED_INT, false,
false, false, GLColor(128, 84, 32, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA32UI, GL_UNSIGNED_INT, false,
true, false, GLColor(50, 32, 12, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGBA32UI, GL_UNSIGNED_INT, false,
false, true, GLColor(255, 214, 81, 100));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB10_A2UI,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, false, GLColor(128, 84, 32, 3));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB10_A2UI,
GL_UNSIGNED_INT_2_10_10_10_REV, false, true, false, GLColor(50, 32, 12, 3));
testCopy(GL_TEXTURE_2D_ARRAY, GLColor(128, 84, 32, 100), GL_RGB10_A2UI,
GL_UNSIGNED_INT_2_10_10_10_REV, false, false, true, GLColor(255, 214, 81, 3));
} }
ANGLE_INSTANTIATE_TEST_ES3(Texture3DCopy); ANGLE_INSTANTIATE_TEST_ES3(Texture3DCopy);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment