Clear the swizzle cache in TextureStorage11::setData.
BUG=angleproject:1494
Change-Id: I67471e4b961b3d8374c2da84394ead743939c225
Reviewed-on: https://chromium-review.googlesource.com/380095
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/tests/gl_tests/SwizzleTest.cpp b/src/tests/gl_tests/SwizzleTest.cpp
index 946dae0..b1ad131 100644
--- a/src/tests/gl_tests/SwizzleTest.cpp
+++ b/src/tests/gl_tests/SwizzleTest.cpp
@@ -399,6 +399,37 @@
runTest2D();
}
+// Test that updating the texture data still generates the correct swizzles
+TEST_P(SwizzleTest, SubUpdate)
+{
+ GLColor data(1, 64, 128, 200);
+ init2DTexture(GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, &data);
+
+ glUseProgram(mProgram);
+ glBindTexture(GL_TEXTURE_2D, mTexture);
+ glUniform1i(mTextureUniformLocation, 0);
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_RED);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_RED);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_RED);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+ drawQuad(mProgram, "position", 0.5f);
+
+ GLColor expectedData(data.R, data.R, data.R, data.R);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, expectedData);
+
+ GLColor updateData(32, 234, 28, 232);
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &updateData);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+ drawQuad(mProgram, "position", 0.5f);
+
+ GLColor expectedUpdateData(updateData.R, updateData.R, updateData.R, updateData.R);
+ EXPECT_PIXEL_COLOR_EQ(0, 0, expectedUpdateData);
+}
+
// Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
ANGLE_INSTANTIATE_TEST(SwizzleTest, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGL(3, 3), ES3_OPENGLES());
ANGLE_INSTANTIATE_TEST(SwizzleIntegerTest,