diff options
author | Rafael Antognolli <rafael.antognolli@intel.com> | 2016-11-07 15:05:14 -0800 |
---|---|---|
committer | Rafael Antognolli <rafael.antognolli@intel.com> | 2017-06-27 11:15:55 -0700 |
commit | 530256810d367a99f87883d760851ee6d2290294 (patch) | |
tree | 11cef2e9c389c389d3a02b8cb16c88c25d4cb1d8 | |
parent | 335606a5aea8ef2ba2a88572aa40e5bb2cbe4773 (diff) |
egl_khr_fence_sync: Verify that dup() fails on invalid fence.
If <sync> is not a valid sync object for <dpy>,
EGL_NO_NATIVE_FENCE_FD_ANDROID is returned and an EGL_BAD_PARAMETER
error is generated.
Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | tests/egl/spec/egl_khr_fence_sync/egl_khr_fence_sync.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/egl/spec/egl_khr_fence_sync/egl_khr_fence_sync.c b/tests/egl/spec/egl_khr_fence_sync/egl_khr_fence_sync.c index 54fee6637..96c0be98f 100644 --- a/tests/egl/spec/egl_khr_fence_sync/egl_khr_fence_sync.c +++ b/tests/egl/spec/egl_khr_fence_sync/egl_khr_fence_sync.c @@ -1526,6 +1526,51 @@ cleanup: return result; } +/** + * Verify that eglDupNativeFenceFDANDROID emits correct error when given an + * invalid sync . + * + * From the EGL_ANDROID_native_fence_sync spec: + * + * If <sync> is not a valid sync object for <dpy>, + * EGL_NO_NATIVE_FENCE_FD_ANDROID is returned and an EGL_BAD_PARAMETER + * error is generated. + */ +static enum piglit_result +test_eglCreateSyncKHR_native_dup_invalid(void *test_data) +{ + enum piglit_result result = PIGLIT_PASS; + EGLSyncKHR invalid_sync = (EGLSyncKHR) &canary; + EGLint sync_fd = canary; + + result = test_setup(test_data); + if (result != PIGLIT_PASS) { + return result; + } + + sync_fd = peglDupNativeFenceFDANDROID(g_dpy, invalid_sync); + if (sync_fd != EGL_NO_NATIVE_FENCE_FD_ANDROID) { + piglit_loge("Given an invalid sync object, " + "eglDupNativeFenceFDANDROID() should return " + "EGL_NO_NATIVE_FENCE_FD_ANDROID, " + "but returned %d", sync_fd); + close(sync_fd); + result = PIGLIT_FAIL; + goto cleanup; + } + + if (!piglit_check_egl_error(EGL_BAD_PARAMETER)) { + piglit_loge("Given an invalid sync object, " + "eglDupNativeFenceFDANDROID() " + "did not emit EGL_BAD_PARAMETER"); + result = PIGLIT_FAIL; + } + +cleanup: + test_cleanup(EGL_NO_SYNC_KHR, &result); + return result; +} + static const struct piglit_subtest fence_android_native_subtests[] = { { "eglCreateSyncKHR_default_attributes", @@ -1581,6 +1626,12 @@ static const struct piglit_subtest fence_android_native_subtests[] = { test_eglCreateSyncKHR_native_dup_fence, &fence_android_native, }, + { + "eglCreateSyncKHR_native_dup_invalid", + "eglCreateSyncKHR_native_dup_invalid", + test_eglCreateSyncKHR_native_dup_invalid, + &fence_android_native, + }, {0}, }; |