mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #25521 - szeged:mmatyas__webgl_fns_rastdisc, r=nox
Add support for WebGL2 `RASTERIZER_DISCARD` enum. Add support for the `RASTERIZER_DISCARD` enum for the WebGL2 version of the `Enable`, `Disable` and `IsEnabled` functions. See https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.2 <!-- Please describe your changes on the following line: --> cc @jdm @zakorgy @imiklos Note: The test results may depend on #25519. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
commit
85ea8df00c
4 changed files with 26 additions and 40 deletions
|
@ -71,6 +71,7 @@ pub struct WebGL2RenderingContext {
|
|||
texture_pack_row_length: Cell<usize>,
|
||||
texture_pack_skip_pixels: Cell<usize>,
|
||||
texture_pack_skip_rows: Cell<usize>,
|
||||
enable_rasterizer_discard: Cell<bool>,
|
||||
}
|
||||
|
||||
fn typedarray_elem_size(typeid: Type) -> usize {
|
||||
|
@ -124,6 +125,7 @@ impl WebGL2RenderingContext {
|
|||
texture_pack_row_length: Cell::new(0),
|
||||
texture_pack_skip_pixels: Cell::new(0),
|
||||
texture_pack_skip_rows: Cell::new(0),
|
||||
enable_rasterizer_discard: Cell::new(false),
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -991,12 +993,24 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
|
|||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||
fn Enable(&self, cap: u32) {
|
||||
self.base.Enable(cap)
|
||||
match cap {
|
||||
constants::RASTERIZER_DISCARD => {
|
||||
self.enable_rasterizer_discard.set(true);
|
||||
self.base.send_command(WebGLCommand::Enable(cap));
|
||||
},
|
||||
_ => self.base.Enable(cap),
|
||||
}
|
||||
}
|
||||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||
fn Disable(&self, cap: u32) {
|
||||
self.base.Disable(cap)
|
||||
match cap {
|
||||
constants::RASTERIZER_DISCARD => {
|
||||
self.enable_rasterizer_discard.set(false);
|
||||
self.base.send_command(WebGLCommand::Disable(cap));
|
||||
},
|
||||
_ => self.base.Disable(cap),
|
||||
}
|
||||
}
|
||||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
|
||||
|
@ -1200,9 +1214,12 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
|
|||
}
|
||||
|
||||
// TODO: We could write this without IPC, recording the calls to `enable` and `disable`.
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.2
|
||||
fn IsEnabled(&self, cap: u32) -> bool {
|
||||
self.base.IsEnabled(cap)
|
||||
match cap {
|
||||
constants::RASTERIZER_DISCARD => self.enable_rasterizer_discard.get(),
|
||||
_ => self.base.IsEnabled(cap),
|
||||
}
|
||||
}
|
||||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue