mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Implement GPUQueue.writeBuffer and GPUQueue.writeTexture
This commit is contained in:
parent
8ef7f24541
commit
fae66089fa
7 changed files with 199 additions and 12 deletions
|
@ -208,6 +208,19 @@ pub enum WebGPURequest {
|
|||
external_id: u64,
|
||||
buffer_size: usize,
|
||||
},
|
||||
WriteBuffer {
|
||||
queue_id: id::QueueId,
|
||||
buffer_id: id::BufferId,
|
||||
buffer_offset: u64,
|
||||
data: IpcSharedMemory,
|
||||
},
|
||||
WriteTexture {
|
||||
queue_id: id::QueueId,
|
||||
texture_cv: TextureCopyView,
|
||||
data_layout: wgt::TextureDataLayout,
|
||||
size: wgt::Extent3d,
|
||||
data: IpcSharedMemory,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
|
@ -1023,6 +1036,36 @@ impl<'a> WGPU<'a> {
|
|||
gfx_select!(buffer_id => global.buffer_unmap(buffer_id));
|
||||
self.present_buffer_maps.remove(&buffer_id);
|
||||
},
|
||||
WebGPURequest::WriteBuffer {
|
||||
queue_id,
|
||||
buffer_id,
|
||||
buffer_offset,
|
||||
data,
|
||||
} => {
|
||||
let global = &self.global;
|
||||
gfx_select!(queue_id => global.queue_write_buffer(
|
||||
queue_id,
|
||||
buffer_id,
|
||||
buffer_offset as wgt::BufferAddress,
|
||||
&data
|
||||
));
|
||||
},
|
||||
WebGPURequest::WriteTexture {
|
||||
queue_id,
|
||||
texture_cv,
|
||||
data_layout,
|
||||
size,
|
||||
data,
|
||||
} => {
|
||||
let global = &self.global;
|
||||
gfx_select!(queue_id => global.queue_write_texture(
|
||||
queue_id,
|
||||
&texture_cv,
|
||||
&data,
|
||||
&data_layout,
|
||||
&size
|
||||
));
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue