[Piglit] [PATCH 1/3] egl_khr_create_context: Fix tests for invalid flags

Matt Turner mattst88 at gmail.com
Tue Oct 1 15:14:13 PDT 2013


On Tue, Oct 1, 2013 at 3:06 PM, Chad Versace
<chad.versace at linux.intel.com> wrote:
> On 10/01/2013 02:49 PM, Matt Turner wrote:
>>
>> On Fri, Sep 20, 2013 at 7:02 PM, Chad Versace
>> <chad.versace at linux.intel.com> wrote:
>>>
>>> According to version 15 of the EGL_KHR_create_context spec,
>>> EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR is a valid flag for OpenGL ES contexts.
>>> But the test "EGL_KHR_create_context/invalid flag GLES" verifies that it
>>> is an *invalid* flag.
>>>
>>> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
>>> ---
>>>   .../spec/egl_khr_create_context/invalid-flag-gles.c   | 19
>>> ++++++++++---------
>>>   1 file changed, 10 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/tests/egl/spec/egl_khr_create_context/invalid-flag-gles.c
>>> b/tests/egl/spec/egl_khr_create_context/invalid-flag-gles.c
>>> index b12db20..5af773b 100644
>>> --- a/tests/egl/spec/egl_khr_create_context/invalid-flag-gles.c
>>> +++ b/tests/egl/spec/egl_khr_create_context/invalid-flag-gles.c
>>> @@ -60,19 +60,20 @@ int main(int argc, char **argv)
>>>          uint32_t flag = 0x80000000;
>>>          bool ran_test = false;
>>>
>>> -       /* The EGL_KHR_create_context spec says:
>>> +       /* According to the EGL_KHR_create_context spec, version 15,
>>> there
>>> +        * exists exactly one valid flag for OpenGL ES contexts: the
>>> debug
>>> +        * flag.
>>>           *
>>> -        *     "The value for attribute EGL_CONTEXT_FLAGS_KHR specifies a
>>> set of
>>> -        *     flag bits affecting the context. Flags are only defined
>>> for OpenGL
>>> -        *     context creation, and specifying a flags value other than
>>> zero for
>>> -        *     other types of contexts, including OpenGL ES contexts,
>>> will generate
>>> -        *     an error."
>>> +        *     If the EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR flag bit is set in
>>> +        *     EGL_CONTEXT_FLAGS_KHR, then a <debug context> will be
>>> created.
>>> +        *     [...] This bit is supported for OpenGL and OpenGL ES
>>> contexts.
>>>           */
>>> -       uint32_t first_valid_flag = 0;
>>> +       const EGLint valid_flags = EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
>>> +       const EGLint invalid_flags = ~valid_flags;
>>>
>>>          if (EGL_KHR_create_context_setup(EGL_OPENGL_ES_BIT)) {
>>>                  ran_test = true;
>>> -               while (flag != first_valid_flag) {
>>> +               while (flag & invalid_flags) {
>>>                          pass = pass && try_flag(flag);
>>>                          flag >>= 1;
>>>                  }
>>> @@ -83,7 +84,7 @@ int main(int argc, char **argv)
>>>          if (EGL_KHR_create_context_setup(EGL_OPENGL_ES2_BIT)) {
>>>                  ran_test = true;
>>>                  flag = 0x80000000;
>>> -               while (flag != first_valid_flag) {
>>> +               while (flag & invalid_flags) {
>>>                          pass = pass && try_flag(flag);
>>>                          flag >>= 1;
>>>                  }
>>> --
>>> 1.8.3.1
>>
>>
>> Although the code seems a bit silly doing this while (flag !=
>> first_valid_flag) when first_valid_flag is const 0, I did it that way
>> to match the invalid-flag-gl.c test. I like what you're doing better
>> though.
>>
>> This patch is
>>
>> Reviewed-by: Matt Turner <mattst88 at gmail.com>
>>
>> I'd be nice to make the invalid-flag-gl.c test behave the same way as
>> this one. Maybe do a follow-on patch?
>
>
> Sure, I'll do a follow-on patch.
>
> Hmm... I now see something better than my while-loop.
>
>    while (flag) {
>       if (flag & invalid_flag) {
>
>           pass = pass && try_flag(flag);
>       }
>
>       flag >>= 1;
>    }
>
> With this idiom, if Khronos ever adds more valid flags such that
> the invalid_flags mask has discontinuities in it, then the new loop
> will correctly jump over discontinuities and continue. The loop
> currently in the patch would fail to test all invalid flags below
> the first valid one. :( And that was exactly the behavior I was trying
> to fix.
>
> If I use the new proposed loop idiom in this patch, do I still have your
> rb? Do you see any improvements that could be made?
>    }

Looks good to me. Have a R-b. I don't see any improvements to it.


More information about the Piglit mailing list