Commit 4644a20b by Olli Etuaho

Add a test for sampler as a function parameter

This adds some coverage for samplers that's missing from dEQP. The test shader passes a sampler to an user-defined function, samples the texture there and sets the returned sample to gl_FragColor. The test then checks that the shader result is correct. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: I2cc511e591a4af01515c6fb38fd43c5f15337bcb Reviewed-on: https://chromium-review.googlesource.com/321622Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org> Tested-by: 's avatarOlli Etuaho <oetuaho@nvidia.com>
parent 53a2da13
......@@ -284,6 +284,33 @@ class Texture2DTestWithDrawScale : public Texture2DTest
GLint mDrawScaleUniformLocation;
};
class Sampler2DAsFunctionParameterTest : public Texture2DTest
{
protected:
Sampler2DAsFunctionParameterTest() : Texture2DTest() {}
std::string getFragmentShaderSource() override
{
return std::string(SHADER_SOURCE
(
precision highp float;
uniform sampler2D tex;
varying vec2 texcoord;
vec4 computeFragColor(sampler2D aTex)
{
return texture2D(aTex, texcoord);
}
void main()
{
gl_FragColor = computeFragColor(tex);
}
)
);
}
};
class TextureCubeTest : public TexCoordDrawTest
{
protected:
......@@ -476,6 +503,24 @@ TEST_P(TextureCubeTest, CubeMapDraw)
EXPECT_PIXEL_NEAR(px, py, 0, 180, 0, 255, 2);
}
TEST_P(Sampler2DAsFunctionParameterTest, Sampler2DAsFunctionParameter)
{
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, mTexture2D);
GLubyte texData[4];
texData[0] = 0;
texData[1] = 128;
texData[2] = 0;
texData[3] = 255;
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, texData);
glUseProgram(mProgram);
glUniform1i(mTexture2DUniformLocation, 0);
drawQuad(mProgram, "position", 0.5f);
EXPECT_GL_NO_ERROR();
EXPECT_PIXEL_NEAR(0, 0, 0, 128, 0, 255, 2);
}
// Copy of a test in conformance/textures/texture-mips, to test generate mipmaps
TEST_P(Texture2DTestWithDrawScale, MipmapsTwice)
{
......@@ -1238,6 +1283,7 @@ TEST_P(TextureLimitsTest, DrawWithTexturePastMaximum)
ANGLE_INSTANTIATE_TEST(Texture2DTest, ES2_D3D9(), ES2_D3D11(), ES2_D3D11_FL9_3());
ANGLE_INSTANTIATE_TEST(TextureCubeTest, ES2_D3D9(), ES2_D3D11(), ES2_D3D11_FL9_3());
ANGLE_INSTANTIATE_TEST(Texture2DTestWithDrawScale, ES2_D3D9(), ES2_D3D11(), ES2_D3D11_FL9_3());
ANGLE_INSTANTIATE_TEST(Sampler2DAsFunctionParameterTest, ES2_D3D9(), ES2_D3D11(), ES2_D3D11_FL9_3());
ANGLE_INSTANTIATE_TEST(Texture2DArrayTestES3, ES3_D3D11(), ES3_OPENGL());
ANGLE_INSTANTIATE_TEST(TextureLimitsTest, ES2_D3D11(), ES2_OPENGL());
......
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