aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas
diff options
context:
space:
mode:
Diffstat (limited to 'components/canvas')
-rw-r--r--components/canvas/gl_context.rs1
-rw-r--r--components/canvas/webgl_thread.rs27
2 files changed, 28 insertions, 0 deletions
diff --git a/components/canvas/gl_context.rs b/components/canvas/gl_context.rs
index 018300129b9..886e6dea39a 100644
--- a/components/canvas/gl_context.rs
+++ b/components/canvas/gl_context.rs
@@ -238,6 +238,7 @@ fn map_limits(limits: RawGLLimits) -> GLLimits {
max_varying_vectors: limits.max_varying_vectors,
max_vertex_texture_image_units: limits.max_vertex_texture_image_units,
max_vertex_uniform_vectors: limits.max_vertex_uniform_vectors,
+ max_client_wait_timeout_webgl: std::time::Duration::new(1, 0),
}
}
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 {