12c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang#include "ANGLETest.h" 22c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 32c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang#include <vector> 42c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 52c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Langclass SwizzleTest : public ANGLETest 62c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 72c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Langprotected: 82c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang SwizzleTest() 92c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 102c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang setWindowWidth(128); 112c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang setWindowHeight(128); 122c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang setConfigRedBits(8); 132c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang setConfigGreenBits(8); 142c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang setConfigBlueBits(8); 152c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang setConfigAlphaBits(8); 162c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang setClientVersion(3); 172c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 182c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLenum swizzles[] = 192c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 202c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GL_RED, 212c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GL_GREEN, 222c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GL_BLUE, 232c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GL_ALPHA, 242c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GL_ZERO, 252c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GL_ONE, 262c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang }; 272c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 282c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang for (int r = 0; r < 6; r++) 292c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 302c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang for (int g = 0; g < 6; g++) 312c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 322c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang for (int b = 0; b < 6; b++) 332c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 342c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang for (int a = 0; a < 6; a++) 352c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 362c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang swizzlePermutation permutation; 372c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang permutation.swizzleRed = swizzles[r]; 382c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang permutation.swizzleGreen = swizzles[g]; 392c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang permutation.swizzleBlue = swizzles[b]; 402c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang permutation.swizzleAlpha = swizzles[a]; 412c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang mPermutations.push_back(permutation); 422c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 432c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 442c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 452c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 462c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 472c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 482c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang virtual void SetUp() 492c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 502c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang ANGLETest::SetUp(); 512c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 522c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang const std::string vertexShaderSource = SHADER_SOURCE 532c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang ( 542c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang precision highp float; 552c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang attribute vec4 position; 562c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang varying vec2 texcoord; 572c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 582c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang void main() 592c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 602c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang gl_Position = position; 612c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang texcoord = (position.xy * 0.5) + 0.5; 622c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 632c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang ); 642c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 652c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang const std::string fragmentShaderSource = SHADER_SOURCE 662c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang ( 672c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang precision highp float; 682c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang uniform sampler2D tex; 692c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang varying vec2 texcoord; 702c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 712c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang void main() 722c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 732c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang gl_FragColor = texture2D(tex, texcoord); 742c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 752c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang ); 762c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 775599c8f6ffa7239c40069288461e015f9e545ff4Jamie Madill mProgram = CompileProgram(vertexShaderSource, fragmentShaderSource); 782c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang if (mProgram == 0) 792c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 802c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang FAIL() << "shader compilation failed."; 812c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 822c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 832c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang mTextureUniformLocation = glGetUniformLocation(mProgram, "tex"); 842c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 852c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 862c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 872c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 882c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang virtual void TearDown() 892c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 902c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glDeleteProgram(mProgram); 912c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glDeleteTextures(1, &mTexture); 922c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 932c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang ANGLETest::TearDown(); 942c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 952c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 962c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang template <typename T> 972c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang void init2DTexture(GLenum internalFormat, GLenum dataFormat, GLenum dataType, const T* data) 982c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 992c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glGenTextures(1, &mTexture); 1002c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glBindTexture(GL_TEXTURE_2D, mTexture); 1012c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexStorage2D(GL_TEXTURE_2D, 1, internalFormat, 1, 1); 1022c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, dataFormat, dataType, data); 1032c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1042c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 1052c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 1062c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 1072c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1082c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang void init2DCompressedTexture(GLenum internalFormat, GLsizei width, GLsizei height, GLsizei dataSize, const GLubyte* data) 1092c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 1102c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glGenTextures(1, &mTexture); 1112c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glBindTexture(GL_TEXTURE_2D, mTexture); 1122c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, width, height, 0, dataSize, data); 1132c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1142c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 1152c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 1162c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 1172c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1182c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLubyte getExpectedValue(GLenum swizzle, GLubyte unswizzled[4]) 1192c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 1202c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang switch (swizzle) 1212c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 1222c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang case GL_RED: return unswizzled[0]; 1232c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang case GL_GREEN: return unswizzled[1]; 1242c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang case GL_BLUE: return unswizzled[2]; 1252c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang case GL_ALPHA: return unswizzled[3]; 1262c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang case GL_ZERO: return 0; 1272c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang case GL_ONE: return 255; 1282c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang default: return 0; 1292c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 1302c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 1312c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1322c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang void runTest2D() 1332c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 1342c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glUseProgram(mProgram); 1352c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glBindTexture(GL_TEXTURE_2D, mTexture); 1362c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glUniform1i(mTextureUniformLocation, 0); 1372c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1382c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_RED); 1392c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_GREEN); 1402c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_BLUE); 1412c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ALPHA); 1422c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1432c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glClear(GL_COLOR_BUFFER_BIT); 1442c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang drawQuad(mProgram, "position", 0.5f); 1452c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1462c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLubyte unswizzled[4]; 1472c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &unswizzled); 1482c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1492c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang for (size_t i = 0; i < mPermutations.size(); i++) 1502c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 1512c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang const swizzlePermutation& permutation = mPermutations[i]; 1522c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1532c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, permutation.swizzleRed); 1542c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, permutation.swizzleGreen); 1552c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, permutation.swizzleBlue); 1562c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, permutation.swizzleAlpha); 1572c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1582c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang glClear(GL_COLOR_BUFFER_BIT); 1592c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang drawQuad(mProgram, "position", 0.5f); 1602c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1612c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang EXPECT_PIXEL_EQ(0, 0, 1622c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang getExpectedValue(permutation.swizzleRed, unswizzled), 1632c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang getExpectedValue(permutation.swizzleGreen, unswizzled), 1642c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang getExpectedValue(permutation.swizzleBlue, unswizzled), 1652c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang getExpectedValue(permutation.swizzleAlpha, unswizzled)); 1662c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 1672c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang } 1682c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1692c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLuint mProgram; 1702c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLint mTextureUniformLocation; 1712c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1722c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLuint mTexture; 1732c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 1742c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang struct swizzlePermutation 1752c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang { 1762c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLenum swizzleRed; 1772c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLenum swizzleGreen; 1782c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLenum swizzleBlue; 1792c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLenum swizzleAlpha; 1802c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang }; 1812c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang std::vector<swizzlePermutation> mPermutations; 1822c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang}; 1832c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 184b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, RGBA8_2D) 1852c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 1862c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLubyte data[] = { 1, 64, 128, 200 }; 1872c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, data); 1882c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 1892c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 1902c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 191b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, RGB8_2D) 1922c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 1932c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLubyte data[] = { 77, 66, 55 }; 1942c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE, data); 1952c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 1962c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 1972c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 198b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, RG8_2D) 1992c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2002c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLubyte data[] = { 11, 99 }; 2012c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_RG8, GL_RG, GL_UNSIGNED_BYTE, data); 2022c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2032c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2042c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 205b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, R8_2D) 2062c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2072c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLubyte data[] = { 2 }; 2082c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture<GLubyte>(GL_R8, GL_RED, GL_UNSIGNED_BYTE, data); 2092c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2102c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2112c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 212b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, RGBA32F_2D) 2132c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2142c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLfloat data[] = { 0.25f, 0.5f, 0.75f, 0.8f }; 2152c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_RGBA32F, GL_RGBA, GL_FLOAT, data); 2162c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2172c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2182c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 219b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, RGB32F_2D) 2202c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2212c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLfloat data[] = { 0.1f, 0.2f, 0.3f }; 2222c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_RGB32F, GL_RGB, GL_FLOAT, data); 2232c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2242c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2252c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 226b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, RG32F_2D) 2272c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2282c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLfloat data[] = { 0.9f, 0.1f }; 2292c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_RG32F, GL_RG, GL_FLOAT, data); 2302c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2312c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2322c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 233b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, R32F_2D) 2342c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2352c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLfloat data[] = { 0.5f }; 2362c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_R32F, GL_RED, GL_FLOAT, data); 2372c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2382c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2392c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 240b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, D32F_2D) 2412c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2422c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLfloat data[] = { 0.5f }; 2432c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, data); 2442c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2452c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2462c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 247b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, D16_2D) 2482c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2492c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLushort data[] = { 0xFF }; 2502c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, data); 2512c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2522c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2532c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 254b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, D24_2D) 2552c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2562c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang GLuint data[] = { 0xFFFF }; 2572c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DTexture(GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, data); 2582c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2592c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 2602c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 2612c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang#include "media/pixel.inl" 2622c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang 263b759a748730b4a0b169ebb588046feb63dc164b5Jamie MadillTEST_F(SwizzleTest, CompressedDXT_2D) 2642c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang{ 2652c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang init2DCompressedTexture(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_width, pixel_0_height, pixel_0_size, pixel_0_data); 2662c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang runTest2D(); 2672c254d8f0edea485e16433f7ee84859129d6c3c8Geoff Lang} 268