mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Make TexImage2D and TexSubImage2D struct variants
This commit is contained in:
parent
da43e35ab2
commit
65d1b11929
3 changed files with 70 additions and 47 deletions
|
@ -1042,47 +1042,51 @@ impl WebGLImpl {
|
||||||
WebGLCommand::SetViewport(x, y, width, height) => {
|
WebGLCommand::SetViewport(x, y, width, height) => {
|
||||||
ctx.gl().viewport(x, y, width, height);
|
ctx.gl().viewport(x, y, width, height);
|
||||||
},
|
},
|
||||||
WebGLCommand::TexImage2D(
|
WebGLCommand::TexImage2D {
|
||||||
target,
|
target,
|
||||||
level,
|
level,
|
||||||
internal,
|
internal_format,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
format,
|
format,
|
||||||
data_type,
|
data_type,
|
||||||
ref chan,
|
ref receiver,
|
||||||
) => ctx.gl().tex_image_2d(
|
} => {
|
||||||
|
ctx.gl().tex_image_2d(
|
||||||
target,
|
target,
|
||||||
level,
|
level as i32,
|
||||||
internal,
|
internal_format as i32,
|
||||||
width,
|
width as i32,
|
||||||
height,
|
height as i32,
|
||||||
0,
|
0,
|
||||||
format,
|
format,
|
||||||
data_type,
|
data_type,
|
||||||
Some(&chan.recv().unwrap()),
|
Some(&receiver.recv().unwrap()),
|
||||||
),
|
);
|
||||||
WebGLCommand::TexSubImage2D(
|
},
|
||||||
|
WebGLCommand::TexSubImage2D {
|
||||||
target,
|
target,
|
||||||
level,
|
level,
|
||||||
xoffset,
|
xoffset,
|
||||||
yoffset,
|
yoffset,
|
||||||
x,
|
|
||||||
y,
|
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
ref chan,
|
format,
|
||||||
) => ctx.gl().tex_sub_image_2d(
|
data_type,
|
||||||
|
ref receiver,
|
||||||
|
} => {
|
||||||
|
ctx.gl().tex_sub_image_2d(
|
||||||
target,
|
target,
|
||||||
level,
|
level as i32,
|
||||||
xoffset,
|
xoffset,
|
||||||
yoffset,
|
yoffset,
|
||||||
x,
|
width as i32,
|
||||||
y,
|
height as i32,
|
||||||
width,
|
format,
|
||||||
height,
|
data_type,
|
||||||
&chan.recv().unwrap(),
|
&receiver.recv().unwrap(),
|
||||||
),
|
);
|
||||||
|
},
|
||||||
WebGLCommand::DrawingBufferWidth(ref sender) => sender
|
WebGLCommand::DrawingBufferWidth(ref sender) => sender
|
||||||
.send(ctx.borrow_draw_buffer().unwrap().size().width)
|
.send(ctx.borrow_draw_buffer().unwrap().size().width)
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
|
|
|
@ -272,8 +272,27 @@ pub enum WebGLCommand {
|
||||||
VertexAttribPointer(u32, i32, u32, bool, i32, u32),
|
VertexAttribPointer(u32, i32, u32, bool, i32, u32),
|
||||||
VertexAttribPointer2f(u32, i32, bool, i32, u32),
|
VertexAttribPointer2f(u32, i32, bool, i32, u32),
|
||||||
SetViewport(i32, i32, i32, i32),
|
SetViewport(i32, i32, i32, i32),
|
||||||
TexImage2D(u32, i32, i32, i32, i32, u32, u32, IpcBytesReceiver),
|
TexImage2D {
|
||||||
TexSubImage2D(u32, i32, i32, i32, i32, i32, u32, u32, IpcBytesReceiver),
|
target: u32,
|
||||||
|
level: u32,
|
||||||
|
internal_format: u32,
|
||||||
|
width: u32,
|
||||||
|
height: u32,
|
||||||
|
format: u32,
|
||||||
|
data_type: u32,
|
||||||
|
receiver: IpcBytesReceiver,
|
||||||
|
},
|
||||||
|
TexSubImage2D {
|
||||||
|
target: u32,
|
||||||
|
level: u32,
|
||||||
|
xoffset: i32,
|
||||||
|
yoffset: i32,
|
||||||
|
width: u32,
|
||||||
|
height: u32,
|
||||||
|
format: u32,
|
||||||
|
data_type: u32,
|
||||||
|
receiver: IpcBytesReceiver,
|
||||||
|
},
|
||||||
DrawingBufferWidth(WebGLSender<i32>),
|
DrawingBufferWidth(WebGLSender<i32>),
|
||||||
DrawingBufferHeight(WebGLSender<i32>),
|
DrawingBufferHeight(WebGLSender<i32>),
|
||||||
Finish(WebGLSender<()>),
|
Finish(WebGLSender<()>),
|
||||||
|
|
|
@ -739,16 +739,16 @@ impl WebGLRenderingContext {
|
||||||
|
|
||||||
// TODO(emilio): convert colorspace if requested
|
// TODO(emilio): convert colorspace if requested
|
||||||
let (sender, receiver) = ipc::bytes_channel().unwrap();
|
let (sender, receiver) = ipc::bytes_channel().unwrap();
|
||||||
self.send_command(WebGLCommand::TexImage2D(
|
self.send_command(WebGLCommand::TexImage2D {
|
||||||
target.as_gl_constant(),
|
target: target.as_gl_constant(),
|
||||||
level as i32,
|
level,
|
||||||
internal_format as i32,
|
internal_format,
|
||||||
width as i32,
|
width,
|
||||||
height as i32,
|
height,
|
||||||
format,
|
format,
|
||||||
self.extension_manager.effective_type(data_type),
|
data_type: self.extension_manager.effective_type(data_type),
|
||||||
receiver,
|
receiver,
|
||||||
));
|
});
|
||||||
sender.send(&pixels).unwrap();
|
sender.send(&pixels).unwrap();
|
||||||
|
|
||||||
if let Some(fb) = self.bound_framebuffer.get() {
|
if let Some(fb) = self.bound_framebuffer.get() {
|
||||||
|
@ -817,17 +817,17 @@ impl WebGLRenderingContext {
|
||||||
|
|
||||||
// TODO(emilio): convert colorspace if requested
|
// TODO(emilio): convert colorspace if requested
|
||||||
let (sender, receiver) = ipc::bytes_channel().unwrap();
|
let (sender, receiver) = ipc::bytes_channel().unwrap();
|
||||||
self.send_command(WebGLCommand::TexSubImage2D(
|
self.send_command(WebGLCommand::TexSubImage2D {
|
||||||
target.as_gl_constant(),
|
target: target.as_gl_constant(),
|
||||||
level as i32,
|
level,
|
||||||
xoffset,
|
xoffset,
|
||||||
yoffset,
|
yoffset,
|
||||||
width as i32,
|
width,
|
||||||
height as i32,
|
height,
|
||||||
format.as_gl_constant(),
|
format: format.as_gl_constant(),
|
||||||
data_type.as_gl_constant(),
|
data_type: data_type.as_gl_constant(),
|
||||||
receiver,
|
receiver,
|
||||||
));
|
});
|
||||||
sender.send(&pixels).unwrap();
|
sender.send(&pixels).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue