Commit cb58584c by Nicolas Capens

Wait on fence sync status query.

Bug 24300960 Change-Id: I10a97536bb6559ea7b302b475d0b6936a495b65a Reviewed-on: https://swiftshader-review.googlesource.com/4210Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com>
parent 8527e472
...@@ -976,7 +976,7 @@ public: ...@@ -976,7 +976,7 @@ public:
context = nullptr; context = nullptr;
} }
void wait() const { return context->finish(); } void wait() { context->finish(); signal(); }
void signal() { status = EGL_SIGNALED_KHR; } void signal() { status = EGL_SIGNALED_KHR; }
bool isSignaled() const { return status == EGL_SIGNALED_KHR; } bool isSignaled() const { return status == EGL_SIGNALED_KHR; }
...@@ -1051,7 +1051,6 @@ EGLint ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeK ...@@ -1051,7 +1051,6 @@ EGLint ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeK
if(!eglSync->isSignaled()) if(!eglSync->isSignaled())
{ {
eglSync->wait(); eglSync->wait();
eglSync->signal();
} }
return EGL_CONDITION_SATISFIED_KHR; return EGL_CONDITION_SATISFIED_KHR;
...@@ -1076,6 +1075,7 @@ EGLBoolean GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, E ...@@ -1076,6 +1075,7 @@ EGLBoolean GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, E
*value = EGL_SYNC_FENCE_KHR; *value = EGL_SYNC_FENCE_KHR;
return EGL_TRUE; return EGL_TRUE;
case EGL_SYNC_STATUS_KHR: case EGL_SYNC_STATUS_KHR:
eglSync->wait(); // TODO: Don't block. Just poll based on sw::Query.
*value = eglSync->isSignaled() ? EGL_SIGNALED_KHR : EGL_UNSIGNALED_KHR; *value = eglSync->isSignaled() ? EGL_SIGNALED_KHR : EGL_UNSIGNALED_KHR;
return EGL_TRUE; return EGL_TRUE;
case EGL_SYNC_CONDITION_KHR: case EGL_SYNC_CONDITION_KHR:
......
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