[Piglit] [PATCH v2 06/12] egl_android_native_fence_sync: Create fence from other display.
Eric Anholt
eric at anholt.net
Fri Jun 16 19:29:46 UTC 2017
Rafael Antognolli <rafael.antognolli at intel.com> writes:
> Verify that EGL_NO_SYNC_KHR is returned and EGL_BAD_MATCH error is
> generated.
>
> Signed-off-by: Rafael Antognolli <rafael.antognolli at intel.com>
> ---
> .../egl_android_native_fence_sync.c | 98 +++++++++++++++++++++-
> 1 file changed, 97 insertions(+), 1 deletion(-)
>
> diff --git a/tests/egl/spec/egl_android_native_fence_sync/egl_android_native_fence_sync.c b/tests/egl/spec/egl_android_native_fence_sync/egl_android_native_fence_sync.c
> index eb01014..721bc44 100644
> --- a/tests/egl/spec/egl_android_native_fence_sync/egl_android_native_fence_sync.c
> +++ b/tests/egl/spec/egl_android_native_fence_sync/egl_android_native_fence_sync.c
> @@ -515,7 +515,7 @@ cleanup:
> * Verify that eglCreateSyncKHR emits correct error when given an invalid
> * display.
> *
> - * From the EGL_KHR_fence_sync spec:
> + * From the EGL_ANDROID_native_fence_sync spec:
The citation appears in both specs. Let's pick one and use it in the
commit adding the citation, rather than changing it here.
> *
> * If <dpy> is not the name of a valid, initialized EGLDisplay,
> * EGL_NO_SYNC_KHR is returned and an EGL_BAD_DISPLAY error is
> @@ -546,6 +546,97 @@ test_eglCreateSyncKHR_native_invalid_display(void *test_data)
> return result;
> }
>
> +static enum piglit_result
> +init_other_display(EGLDisplay *out_other_dpy, EGLDisplay orig_dpy)
> +{
> + enum piglit_result result = PIGLIT_PASS;
> + EGLDisplay other_dpy = 0;
> + int i;
> +
> + static const EGLint platforms[] = {
> + EGL_PLATFORM_X11_EXT,
> + EGL_PLATFORM_WAYLAND_EXT,
> + EGL_PLATFORM_GBM_MESA,
> + 0,
> + };
> +
> + for (i = 0; platforms[i] != 0; ++i) {
> + result = init_display(platforms[i], &other_dpy);
> + switch (result) {
> + case PIGLIT_SKIP:
> + break;
> + case PIGLIT_PASS:
> + if (other_dpy && other_dpy != orig_dpy) {
> + *out_other_dpy = other_dpy;
> + return PIGLIT_PASS;
> + } else {
> + result = PIGLIT_SKIP;
> + break;
> + }
> + default:
> + break;
Switch cases should be at the same indentation level as the switch
itself.
Actually, since this code looks like it's from
tests/egl/spec/egl_khr_fence_sync/egl_khr_fence_sync.c, could you just
move its init_other_display() function to a helper in
tests/util/piglit-util-egl.c?
I do wonder if it would be possible to share more of our test code
between these two tests. Seems messy, though.
> + }
> + }
> +
> + return result;
> +}
> +
> +/**
> + * Verify that eglCreateSyncKHR() emits correct error when given a display that
> + * does not match the display of the bound context.
> + *
> + * From the EGL_KHR_fence_sync spec:
> + *
> + * * If <type> is EGL_SYNC_FENCE_KHR or EGL_SYNC_NATIVE_FENCE_ANDROID and
> + * no context is current for the bound API (i.e., eglGetCurrentContext
> + * returns EGL_NO_CONTEXT), EGL_NO_SYNC_KHR is returned and an
> + * EGL_BAD_MATCH error is generated.
This citation seems to be in EGL_ANDROID_native_fence_sync, not KHR.
Also, I think this is the wrong block of spec text -- you want the one
about "does not match the EGLDisplay of the currently bound context". I
was going to suggest gutting almost all of the test, given the original
text :)
> +static enum piglit_result
> +test_eglCreateSyncKHR_native_wrong_display_same_thread(void *test_data)
> +{
> + enum piglit_result result = PIGLIT_PASS;
> + EGLDisplay wrong_dpy = 0;
> + EGLSyncKHR sync = 0;
> +
> + result = test_setup();
> + if (result != PIGLIT_PASS) {
> + return result;
> + }
> +
> + piglit_logi("create second EGLDisplay");
> + result = init_other_display(&wrong_dpy, g_dpy);
> + if (result != PIGLIT_PASS) {
> + goto cleanup;
> + }
> +
> + piglit_require_egl_extension(wrong_dpy, "EGL_KHR_fence_sync");
> +
> + piglit_logi("try to create sync with second display");
> + sync = peglCreateSyncKHR(wrong_dpy, EGL_SYNC_NATIVE_FENCE_ANDROID, NULL);
> + if (sync != EGL_NO_SYNC_KHR) {
> + piglit_loge("eglCreateSyncKHR() incorrectly succeeded");
> + result = PIGLIT_FAIL;
> + goto cleanup;
> + }
> + if (!piglit_check_egl_error(EGL_BAD_MATCH)) {
> + piglit_loge("eglCreateSyncKHR emitted wrong error");
> + result = PIGLIT_FAIL;
> + goto cleanup;
> + }
> +
> +cleanup:
> + if (wrong_dpy) {
> + eglTerminate(wrong_dpy);
> + }
> + test_cleanup(EGL_NO_SYNC_KHR, &result);
> + return result;
> +}
> +
> static const struct piglit_subtest fence_sync_subtests[] = {
> {
> "eglCreateSyncKHR_native_no_fence",
> @@ -567,6 +658,11 @@ static const struct piglit_subtest fence_sync_subtests[] = {
> "eglCreateSyncKHR_invalid_display",
> test_eglCreateSyncKHR_native_invalid_display,
> },
> + {
> + "eglCreateSyncKHR_wrong_display_same_thread",
> + "eglCreateSyncKHR_wrong_display_same_thread",
> + test_eglCreateSyncKHR_native_wrong_display_same_thread,
> + },
> {0},
> };
>
> --
> 2.7.4
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/piglit/attachments/20170616/9cd26fff/attachment.sig>
More information about the Piglit
mailing list