Commit b185002d by Xinyi He Committed by Commit Bot

Fix the condition of glOrtho{fx} validation

According to the OpenGL ES 1.1 spec, remove the conditions of glOrtho validation that n and f must be positive. Bug: angleproject:4281 Change-Id: I644a25408a026ce87211f2203b8e8203eeaf69bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2067002Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent f031f7c8
...@@ -1123,7 +1123,10 @@ bool ValidateOrthof(const Context *context, ...@@ -1123,7 +1123,10 @@ bool ValidateOrthof(const Context *context,
GLfloat f) GLfloat f)
{ {
ANGLE_VALIDATE_IS_GLES1(context); ANGLE_VALIDATE_IS_GLES1(context);
if (l == r || b == t || n == f || n <= 0.0f || f <= 0.0f) // [OpenGL ES 1.1.12] section 2.10.2 page 31:
// If l is equal to r, b is equal to t, or n is equal to f, the
// error INVALID VALUE results.
if (l == r || b == t || n == f)
{ {
context->validationError(GL_INVALID_VALUE, kInvalidProjectionMatrix); context->validationError(GL_INVALID_VALUE, kInvalidProjectionMatrix);
} }
...@@ -1139,7 +1142,7 @@ bool ValidateOrthox(const Context *context, ...@@ -1139,7 +1142,7 @@ bool ValidateOrthox(const Context *context,
GLfixed f) GLfixed f)
{ {
ANGLE_VALIDATE_IS_GLES1(context); ANGLE_VALIDATE_IS_GLES1(context);
if (l == r || b == t || n == f || n <= 0 || f <= 0) if (l == r || b == t || n == f)
{ {
context->validationError(GL_INVALID_VALUE, kInvalidProjectionMatrix); context->validationError(GL_INVALID_VALUE, kInvalidProjectionMatrix);
} }
......
...@@ -165,12 +165,19 @@ TEST_P(MatrixBuiltinsTest, OrthoNegative) ...@@ -165,12 +165,19 @@ TEST_P(MatrixBuiltinsTest, OrthoNegative)
EXPECT_GL_ERROR(GL_INVALID_VALUE); EXPECT_GL_ERROR(GL_INVALID_VALUE);
glOrthof(0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f); glOrthof(0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f);
EXPECT_GL_ERROR(GL_INVALID_VALUE); EXPECT_GL_ERROR(GL_INVALID_VALUE);
glOrthof(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); }
EXPECT_GL_ERROR(GL_INVALID_VALUE);
glOrthof(0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f); // Test that glOrtho{fx} don't issue error result if near or far is negative.
EXPECT_GL_ERROR(GL_INVALID_VALUE); TEST_P(MatrixBuiltinsTest, OrthoNegativeNearFar)
glOrthof(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f); {
EXPECT_GL_ERROR(GL_INVALID_VALUE); glOrthof(-1.0f, 1.0f, -1.0f, 1.0f, -1.0f, 0.0f);
EXPECT_GL_NO_ERROR();
glOrthof(-1.0f, 1.0f, -1.0f, 1.0f, 0.0f, -1.0f);
EXPECT_GL_NO_ERROR();
glOrthox(-1, 1, -1, 1, -1, 0);
EXPECT_GL_NO_ERROR();
glOrthox(-1, 1, -1, 1, 0, -1);
EXPECT_GL_NO_ERROR();
} }
ANGLE_INSTANTIATE_TEST_ES1(MatrixBuiltinsTest); ANGLE_INSTANTIATE_TEST_ES1(MatrixBuiltinsTest);
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