aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/webgl_limits.rs
diff options
context:
space:
mode:
authorMátyás Mustoha <matyas.mustoha@h-lab.eu>2020-04-28 10:00:14 +0200
committerMátyás Mustoha <matyas.mustoha@h-lab.eu>2020-04-30 10:11:11 +0200
commit1431a389daf6fb1f44187628f70b84d0087f3f96 (patch)
tree361801689fb645a691755a90410e71adbd6cc3b3 /components/canvas/webgl_limits.rs
parentff33b88f724704409c1fe675c4ebe05343a7cc5b (diff)
downloadservo-1431a389daf6fb1f44187628f70b84d0087f3f96.tar.gz
servo-1431a389daf6fb1f44187628f70b84d0087f3f96.zip
Add support for WebGL2 MIN_PROGRAM_TEXEL_OFFSET
Improves the support of the WebGL2 `MIN_PROGRAM_TEXEL_OFFSET` property (ie. stores it as a signed integer) and adds support for querying it using GetParameter. See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.2
Diffstat (limited to 'components/canvas/webgl_limits.rs')
-rw-r--r--components/canvas/webgl_limits.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/components/canvas/webgl_limits.rs b/components/canvas/webgl_limits.rs
index ee02825d122..803d5525259 100644
--- a/components/canvas/webgl_limits.rs
+++ b/components/canvas/webgl_limits.rs
@@ -95,7 +95,7 @@ impl GLLimitsDetect for GLLimits {
if webgl_version == WebGLVersion::WebGL2 {
max_uniform_block_size = gl.get_integer64(gl::MAX_UNIFORM_BLOCK_SIZE);
max_uniform_buffer_bindings = gl.get_integer(gl::MAX_UNIFORM_BUFFER_BINDINGS);
- min_program_texel_offset = gl.get_integer(gl::MIN_PROGRAM_TEXEL_OFFSET);
+ min_program_texel_offset = gl.get_signed_integer(gl::MIN_PROGRAM_TEXEL_OFFSET);
max_program_texel_offset = gl.get_integer(gl::MAX_PROGRAM_TEXEL_OFFSET);
max_transform_feedback_separate_attribs =
gl.get_integer(gl::MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS);
@@ -206,9 +206,11 @@ impl GLLimitsDetect for GLLimits {
trait GLExt {
fn try_get_integer(self, parameter: GLenum) -> Option<u32>;
fn try_get_integer64(self, parameter: GLenum) -> Option<u64>;
+ fn try_get_signed_integer(self, parameter: GLenum) -> Option<i32>;
fn try_get_float(self, parameter: GLenum) -> Option<f32>;
fn get_integer(self, parameter: GLenum) -> u32;
fn get_integer64(self, parameter: GLenum) -> u64;
+ fn get_signed_integer(self, parameter: GLenum) -> i32;
fn get_float(self, parameter: GLenum) -> f32;
}
@@ -236,5 +238,12 @@ macro_rules! create_fun {
impl<'a> GLExt for &'a Gl {
create_fun!(try_get_integer, get_integer, i32, get_integer_v, u32);
create_fun!(try_get_integer64, get_integer64, i64, get_integer64_v, u64);
+ create_fun!(
+ try_get_signed_integer,
+ get_signed_integer,
+ i32,
+ get_integer_v,
+ i32
+ );
create_fun!(try_get_float, get_float, f32, get_float_v, f32);
}