mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
webgl: Implement multiple calls and improve error detection
This commit implements WebGL's: * cullFace * frontFace * enable * disable * depthMask * colorMask * clearDepth * clearStencil * depthFunc * depthRange * hint * lineWidth * pixelStorei * polygonOffset * texParameteri * texParameterf * texImage2D (partially) It inlines a lot of OpenGL calls to keep the file `components/canvas/webgl_paint_task.rs` as small as possible while keeping readability. It also improves error detection on previous calls, and sets node damage on the canvas in the drawing calls. It adds a `TexImage2D` reftest, even though it's not enabled because: * WebGL paints the image when it loads (asynchronously), so the reftest doesn't wait for it and it finishes early * If we change the source for the base64 src of the image it works as expected in non-headless mode, but the test harness locks
This commit is contained in:
parent
af3310f149
commit
6341c77700
12 changed files with 763 additions and 226 deletions
|
@ -128,6 +128,16 @@ pub enum CanvasWebGLMsg {
|
|||
BufferData(u32, Vec<f32>, u32),
|
||||
Clear(u32),
|
||||
ClearColor(f32, f32, f32, f32),
|
||||
ClearDepth(f64),
|
||||
ClearStencil(i32),
|
||||
ColorMask(bool, bool, bool, bool),
|
||||
CullFace(u32),
|
||||
FrontFace(u32),
|
||||
DepthFunc(u32),
|
||||
DepthMask(bool),
|
||||
DepthRange(f64, f64),
|
||||
Enable(u32),
|
||||
Disable(u32),
|
||||
CompileShader(u32),
|
||||
CreateBuffer(IpcSender<Option<NonZero<u32>>>),
|
||||
CreateFramebuffer(IpcSender<Option<NonZero<u32>>>),
|
||||
|
@ -151,12 +161,19 @@ pub enum CanvasWebGLMsg {
|
|||
GetShaderParameter(u32, u32, IpcSender<WebGLShaderParameter>),
|
||||
GetAttribLocation(u32, String, IpcSender<Option<i32>>),
|
||||
GetUniformLocation(u32, String, IpcSender<Option<i32>>),
|
||||
PolygonOffset(f32, f32),
|
||||
Hint(u32, u32),
|
||||
LineWidth(f32),
|
||||
PixelStorei(u32, i32),
|
||||
LinkProgram(u32),
|
||||
ShaderSource(u32, String),
|
||||
Uniform4fv(i32, Vec<f32>),
|
||||
UseProgram(u32),
|
||||
VertexAttribPointer2f(u32, i32, bool, i32, i64),
|
||||
VertexAttribPointer2f(u32, i32, bool, i32, u32),
|
||||
Viewport(i32, i32, i32, i32),
|
||||
TexImage2D(u32, i32, i32, i32, i32, u32, u32, Vec<u8>),
|
||||
TexParameteri(u32, u32, i32),
|
||||
TexParameterf(u32, u32, f32),
|
||||
DrawingBufferWidth(IpcSender<i32>),
|
||||
DrawingBufferHeight(IpcSender<i32>),
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue