[Piglit] [PATCH 2/7] egl-context-preemption: Add check for high priority contexts.
Rafael Antognolli
rafael.antognolli at intel.com
Tue Oct 9 17:43:55 UTC 2018
On Tue, Oct 09, 2018 at 01:04:07PM +0300, Tapani Pälli wrote:
>
> On 10/4/18 6:35 PM, Rafael Antognolli wrote:
> > Check if we can create high priority contexts, otherwise just fail the
> > test immediately. There's no reason to test for preemption if we can't
> > create high priority contexts.
> > ---
> > tests/egl/egl-context-preemption.c | 57 ++++++++++++++++++++++++++++++
> > 1 file changed, 57 insertions(+)
> >
> > diff --git a/tests/egl/egl-context-preemption.c b/tests/egl/egl-context-preemption.c
> > index 82a698aa1..9d5aa42ee 100644
> > --- a/tests/egl/egl-context-preemption.c
> > +++ b/tests/egl/egl-context-preemption.c
> > @@ -58,6 +58,40 @@ struct test_profile {
> > static bool small = false;
> > static int total_objects = 0;
> > +static EGLint
> > +check_priority(EGLDisplay dpy, EGLContext ctx, EGLint *expected)
> > +{
> > + EGLint value;
> > + EGLBoolean status =
> > + eglQueryContext(dpy, ctx, EGL_CONTEXT_PRIORITY_LEVEL_IMG, &value);
> > +
> > + if (status == EGL_FALSE) {
> > + piglit_loge("eglQueryContext failed\n");
> > + piglit_report_result(PIGLIT_FAIL);
> > + }
> > +
> > + if (expected && value != *expected) {
> > + piglit_loge("%s fail: priority value 0x%x, expected 0x%x\n",
> > + __func__, value, *expected);
> > + piglit_loge("Can't create high priority context.\n");
> > + piglit_report_result(PIGLIT_FAIL);
> > + }
> > + return value;
> > +}
> > +
> > +static EGLContext
> > +create_context(EGLDisplay dpy, EGLint *attr)
> > +{
> > + EGLContext ctx =
> > + eglCreateContext(dpy, EGL_NO_CONFIG_MESA, EGL_NO_CONTEXT, attr);
> > +
> > + if (ctx == EGL_NO_CONTEXT) {
> > + piglit_loge("could not create EGL context, attr 0x%x\n", attr[1]);
> > + piglit_report_result(PIGLIT_FAIL);
> > + }
> > + return ctx;
> > +}
> > +
> > static const char *vs_text =
> > "#version 330 core\n"
> > "layout (location = 0) in vec3 aPos;\n"
> > @@ -304,6 +338,27 @@ piglit_display(void)
> > return result;
> > }
> > +static void
> > +check_high_context_priority_creation(EGLDisplay dpy)
> > +{
> > + EGLint attr[] = {
> > + EGL_CONTEXT_PRIORITY_LEVEL_IMG,
> > + EGL_CONTEXT_PRIORITY_HIGH_IMG,
> > + EGL_NONE
> > + };
> > + EGLContext ctx = create_context(dpy, attr);
> > + if (ctx == EGL_NO_CONTEXT) {
> > + piglit_loge("failed to create context");
> > + piglit_check_egl_error(EGL_SUCCESS);
> > + piglit_report_result(PIGLIT_FAIL);
> > + }
> > +
> > + EGLint expected = EGL_CONTEXT_PRIORITY_HIGH_IMG;
> > + check_priority(dpy, ctx, &expected);
> > +
> > + eglDestroyContext(dpy, ctx);
> > +}
> > +
> > void
> > piglit_init(int argc, char **argv)
> > {
> > @@ -312,6 +367,8 @@ piglit_init(int argc, char **argv)
> > dpy = eglGetCurrentDisplay();
> > piglit_require_egl_extension(dpy, "EGL_IMG_context_priority");
>
> You need
>
> piglit_require_egl_extension(dpy, "EGL_MESA_configless_context");
>
> because create_context uses EGL_NO_CONFIG_MESA
Fixing it locally.
> > + check_high_context_priority_creation(dpy);
> > +
> > if (piglit_strip_arg(&argc, argv, "small"))
> > small = true;
> >
More information about the Piglit
mailing list