aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webgl2renderingcontext.rs
diff options
context:
space:
mode:
authorbors-servo <servo-ops@mozilla.com>2020-04-29 23:49:55 -0400
committerGitHub <noreply@github.com>2020-04-29 23:49:55 -0400
commit3bedd440265864bc713b4f3d620b65cfc58b7381 (patch)
tree95a73052ea8332d0c90e8d96f512c6537622e3dd /components/script/dom/webgl2renderingcontext.rs
parent343f249c1d1dbd46d0712e34c1baa9aafe19a75a (diff)
parentc5f0bff99ef5c897b5034fc72a3e407057e9dd2d (diff)
downloadservo-3bedd440265864bc713b4f3d620b65cfc58b7381.tar.gz
servo-3bedd440265864bc713b4f3d620b65cfc58b7381.zip
Auto merge of #26354 - jdm:mmatyas__webgl_fns_getparam2, r=jdm
Add support for some more WebGL2 limit parameters Adds support for the following new WebGL2 GetParameter values: - `MAX_ELEMENT_INDEX` - `MAX_ELEMENTS_INDICES` - `MAX_ELEMENTS_VERTICES` - `MAX_FRAGMENT_INPUT_COMPONENTS` - `MAX_SAMPLES` - `MAX_SERVER_WAIT_TIMEOUT` - `MAX_TEXTURE_LOD_BIAS` - `MAX_VARYING_COMPONENTS` - `MAX_VERTEX_OUTPUT_COMPONENTS` See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.2
Diffstat (limited to 'components/script/dom/webgl2renderingcontext.rs')
-rw-r--r--components/script/dom/webgl2renderingcontext.rs66
1 files changed, 49 insertions, 17 deletions
diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs
index 116de787178..6ed42deea01 100644
--- a/components/script/dom/webgl2renderingcontext.rs
+++ b/components/script/dom/webgl2renderingcontext.rs
@@ -888,10 +888,13 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
return rval.get();
},
constants::MAX_CLIENT_WAIT_TIMEOUT_WEBGL => {
- return Int32Value(
- self.base.limits().max_client_wait_timeout_webgl.as_nanos() as i32
+ return DoubleValue(
+ self.base.limits().max_client_wait_timeout_webgl.as_nanos() as f64
);
},
+ constants::MAX_SERVER_WAIT_TIMEOUT => {
+ return DoubleValue(self.base.limits().max_server_wait_timeout.as_nanos() as f64);
+ },
constants::SAMPLER_BINDING => unsafe {
let idx = (self.base.textures().active_unit_enum() - constants::TEXTURE0) as usize;
assert!(idx < self.samplers.len());
@@ -973,22 +976,59 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
};
return UInt32Value(buffer);
},
+ constants::MAX_TEXTURE_LOD_BIAS => {
+ return DoubleValue(self.base.limits().max_texture_lod_bias as f64)
+ },
+ constants::MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS => {
+ return DoubleValue(
+ self.base.limits().max_combined_fragment_uniform_components as f64,
+ )
+ },
+ constants::MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS => {
+ return DoubleValue(
+ self.base.limits().max_combined_vertex_uniform_components as f64,
+ )
+ },
+ constants::MAX_ELEMENT_INDEX => {
+ return DoubleValue(self.base.limits().max_element_index as f64)
+ },
+ constants::MAX_UNIFORM_BLOCK_SIZE => {
+ return DoubleValue(self.base.limits().max_uniform_block_size as f64)
+ },
_ => {},
}
let limit = match parameter {
- constants::MAX_UNIFORM_BUFFER_BINDINGS => {
- Some(self.base.limits().max_uniform_buffer_bindings)
+ constants::MAX_3D_TEXTURE_SIZE => Some(self.base.limits().max_3d_texture_size),
+ constants::MAX_ARRAY_TEXTURE_LAYERS => {
+ Some(self.base.limits().max_array_texture_layers)
},
- constants::MAX_UNIFORM_BLOCK_SIZE => Some(self.base.limits().max_uniform_block_size),
+ constants::MAX_COLOR_ATTACHMENTS => Some(self.base.limits().max_color_attachments),
constants::MAX_COMBINED_UNIFORM_BLOCKS => {
Some(self.base.limits().max_combined_uniform_blocks)
},
- constants::MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS => {
- Some(self.base.limits().max_combined_vertex_uniform_components)
+ constants::MAX_DRAW_BUFFERS => Some(self.base.limits().max_draw_buffers),
+ constants::MAX_ELEMENTS_INDICES => Some(self.base.limits().max_elements_indices),
+ constants::MAX_ELEMENTS_VERTICES => Some(self.base.limits().max_elements_vertices),
+ constants::MAX_FRAGMENT_INPUT_COMPONENTS => {
+ Some(self.base.limits().max_fragment_input_components)
},
- constants::MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS => {
- Some(self.base.limits().max_combined_fragment_uniform_components)
+ constants::MAX_FRAGMENT_UNIFORM_BLOCKS => {
+ Some(self.base.limits().max_fragment_uniform_blocks)
+ },
+ constants::MAX_FRAGMENT_UNIFORM_COMPONENTS => {
+ Some(self.base.limits().max_fragment_uniform_components)
+ },
+ constants::MAX_PROGRAM_TEXEL_OFFSET => {
+ Some(self.base.limits().max_program_texel_offset)
+ },
+ constants::MAX_SAMPLES => Some(self.base.limits().max_samples),
+ constants::MAX_UNIFORM_BUFFER_BINDINGS => {
+ Some(self.base.limits().max_uniform_buffer_bindings)
+ },
+ constants::MAX_VARYING_COMPONENTS => Some(self.base.limits().max_varying_components),
+ constants::MAX_VERTEX_OUTPUT_COMPONENTS => {
+ Some(self.base.limits().max_vertex_output_components)
},
constants::MAX_VERTEX_UNIFORM_BLOCKS => {
Some(self.base.limits().max_vertex_uniform_blocks)
@@ -996,17 +1036,9 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
constants::MAX_VERTEX_UNIFORM_COMPONENTS => {
Some(self.base.limits().max_vertex_uniform_components)
},
- constants::MAX_FRAGMENT_UNIFORM_BLOCKS => {
- Some(self.base.limits().max_fragment_uniform_blocks)
- },
- constants::MAX_FRAGMENT_UNIFORM_COMPONENTS => {
- Some(self.base.limits().max_fragment_uniform_components)
- },
constants::UNIFORM_BUFFER_OFFSET_ALIGNMENT => {
Some(self.base.limits().uniform_buffer_offset_alignment)
},
- constants::MAX_COLOR_ATTACHMENTS => Some(self.base.limits().max_color_attachments),
- constants::MAX_DRAW_BUFFERS => Some(self.base.limits().max_draw_buffers),
_ => None,
};
if let Some(limit) = limit {