Skip to content

Commit 8ed1600

Browse files
timvpGoogleAngle LUCI CQ
authored andcommitted
tests: Fix ShadingRateEXTTest.FragmentShadingRatePrimitive
The test ShadingRateEXTTest.FragmentShadingRatePrimitive has several errors: 1. The uniform 'u_color' is not set to any value. 2. The test incorrectly assumes GL_SHADING_RATE_1X1_PIXELS_EXT results in the GLSL built-in 'gl_ShadingRateEXT' having a non-zero value. 3. The test attempts to validate the GL_SHADING_RATE_2X2_PIXELS_EXT behavior, but never calls glShadingRateEXT() with this value. 4. kSimplePrimitiveShadingRateGS needs to set gl_PrimitiveShadingRateEXT each iteration of the loop, rather than just once, due to the EmitVertex() call which resets all output variables to undefined values. Once these issues are fixed, the test passes. Bug: b/450024489 Bug: angleproject:444980424 Test: ShadingRateEXTTest.FragmentShadingRatePrimitive Change-Id: If3b9379d4aac97bb106cc0b04550068cd0783a94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7027991 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
1 parent 62fe67a commit 8ed1600

2 files changed

Lines changed: 24 additions & 10 deletions

File tree

src/tests/angle_end2end_tests_expectations.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@
147147
410591534 WIN INTEL OPENGL : TextureCubeTestES3.IncompatibleCubeFacesThenSingleFaceCompatibleUploadAndIncompatibleAgain*/* = SKIP
148148
411157348 WIN D3D11 : ImageTestES31.UseSourceTextureAsStorageImage/* = SKIP
149149
409821658 WIN INTEL OPENGL : SRGBTextureTestES3.SRGBSkipEncodeAndDecodeInGenerateMipmap/ES3_OpenGL* = SKIP
150-
444980424 NVIDIA VULKAN : ShadingRateEXTTest.FragmentShadingRatePrimitive/* = SKIP
151150
447556589 WIN INTEL OPENGL : GeometryShaderTest.ImplicitSizedArrayMatchesExplicitSizedArray/* = SKIP
152151
447556589 WIN INTEL OPENGL : GeometryShaderTest.ImplicitSizedArrayMatchesExplicitSizedArray2/* = SKIP
153152

@@ -1687,7 +1686,6 @@
16871686
410630704 SAMSUNG GALAXYS24EXYNOS : PixelLocalStorageValidationTest.ModifyTextureDuringPLS/* = SKIP
16881687
410630704 SAMSUNG GALAXYS24EXYNOS : PixelLocalStorageValidationTest.PLSActive_bans_blend_equation_advanced/* = SKIP
16891688
410630704 SAMSUNG GALAXYS24EXYNOS : PixelLocalStorageValidationTest.PLSActive_bans_blend_func_extended/* = SKIP
1690-
410630704 SAMSUNG GALAXYS24EXYNOS VULKAN : ShadingRateEXTTest.FragmentShadingRatePrimitive/* = SKIP
16911689

16921690

16931691
// Snapdragon 8 Gen3 Mobile Reference Device

src/tests/gl_tests/ShadingRateEXTTest.cpp

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ layout (triangles) in;
5454
layout (triangle_strip, max_vertices = 3) out;
5555
void main()
5656
{
57-
gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
5857
for (int i = 0; i < 3; i++)
5958
{
59+
gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
6060
gl_Position = gl_in[i].gl_Position;
6161
EmitVertex();
6262
}
@@ -73,10 +73,12 @@ void main()
7373
// Emit red color if ShadingRateEXT == gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT
7474
if (gl_ShadingRateEXT == 5) {
7575
fragColor = vec4(1.0, 0.0, 0.0, 1.0); // red
76-
} else if (gl_ShadingRateEXT == 0) {
76+
}
77+
// ShadingRateEXT == 0 indicates 1x1 shading rate
78+
else if (gl_ShadingRateEXT == 0) {
7779
fragColor = u_color;
78-
}else {
79-
fragColor = vec4(0.0, 1.0, 0.0, 1.0);
80+
} else {
81+
fragColor = vec4(0.0, 1.0, 0.0, 1.0); // green
8082
}
8183
})";
8284

@@ -184,25 +186,36 @@ TEST_P(ShadingRateEXTTest, FragmentShadingRatePrimitive)
184186
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_fragment_shading_rate_primitive"));
185187
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_geometry_shader"));
186188

187-
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
189+
// Yellow
190+
glClearColor(1.0f, 1.0f, 0.0f, 1.0f);
188191
glClear(GL_COLOR_BUFFER_BIT);
189192

190193
ANGLE_GL_PROGRAM(drawShadingRateProgram, kSimpleShadingRateVS, kSimpleShadingRateFS);
191194
glUseProgram(drawShadingRateProgram);
195+
GLint colorLoc = glGetUniformLocation(drawShadingRateProgram, "u_color");
196+
ASSERT_NE(colorLoc, -1);
197+
glUniform4f(colorLoc, 0, 0, 1, 1); // blue
198+
192199
// Set 1x1 shading rate and KEEP combinerOps.
193200
glShadingRateEXT(GL_SHADING_RATE_1X1_PIXELS_EXT);
194201
glShadingRateCombinerOpsEXT(GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT,
195202
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT);
196203
// Verify draw call with 1x1 shading rate.
197204
drawQuad(drawShadingRateProgram, essl1_shaders::PositionAttrib(), 0.5f);
198205
ASSERT_GL_NO_ERROR();
199-
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
206+
// GL_SHADING_RATE_1X1_PIXELS_EXT -> gl_ShadingRateEXT = 0
207+
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
200208

201209
// Compile PrimitiveShadingRateVS + FS and use this program
202210
ANGLE_GL_PROGRAM(primitiveShadingRateVSProgram, kSimplePrimitiveShadingRateVS,
203211
kSimpleShadingRateFS);
204212
glUseProgram(primitiveShadingRateVSProgram);
205-
// Set REPLACE combinerOp0.
213+
colorLoc = glGetUniformLocation(primitiveShadingRateVSProgram, "u_color");
214+
ASSERT_NE(colorLoc, -1);
215+
glUniform4f(colorLoc, 0, 0, 1, 1); // blue
216+
217+
// Set 2x2 shading rate and REPLACE combinerOps.
218+
glShadingRateEXT(GL_SHADING_RATE_2X2_PIXELS_EXT);
206219
glShadingRateCombinerOpsEXT(GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT,
207220
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT);
208221
// Verify draw call with 2x2 primitive shading rate.
@@ -215,6 +228,9 @@ TEST_P(ShadingRateEXTTest, FragmentShadingRatePrimitive)
215228
ANGLE_GL_PROGRAM_WITH_GS(primitiveShadingRateGSProgram, kSimpleShadingRateVS,
216229
kSimplePrimitiveShadingRateGS, kSimpleShadingRateFS);
217230
glUseProgram(primitiveShadingRateGSProgram);
231+
colorLoc = glGetUniformLocation(primitiveShadingRateGSProgram, "u_color");
232+
ASSERT_NE(colorLoc, -1);
233+
glUniform4f(colorLoc, 0, 0, 1, 1); // blue
218234

219235
// Verify draw call with 2x2 primitive shading rate with GS.
220236
drawQuad(primitiveShadingRateGSProgram, essl1_shaders::PositionAttrib(), 0.5f);
@@ -227,7 +243,7 @@ TEST_P(ShadingRateEXTTest, FragmentShadingRatePrimitive)
227243
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT);
228244
drawQuad(drawShadingRateProgram, essl1_shaders::PositionAttrib(), 0.5f);
229245
ASSERT_GL_NO_ERROR();
230-
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
246+
EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
231247
}
232248

233249
// The negative test of EXT_fragment_shading_rate

0 commit comments

Comments
 (0)