Implement GPUQueue.writeBuffer and GPUQueue.writeTexture

This commit is contained in:
Kunal Mohan 2020-07-04 13:29:23 +05:30
parent 8ef7f24541
commit fae66089fa
7 changed files with 199 additions and 12 deletions

View file

@ -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
));
},
}
}
}