Lines Matching defs:gsync

42 egl_g3d_wait_sync_condvar(struct egl_g3d_sync *gsync, EGLTimeKHR timeout)
44 _EGLDisplay *dpy = gsync->base.Resource.Display;
46 pipe_mutex_lock(gsync->mutex);
52 pipe_condvar_wait(gsync->condvar, gsync->mutex);
56 pipe_mutex_unlock(gsync->mutex);
65 egl_g3d_signal_sync_condvar(struct egl_g3d_sync *gsync)
67 pipe_mutex_lock(gsync->mutex);
68 pipe_condvar_broadcast(gsync->condvar);
69 pipe_mutex_unlock(gsync->mutex);
76 egl_g3d_insert_fence_sync(struct egl_g3d_sync *gsync)
85 gctx->stctxi->flush(gctx->stctxi, 0x0, &gsync->fence);
86 if (!gsync->fence)
87 gsync->base.SyncStatus = EGL_SIGNALED_KHR;
96 egl_g3d_wait_fence_sync(struct egl_g3d_sync *gsync, EGLTimeKHR timeout)
100 if (gsync->fence) {
101 _EGLDisplay *dpy = gsync->base.Resource.Display;
104 struct pipe_fence_handle *fence = gsync->fence;
106 gsync->fence = NULL;
114 gsync->base.SyncStatus = EGL_SIGNALED_KHR;
117 egl_g3d_signal_sync_condvar(gsync);
120 ret = egl_g3d_wait_sync_condvar(gsync, timeout);
127 egl_g3d_ref_sync(struct egl_g3d_sync *gsync)
129 _eglGetSync(&gsync->base);
133 egl_g3d_unref_sync(struct egl_g3d_sync *gsync)
135 if (_eglPutSync(&gsync->base)) {
136 pipe_condvar_destroy(gsync->condvar);
137 pipe_mutex_destroy(gsync->mutex);
139 if (gsync->fence) {
141 egl_g3d_display(gsync->base.Resource.Display);
144 screen->fence_reference(screen, &gsync->fence, NULL);
147 FREE(gsync);
156 struct egl_g3d_sync *gsync;
164 gsync = CALLOC_STRUCT(egl_g3d_sync);
165 if (!gsync) {
170 if (!_eglInitSync(&gsync->base, dpy, type, attrib_list)) {
171 FREE(gsync);
180 err = egl_g3d_insert_fence_sync(gsync);
189 FREE(gsync);
193 pipe_mutex_init(gsync->mutex);
194 pipe_condvar_init(gsync->condvar);
196 return &gsync->base;
202 struct egl_g3d_sync *gsync = egl_g3d_sync(sync);
204 switch (gsync->base.Type) {
207 if (gsync->base.SyncStatus != EGL_SIGNALED_KHR) {
208 gsync->base.SyncStatus = EGL_SIGNALED_KHR;
209 egl_g3d_signal_sync_condvar(gsync);
216 egl_g3d_unref_sync(gsync);
225 struct egl_g3d_sync *gsync = egl_g3d_sync(sync);
228 if (gsync->base.SyncStatus != EGL_SIGNALED_KHR) {
240 egl_g3d_ref_sync(gsync);
242 switch (gsync->base.Type) {
244 ret = egl_g3d_wait_sync_condvar(gsync, timeout);
247 ret = egl_g3d_wait_fence_sync(gsync, timeout);
252 egl_g3d_unref_sync(gsync);
266 struct egl_g3d_sync *gsync = egl_g3d_sync(sync);
272 if (gsync->base.SyncStatus != mode) {
273 gsync->base.SyncStatus = mode;
275 egl_g3d_signal_sync_condvar(gsync);