diff options
author | Istvan Miklos <istvan.miklos@h-lab.eu> | 2019-09-16 10:21:50 +0200 |
---|---|---|
committer | Istvan Miklos <istvan.miklos@h-lab.eu> | 2019-10-02 12:51:32 +0200 |
commit | 248545ddda503e06bc59b5274c63a6c25da4b355 (patch) | |
tree | b1c7614309ab6d6d6eef5630d989405fe8b97631 /components/canvas/webgl_thread.rs | |
parent | 9706cd497da0fcc30c9af04b7d3dc0d4e9d7c8fb (diff) | |
download | servo-248545ddda503e06bc59b5274c63a6c25da4b355.tar.gz servo-248545ddda503e06bc59b5274c63a6c25da4b355.zip |
Initial implementation of WebGLSync
This patch adds initial support for WebGLSync.
Note:
There is no test for the isSync, deleteSync and waitSync functions in the `conformance2/sync/sync-webgl-specific.html`.
Diffstat (limited to 'components/canvas/webgl_thread.rs')
-rw-r--r-- | components/canvas/webgl_thread.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 6fa60d3d7c3..65eeff2a7c1 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -1360,6 +1360,33 @@ impl WebGLImpl { } sender.send(value[0] != 0).unwrap() }, + WebGLCommand::FenceSync(ref sender) => { + let value = ctx.gl().fence_sync(gl::SYNC_GPU_COMMANDS_COMPLETE, 0); + sender + .send(unsafe { WebGLSyncId::new(value as u64) }) + .unwrap(); + }, + WebGLCommand::IsSync(sync_id, ref sender) => { + let value = ctx.gl().is_sync(sync_id.get() as *const _); + sender.send(value).unwrap(); + }, + WebGLCommand::ClientWaitSync(sync_id, flags, timeout, ref sender) => { + let value = + ctx.gl() + .client_wait_sync(sync_id.get() as *const _, flags, timeout as u64); + sender.send(value).unwrap(); + }, + WebGLCommand::WaitSync(sync_id, flags, timeout) => { + ctx.gl() + .wait_sync(sync_id.get() as *const _, flags, timeout as u64); + }, + WebGLCommand::GetSyncParameter(sync_id, param, ref sender) => { + let value = ctx.gl().get_sync_iv(sync_id.get() as *const _, param); + sender.send(value[0] as u32).unwrap(); + }, + WebGLCommand::DeleteSync(sync_id) => { + ctx.gl().delete_sync(sync_id.get() as *const _); + }, WebGLCommand::GetParameterBool4(param, ref sender) => { let mut value = [0; 4]; unsafe { |