diff options
author | bors-servo <servo-ops@mozilla.com> | 2020-04-29 23:49:55 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-29 23:49:55 -0400 |
commit | 3bedd440265864bc713b4f3d620b65cfc58b7381 (patch) | |
tree | 95a73052ea8332d0c90e8d96f512c6537622e3dd /components/script/dom/webgl2renderingcontext.rs | |
parent | 343f249c1d1dbd46d0712e34c1baa9aafe19a75a (diff) | |
parent | c5f0bff99ef5c897b5034fc72a3e407057e9dd2d (diff) | |
download | servo-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.rs | 66 |
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 { |