aboutsummaryrefslogtreecommitdiffstats
path: root/components/webgpu/lib.rs
diff options
context:
space:
mode:
authorKunal Mohan <kunalmohan99@gmail.com>2020-08-16 12:35:38 +0530
committerKunal Mohan <kunalmohan99@gmail.com>2020-08-16 12:35:38 +0530
commit732efdacbdcabc3aae8c9bd6d817747815a15c26 (patch)
tree2d1d7e23a14aa05d772fcd557cd6df58f593ce30 /components/webgpu/lib.rs
parent216c13cdc4ff631d0917c8269379e8d0f1d29eba (diff)
downloadservo-732efdacbdcabc3aae8c9bd6d817747815a15c26.tar.gz
servo-732efdacbdcabc3aae8c9bd6d817747815a15c26.zip
update wgpu
Diffstat (limited to 'components/webgpu/lib.rs')
-rw-r--r--components/webgpu/lib.rs96
1 files changed, 26 insertions, 70 deletions
diff --git a/components/webgpu/lib.rs b/components/webgpu/lib.rs
index cbfe4cd161e..3c970a87760 100644
--- a/components/webgpu/lib.rs
+++ b/components/webgpu/lib.rs
@@ -21,9 +21,7 @@ use servo_config::pref;
use smallvec::SmallVec;
use std::borrow::Cow;
use std::collections::{HashMap, HashSet};
-use std::ffi::CString;
use std::num::NonZeroU64;
-use std::ptr;
use std::rc::Rc;
use std::slice;
use std::sync::{Arc, Mutex};
@@ -33,13 +31,19 @@ use webrender_traits::{
WebrenderImageSource,
};
use wgpu::{
- binding_model::BindGroupDescriptor,
- command::{BufferCopyView, ComputePass, RenderBundleEncoder, RenderPass, TextureCopyView},
+ binding_model::{BindGroupDescriptor, BindGroupLayoutDescriptor, PipelineLayoutDescriptor},
+ command::{
+ BufferCopyView, ComputePass, RenderBundleDescriptor, RenderBundleEncoder, RenderPass,
+ TextureCopyView,
+ },
device::HostMap,
id,
instance::RequestAdapterOptions,
pipeline::{ComputePipelineDescriptor, RenderPipelineDescriptor},
- resource::{BufferMapAsyncStatus, BufferMapOperation},
+ resource::{
+ BufferDescriptor, BufferMapAsyncStatus, BufferMapOperation, SamplerDescriptor,
+ TextureDescriptor, TextureViewDescriptor,
+ },
};
pub type ErrorScopeId = NonZeroU64;
@@ -119,19 +123,19 @@ pub enum WebGPURequest {
CreateBindGroupLayout {
device_id: id::DeviceId,
bind_group_layout_id: id::BindGroupLayoutId,
- descriptor: Option<wgt::BindGroupLayoutDescriptor<'static>>,
+ descriptor: Option<BindGroupLayoutDescriptor<'static>>,
},
CreateBuffer {
device_id: id::DeviceId,
buffer_id: id::BufferId,
- descriptor: Option<wgt::BufferDescriptor<Option<String>>>,
+ descriptor: Option<BufferDescriptor<'static>>,
},
CreateCommandEncoder {
device_id: id::DeviceId,
// TODO(zakorgy): Serialize CommandEncoderDescriptor in wgpu-core
// wgpu::command::CommandEncoderDescriptor,
command_encoder_id: id::CommandEncoderId,
- label: Option<String>,
+ label: Option<Cow<'static, str>>,
},
CreateComputePipeline {
device_id: id::DeviceId,
@@ -142,7 +146,7 @@ pub enum WebGPURequest {
CreatePipelineLayout {
device_id: id::DeviceId,
pipeline_layout_id: id::PipelineLayoutId,
- descriptor: wgt::PipelineLayoutDescriptor<'static, id::BindGroupLayoutId>,
+ descriptor: PipelineLayoutDescriptor<'static>,
},
CreateRenderPipeline {
device_id: id::DeviceId,
@@ -152,7 +156,7 @@ pub enum WebGPURequest {
CreateSampler {
device_id: id::DeviceId,
sampler_id: id::SamplerId,
- descriptor: wgt::SamplerDescriptor<Option<String>>,
+ descriptor: SamplerDescriptor<'static>,
},
CreateShaderModule {
device_id: id::DeviceId,
@@ -170,13 +174,13 @@ pub enum WebGPURequest {
CreateTexture {
device_id: id::DeviceId,
texture_id: id::TextureId,
- descriptor: Option<wgt::TextureDescriptor<Option<String>>>,
+ descriptor: Option<TextureDescriptor<'static>>,
},
CreateTextureView {
texture_id: id::TextureId,
texture_view_id: id::TextureViewId,
device_id: id::DeviceId,
- descriptor: Option<wgt::TextureViewDescriptor<Option<String>>>,
+ descriptor: Option<TextureViewDescriptor<'static>>,
},
DestroyBuffer(id::BufferId),
DestroySwapChain {
@@ -189,7 +193,7 @@ pub enum WebGPURequest {
FreeDevice(id::DeviceId),
RenderBundleEncoderFinish {
render_bundle_encoder: RenderBundleEncoder,
- descriptor: wgt::RenderBundleDescriptor<Option<String>>,
+ descriptor: RenderBundleDescriptor<'static>,
render_bundle_id: id::RenderBundleId,
device_id: id::DeviceId,
},
@@ -579,16 +583,8 @@ impl<'a> WGPU<'a> {
} => {
let global = &self.global;
if let Some(desc) = descriptor {
- let st;
- let label = match desc.label {
- Some(ref s) => {
- st = CString::new(s.as_bytes()).unwrap();
- st.as_ptr()
- },
- None => ptr::null(),
- };
let result = gfx_select!(buffer_id =>
- global.device_create_buffer(device_id, &desc.map_label(|_| label), buffer_id));
+ global.device_create_buffer(device_id, &desc, buffer_id));
if result.is_err() {
let _ = gfx_select!(buffer_id => global.buffer_error(buffer_id));
}
@@ -603,14 +599,6 @@ impl<'a> WGPU<'a> {
label,
} => {
let global = &self.global;
- let st;
- let label = match label {
- Some(ref s) => {
- st = CString::new(s.as_bytes()).unwrap();
- st.as_ptr()
- },
- None => ptr::null(),
- };
let desc = wgt::CommandEncoderDescriptor { label };
let result = gfx_select!(command_encoder_id =>
global.device_create_command_encoder(device_id, &desc, command_encoder_id));
@@ -626,7 +614,7 @@ impl<'a> WGPU<'a> {
} => {
let global = &self.global;
let result = gfx_select!(compute_pipeline_id =>
- global.device_create_compute_pipeline(device_id, &descriptor, compute_pipeline_id));
+ global.device_create_compute_pipeline(device_id, &descriptor, compute_pipeline_id, None));
if result.is_err() {
let _ = gfx_select!(compute_pipeline_id =>
global.compute_pipeline_error(compute_pipeline_id));
@@ -664,7 +652,7 @@ impl<'a> WGPU<'a> {
let global = &self.global;
if let Some(desc) = descriptor {
let result = gfx_select!(render_pipeline_id =>
- global.device_create_render_pipeline(device_id, &desc, render_pipeline_id));
+ global.device_create_render_pipeline(device_id, &desc, render_pipeline_id, None));
if result.is_err() {
let _ = gfx_select!(render_pipeline_id =>
global.render_pipeline_error(render_pipeline_id));
@@ -680,17 +668,9 @@ impl<'a> WGPU<'a> {
descriptor,
} => {
let global = &self.global;
- let st;
- let label = match descriptor.label {
- Some(ref s) => {
- st = CString::new(s.as_bytes()).unwrap();
- st.as_ptr()
- },
- None => ptr::null(),
- };
let result = gfx_select!(sampler_id => global.device_create_sampler(
device_id,
- &descriptor.map_label(|_| label),
+ &descriptor,
sampler_id
));
if result.is_err() {
@@ -763,17 +743,9 @@ impl<'a> WGPU<'a> {
} => {
let global = &self.global;
if let Some(desc) = descriptor {
- let st;
- let label = match desc.label {
- Some(ref s) => {
- st = CString::new(s.as_bytes()).unwrap();
- st.as_ptr()
- },
- None => ptr::null(),
- };
let result = gfx_select!(texture_id => global.device_create_texture(
device_id,
- &desc.map_label(|_| label),
+ &desc,
texture_id
));
if result.is_err() {
@@ -792,17 +764,9 @@ impl<'a> WGPU<'a> {
} => {
let global = &self.global;
if let Some(desc) = descriptor {
- let st;
- let label = match desc.label {
- Some(ref s) => {
- st = CString::new(s.as_bytes()).unwrap();
- st.as_ptr()
- },
- None => ptr::null(),
- };
let result = gfx_select!(texture_view_id => global.texture_create_view(
texture_id,
- Some(&desc.map_label(|_| label)),
+ &desc,
texture_view_id
));
if result.is_err() {
@@ -877,17 +841,9 @@ impl<'a> WGPU<'a> {
device_id,
} => {
let global = &self.global;
- let st;
- let label = match descriptor.label {
- Some(ref s) => {
- st = CString::new(s.as_bytes()).unwrap();
- st.as_ptr()
- },
- None => ptr::null(),
- };
let result = gfx_select!(render_bundle_id => global.render_bundle_encoder_finish(
render_bundle_encoder,
- &descriptor.map_label(|_| label),
+ &descriptor,
render_bundle_id
));
if result.is_err() {
@@ -1051,7 +1007,7 @@ impl<'a> WGPU<'a> {
let buffer_size =
(buffer_stride * size.height as u32) as wgt::BufferAddress;
let buffer_desc = wgt::BufferDescriptor {
- label: ptr::null(),
+ label: None,
size: buffer_size,
usage: wgt::BufferUsage::MAP_READ |
wgt::BufferUsage::COPY_DST,
@@ -1079,7 +1035,7 @@ impl<'a> WGPU<'a> {
let buffer_size =
(size.height as u32 * buffer_stride) as wgt::BufferAddress;
- let comm_desc = wgt::CommandEncoderDescriptor { label: ptr::null() };
+ let comm_desc = wgt::CommandEncoderDescriptor { label: None };
let _ = gfx_select!(encoder_id => global.device_create_command_encoder(
device_id,
&comm_desc,