Commit cef5b717 by Jeff Vigil Committed by Commit Bot

EGL: Add attribute check in ValidateQueryContext

Implementation of EGL_IMG_context_priority was missing attribute check in ValidateQueryContext Add test case. Test: angle_end2end_test --gtest_filter=EGLCreateContextAttribsTest Bug: angleproject:5746 Change-Id: Idf5df29fcb343d969a031675b6c5985a9be0a705 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2752891 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 5cc32fc9
...@@ -5038,6 +5038,16 @@ bool ValidateQueryContext(const ValidationContext *val, ...@@ -5038,6 +5038,16 @@ bool ValidateQueryContext(const ValidationContext *val,
} }
break; break;
case EGL_CONTEXT_PRIORITY_LEVEL_IMG:
if (!display->getExtensions().contextPriority)
{
val->setError(EGL_BAD_ATTRIBUTE,
"Attribute EGL_CONTEXT_PRIORITY_LEVEL_IMG requires "
"extension EGL_IMG_context_priority.");
return false;
}
break;
default: default:
val->setError(EGL_BAD_ATTRIBUTE, "Invalid context attribute."); val->setError(EGL_BAD_ATTRIBUTE, "Invalid context attribute.");
return false; return false;
......
...@@ -158,6 +158,61 @@ TEST_P(EGLCreateContextAttribsTest, IncompatibleConfig) ...@@ -158,6 +158,61 @@ TEST_P(EGLCreateContextAttribsTest, IncompatibleConfig)
eglTerminate(mDisplay); eglTerminate(mDisplay);
} }
// EGL_IMG_context_priority - set and get attribute
TEST_P(EGLCreateContextAttribsTest, IMGContextPriorityExtension)
{
const EGLint configAttributes[] = {EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8,
EGL_BLUE_SIZE, 8, EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_NONE};
// Get all the configs
EGLint count;
EGLConfig config;
EXPECT_EGL_TRUE(eglChooseConfig(mDisplay, configAttributes, &config, 1, &count));
EXPECT_TRUE(count == 1);
EGLContext context = EGL_NO_CONTEXT;
EGLint contextAttribs[] = {EGL_CONTEXT_MAJOR_VERSION,
2,
EGL_CONTEXT_MINOR_VERSION,
0,
EGL_CONTEXT_PRIORITY_LEVEL_IMG,
EGL_CONTEXT_PRIORITY_HIGH_IMG,
EGL_NONE};
if (IsEGLDisplayExtensionEnabled(mDisplay, "EGL_IMG_context_priority"))
{
context = eglCreateContext(mDisplay, config, nullptr, contextAttribs);
EXPECT_NE(context, EGL_NO_CONTEXT);
ASSERT_EGL_ERROR(EGL_SUCCESS);
EGLint value = 0;
EXPECT_EGL_TRUE(eglQueryContext(mDisplay, context, EGL_CONTEXT_PRIORITY_LEVEL_IMG, &value));
ASSERT_EGL_ERROR(EGL_SUCCESS);
}
else // Not supported so should get EGL_BAD_ATTRIBUTE
{
context = eglCreateContext(mDisplay, config, nullptr, contextAttribs);
EXPECT_EQ(context, EGL_NO_CONTEXT);
ASSERT_EGL_ERROR(EGL_BAD_ATTRIBUTE);
EGLint contextAttribs[] = {EGL_CONTEXT_MAJOR_VERSION, 2, EGL_CONTEXT_MINOR_VERSION, 0,
EGL_NONE};
context = eglCreateContext(mDisplay, config, nullptr, contextAttribs);
EXPECT_NE(context, EGL_NO_CONTEXT);
ASSERT_EGL_ERROR(EGL_SUCCESS);
EGLint value = 0;
EXPECT_EGL_FALSE(
eglQueryContext(mDisplay, context, EGL_CONTEXT_PRIORITY_LEVEL_IMG, &value));
ASSERT_EGL_ERROR(EGL_BAD_ATTRIBUTE);
}
// Cleanup contexts
eglTerminate(mDisplay);
}
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EGLCreateContextAttribsTest); GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EGLCreateContextAttribsTest);
ANGLE_INSTANTIATE_TEST(EGLCreateContextAttribsTest, ANGLE_INSTANTIATE_TEST(EGLCreateContextAttribsTest,
WithNoFixture(ES2_D3D9()), WithNoFixture(ES2_D3D9()),
......
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