Commit a1c917f2 by Olli Etuaho Committed by Commit Bot

Suppress samplers in structs test failures on Intel OpenGL

Some of the tests made to verify D3D implementation of samplers in structs are failing on Intel's OpenGL drivers, so suppress the failures. Since the test was crashing in shader program setup, shader program setup needs to be moved out of the SetUp() function of the texture tests. BUG=600758 TEST=angle_end2end_tests Change-Id: I1b6e788d900425e914572d2a3d7ef1fc43146f50 Reviewed-on: https://chromium-review.googlesource.com/337500Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
parent d4102f09
...@@ -55,15 +55,19 @@ class TexCoordDrawTest : public ANGLETest ...@@ -55,15 +55,19 @@ class TexCoordDrawTest : public ANGLETest
virtual std::string getFragmentShaderSource() = 0; virtual std::string getFragmentShaderSource() = 0;
void SetUp() override virtual void setUpProgram()
{ {
ANGLETest::SetUp();
const std::string vertexShaderSource = getVertexShaderSource(); const std::string vertexShaderSource = getVertexShaderSource();
const std::string fragmentShaderSource = getFragmentShaderSource(); const std::string fragmentShaderSource = getFragmentShaderSource();
mProgram = CompileProgram(vertexShaderSource, fragmentShaderSource); mProgram = CompileProgram(vertexShaderSource, fragmentShaderSource);
ASSERT_NE(0u, mProgram); ASSERT_NE(0u, mProgram);
ASSERT_GL_NO_ERROR(); ASSERT_GL_NO_ERROR();
}
void SetUp() override
{
ANGLETest::SetUp();
setUpFramebuffer(); setUpFramebuffer();
} }
...@@ -141,15 +145,19 @@ class Texture2DTest : public TexCoordDrawTest ...@@ -141,15 +145,19 @@ class Texture2DTest : public TexCoordDrawTest
virtual const char *getTextureUniformName() { return "tex"; } virtual const char *getTextureUniformName() { return "tex"; }
void setUpProgram() override
{
TexCoordDrawTest::setUpProgram();
mTexture2DUniformLocation = glGetUniformLocation(mProgram, getTextureUniformName());
ASSERT_NE(-1, mTexture2DUniformLocation);
}
void SetUp() override void SetUp() override
{ {
TexCoordDrawTest::SetUp(); TexCoordDrawTest::SetUp();
mTexture2D = create2DTexture(); mTexture2D = create2DTexture();
ASSERT_GL_NO_ERROR(); ASSERT_GL_NO_ERROR();
mTexture2DUniformLocation = glGetUniformLocation(mProgram, getTextureUniformName());
ASSERT_NE(-1, mTexture2DUniformLocation);
} }
void TearDown() override void TearDown() override
...@@ -168,6 +176,8 @@ class Texture2DTest : public TexCoordDrawTest ...@@ -168,6 +176,8 @@ class Texture2DTest : public TexCoordDrawTest
return; return;
} }
setUpProgram();
if (getClientVersion() < 3) if (getClientVersion() < 3)
{ {
if (!extensionEnabled("GL_OES_texture_float")) if (!extensionEnabled("GL_OES_texture_float"))
...@@ -322,6 +332,12 @@ class Texture2DTestES3 : public Texture2DTest ...@@ -322,6 +332,12 @@ class Texture2DTestES3 : public Texture2DTest
" fragColor = texture(tex, texcoord);\n" " fragColor = texture(tex, texcoord);\n"
"}\n"); "}\n");
} }
void SetUp() override
{
Texture2DTest::SetUp();
setUpProgram();
}
}; };
class Texture2DIntegerAlpha1TestES3 : public Texture2DTest class Texture2DIntegerAlpha1TestES3 : public Texture2DTest
...@@ -357,6 +373,12 @@ class Texture2DIntegerAlpha1TestES3 : public Texture2DTest ...@@ -357,6 +373,12 @@ class Texture2DIntegerAlpha1TestES3 : public Texture2DTest
" fragColor = (texture(tex, texcoord).a == 1) ? green : black;\n" " fragColor = (texture(tex, texcoord).a == 1) ? green : black;\n"
"}\n"); "}\n");
} }
void SetUp() override
{
Texture2DTest::SetUp();
setUpProgram();
}
}; };
class Texture2DUnsignedIntegerAlpha1TestES3 : public Texture2DTest class Texture2DUnsignedIntegerAlpha1TestES3 : public Texture2DTest
...@@ -392,6 +414,12 @@ class Texture2DUnsignedIntegerAlpha1TestES3 : public Texture2DTest ...@@ -392,6 +414,12 @@ class Texture2DUnsignedIntegerAlpha1TestES3 : public Texture2DTest
" fragColor = (texture(tex, texcoord).a == 1u) ? green : black;\n" " fragColor = (texture(tex, texcoord).a == 1u) ? green : black;\n"
"}\n"); "}\n");
} }
void SetUp() override
{
Texture2DTest::SetUp();
setUpProgram();
}
}; };
class Texture2DTestWithDrawScale : public Texture2DTest class Texture2DTestWithDrawScale : public Texture2DTest
...@@ -421,6 +449,9 @@ class Texture2DTestWithDrawScale : public Texture2DTest ...@@ -421,6 +449,9 @@ class Texture2DTestWithDrawScale : public Texture2DTest
void SetUp() override void SetUp() override
{ {
Texture2DTest::SetUp(); Texture2DTest::SetUp();
setUpProgram();
mDrawScaleUniformLocation = glGetUniformLocation(mProgram, "drawScale"); mDrawScaleUniformLocation = glGetUniformLocation(mProgram, "drawScale");
ASSERT_NE(-1, mDrawScaleUniformLocation); ASSERT_NE(-1, mDrawScaleUniformLocation);
...@@ -458,6 +489,12 @@ class Sampler2DAsFunctionParameterTest : public Texture2DTest ...@@ -458,6 +489,12 @@ class Sampler2DAsFunctionParameterTest : public Texture2DTest
) )
); );
} }
void SetUp() override
{
Texture2DTest::SetUp();
setUpProgram();
}
}; };
class TextureCubeTest : public TexCoordDrawTest class TextureCubeTest : public TexCoordDrawTest
...@@ -501,6 +538,8 @@ class TextureCubeTest : public TexCoordDrawTest ...@@ -501,6 +538,8 @@ class TextureCubeTest : public TexCoordDrawTest
mTexture2D = create2DTexture(); mTexture2D = create2DTexture();
setUpProgram();
mTexture2DUniformLocation = glGetUniformLocation(mProgram, "tex2D"); mTexture2DUniformLocation = glGetUniformLocation(mProgram, "tex2D");
ASSERT_NE(-1, mTexture2DUniformLocation); ASSERT_NE(-1, mTexture2DUniformLocation);
mTextureCubeUniformLocation = glGetUniformLocation(mProgram, "texCube"); mTextureCubeUniformLocation = glGetUniformLocation(mProgram, "texCube");
...@@ -551,6 +590,8 @@ class SamplerArrayTest : public TexCoordDrawTest ...@@ -551,6 +590,8 @@ class SamplerArrayTest : public TexCoordDrawTest
{ {
TexCoordDrawTest::SetUp(); TexCoordDrawTest::SetUp();
setUpProgram();
mTexture0UniformLocation = glGetUniformLocation(mProgram, "tex2DArray[0]"); mTexture0UniformLocation = glGetUniformLocation(mProgram, "tex2DArray[0]");
ASSERT_NE(-1, mTexture0UniformLocation); ASSERT_NE(-1, mTexture0UniformLocation);
mTexture1UniformLocation = glGetUniformLocation(mProgram, "tex2DArray[1]"); mTexture1UniformLocation = glGetUniformLocation(mProgram, "tex2DArray[1]");
...@@ -665,6 +706,8 @@ class Texture2DArrayTestES3 : public TexCoordDrawTest ...@@ -665,6 +706,8 @@ class Texture2DArrayTestES3 : public TexCoordDrawTest
{ {
TexCoordDrawTest::SetUp(); TexCoordDrawTest::SetUp();
setUpProgram();
mTextureArrayLocation = glGetUniformLocation(mProgram, "tex2DArray"); mTextureArrayLocation = glGetUniformLocation(mProgram, "tex2DArray");
ASSERT_NE(-1, mTextureArrayLocation); ASSERT_NE(-1, mTextureArrayLocation);
...@@ -724,6 +767,8 @@ class TextureSizeTextureArrayTest : public TexCoordDrawTest ...@@ -724,6 +767,8 @@ class TextureSizeTextureArrayTest : public TexCoordDrawTest
{ {
TexCoordDrawTest::SetUp(); TexCoordDrawTest::SetUp();
setUpProgram();
mTexture0Location = glGetUniformLocation(mProgram, "tex2DArray[0]"); mTexture0Location = glGetUniformLocation(mProgram, "tex2DArray[0]");
ASSERT_NE(-1, mTexture0Location); ASSERT_NE(-1, mTexture0Location);
mTexture1Location = glGetUniformLocation(mProgram, "tex2DArray[1]"); mTexture1Location = glGetUniformLocation(mProgram, "tex2DArray[1]");
...@@ -800,6 +845,8 @@ class ShadowSamplerPlusSampler3DTestES3 : public TexCoordDrawTest ...@@ -800,6 +845,8 @@ class ShadowSamplerPlusSampler3DTestES3 : public TexCoordDrawTest
glBindTexture(GL_TEXTURE_2D, mTextureShadow); glBindTexture(GL_TEXTURE_2D, mTextureShadow);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
setUpProgram();
mTextureShadowUniformLocation = glGetUniformLocation(mProgram, "tex2DShadow"); mTextureShadowUniformLocation = glGetUniformLocation(mProgram, "tex2DShadow");
ASSERT_NE(-1, mTextureShadowUniformLocation); ASSERT_NE(-1, mTextureShadowUniformLocation);
mTexture3DUniformLocation = glGetUniformLocation(mProgram, "tex3D"); mTexture3DUniformLocation = glGetUniformLocation(mProgram, "tex3D");
...@@ -889,6 +936,8 @@ class SamplerTypeMixTestES3 : public TexCoordDrawTest ...@@ -889,6 +936,8 @@ class SamplerTypeMixTestES3 : public TexCoordDrawTest
glBindTexture(GL_TEXTURE_CUBE_MAP, mTextureCubeShadow); glBindTexture(GL_TEXTURE_CUBE_MAP, mTextureCubeShadow);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
setUpProgram();
mTexture2DUniformLocation = glGetUniformLocation(mProgram, "tex2D"); mTexture2DUniformLocation = glGetUniformLocation(mProgram, "tex2D");
ASSERT_NE(-1, mTexture2DUniformLocation); ASSERT_NE(-1, mTexture2DUniformLocation);
mTextureCubeUniformLocation = glGetUniformLocation(mProgram, "texCube"); mTextureCubeUniformLocation = glGetUniformLocation(mProgram, "texCube");
...@@ -949,6 +998,8 @@ class SamplerInStructTest : public Texture2DTest ...@@ -949,6 +998,8 @@ class SamplerInStructTest : public Texture2DTest
void runSamplerInStructTest() void runSamplerInStructTest()
{ {
setUpProgram();
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, mTexture2D); glBindTexture(GL_TEXTURE_2D, mTexture2D);
GLubyte texDataGreen[1u * 1u * 4u]; GLubyte texDataGreen[1u * 1u * 4u];
...@@ -1074,6 +1125,8 @@ TEST_P(Texture2DTest, NegativeAPISubImage) ...@@ -1074,6 +1125,8 @@ TEST_P(Texture2DTest, NegativeAPISubImage)
glBindTexture(GL_TEXTURE_2D, mTexture2D); glBindTexture(GL_TEXTURE_2D, mTexture2D);
EXPECT_GL_ERROR(GL_NO_ERROR); EXPECT_GL_ERROR(GL_NO_ERROR);
setUpProgram();
const GLubyte *pixels[20] = { 0 }; const GLubyte *pixels[20] = { 0 };
glTexSubImage2D(GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels); glTexSubImage2D(GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
EXPECT_GL_ERROR(GL_INVALID_VALUE); EXPECT_GL_ERROR(GL_INVALID_VALUE);
...@@ -1084,6 +1137,8 @@ TEST_P(Texture2DTest, ZeroSizedUploads) ...@@ -1084,6 +1137,8 @@ TEST_P(Texture2DTest, ZeroSizedUploads)
glBindTexture(GL_TEXTURE_2D, mTexture2D); glBindTexture(GL_TEXTURE_2D, mTexture2D);
EXPECT_GL_ERROR(GL_NO_ERROR); EXPECT_GL_ERROR(GL_NO_ERROR);
setUpProgram();
// Use the texture first to make sure it's in video memory // Use the texture first to make sure it's in video memory
glUseProgram(mProgram); glUseProgram(mProgram);
glUniform1i(mTexture2DUniformLocation, 0); glUniform1i(mTexture2DUniformLocation, 0);
...@@ -1272,6 +1327,8 @@ TEST_P(Texture2DTest, TexStorage) ...@@ -1272,6 +1327,8 @@ TEST_P(Texture2DTest, TexStorage)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
setUpProgram();
glUseProgram(mProgram); glUseProgram(mProgram);
glUniform1i(mTexture2DUniformLocation, 0); glUniform1i(mTexture2DUniformLocation, 0);
drawQuad(mProgram, "position", 0.5f); drawQuad(mProgram, "position", 0.5f);
...@@ -1324,6 +1381,8 @@ TEST_P(Texture2DTest, TexStorageWithPBO) ...@@ -1324,6 +1381,8 @@ TEST_P(Texture2DTest, TexStorageWithPBO)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
setUpProgram();
glUseProgram(mProgram); glUseProgram(mProgram);
glUniform1i(mTexture2DUniformLocation, 0); glUniform1i(mTexture2DUniformLocation, 0);
drawQuad(mProgram, "position", 0.5f); drawQuad(mProgram, "position", 0.5f);
...@@ -1442,6 +1501,8 @@ TEST_P(Texture2DTest, TextureNPOT_GL_ALPHA_UBYTE) ...@@ -1442,6 +1501,8 @@ TEST_P(Texture2DTest, TextureNPOT_GL_ALPHA_UBYTE)
return; return;
} }
setUpProgram();
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// Default unpack alignment is 4. The values of 'pixels' below needs it to be 1. // Default unpack alignment is 4. The values of 'pixels' below needs it to be 1.
...@@ -2028,6 +2089,11 @@ TEST_P(SamplerInStructAsFunctionParameterTest, SamplerInStructAsFunctionParamete ...@@ -2028,6 +2089,11 @@ TEST_P(SamplerInStructAsFunctionParameterTest, SamplerInStructAsFunctionParamete
// parameter. // parameter.
TEST_P(SamplerInStructArrayAsFunctionParameterTest, SamplerInStructArrayAsFunctionParameter) TEST_P(SamplerInStructArrayAsFunctionParameterTest, SamplerInStructArrayAsFunctionParameter)
{ {
if (IsIntel() && GetParam().getRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE)
{
std::cout << "Test skipped on Intel OpenGL." << std::endl;
return;
}
runSamplerInStructTest(); runSamplerInStructTest();
} }
...@@ -2035,6 +2101,11 @@ TEST_P(SamplerInStructArrayAsFunctionParameterTest, SamplerInStructArrayAsFuncti ...@@ -2035,6 +2101,11 @@ TEST_P(SamplerInStructArrayAsFunctionParameterTest, SamplerInStructArrayAsFuncti
// parameter. // parameter.
TEST_P(SamplerInNestedStructAsFunctionParameterTest, SamplerInNestedStructAsFunctionParameter) TEST_P(SamplerInNestedStructAsFunctionParameterTest, SamplerInNestedStructAsFunctionParameter)
{ {
if (IsIntel() && GetParam().getRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE)
{
std::cout << "Test skipped on Intel OpenGL." << std::endl;
return;
}
runSamplerInStructTest(); runSamplerInStructTest();
} }
......
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