update wgpu and some cleanup

This commit is contained in:
Kunal Mohan 2020-08-17 13:33:54 +05:30
parent 62c7cb4c79
commit 8c576bb02b
4 changed files with 25 additions and 72 deletions

4
Cargo.lock generated
View file

@ -6955,7 +6955,7 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core" name = "wgpu-core"
version = "0.5.0" version = "0.5.0"
source = "git+https://github.com/gfx-rs/wgpu#7e8b51b4286bd9452567eb1a56edb8e9b7c7f684" source = "git+https://github.com/gfx-rs/wgpu#f7ec6cc1fe73651cfeda44295cd41533ec60f850"
dependencies = [ dependencies = [
"arrayvec 0.5.1", "arrayvec 0.5.1",
"bitflags", "bitflags",
@ -6982,7 +6982,7 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-types" name = "wgpu-types"
version = "0.5.0" version = "0.5.0"
source = "git+https://github.com/gfx-rs/wgpu#7e8b51b4286bd9452567eb1a56edb8e9b7c7f684" source = "git+https://github.com/gfx-rs/wgpu#f7ec6cc1fe73651cfeda44295cd41533ec60f850"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"serde", "serde",

View file

@ -18,6 +18,7 @@ use crate::dom::bindings::codegen::Bindings::GPUComputePipelineBinding::GPUCompu
use crate::dom::bindings::codegen::Bindings::GPUDeviceBinding::{ use crate::dom::bindings::codegen::Bindings::GPUDeviceBinding::{
GPUCommandEncoderDescriptor, GPUDeviceMethods, GPUCommandEncoderDescriptor, GPUDeviceMethods,
}; };
use crate::dom::bindings::codegen::Bindings::GPUObjectBaseBinding::GPUObjectDescriptorBase;
use crate::dom::bindings::codegen::Bindings::GPUPipelineLayoutBinding::GPUPipelineLayoutDescriptor; use crate::dom::bindings::codegen::Bindings::GPUPipelineLayoutBinding::GPUPipelineLayoutDescriptor;
use crate::dom::bindings::codegen::Bindings::GPURenderBundleEncoderBinding::GPURenderBundleEncoderDescriptor; use crate::dom::bindings::codegen::Bindings::GPURenderBundleEncoderBinding::GPURenderBundleEncoderDescriptor;
use crate::dom::bindings::codegen::Bindings::GPURenderPipelineBinding::{ use crate::dom::bindings::codegen::Bindings::GPURenderPipelineBinding::{
@ -322,11 +323,7 @@ impl GPUDeviceMethods for GPUDevice {
fn CreateBuffer(&self, descriptor: &GPUBufferDescriptor) -> DomRoot<GPUBuffer> { fn CreateBuffer(&self, descriptor: &GPUBufferDescriptor) -> DomRoot<GPUBuffer> {
let desc = let desc =
wgt::BufferUsage::from_bits(descriptor.usage).map(|usg| wgpu_res::BufferDescriptor { wgt::BufferUsage::from_bits(descriptor.usage).map(|usg| wgpu_res::BufferDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|s| Cow::Owned(s.to_string())),
size: descriptor.size as wgt::BufferAddress, size: descriptor.size as wgt::BufferAddress,
usage: usg, usage: usg,
mapped_at_creation: descriptor.mappedAtCreation, mapped_at_creation: descriptor.mappedAtCreation,
@ -482,11 +479,7 @@ impl GPUDeviceMethods for GPUDevice {
let desc = if valid { let desc = if valid {
Some(wgpu_bind::BindGroupLayoutDescriptor { Some(wgpu_bind::BindGroupLayoutDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|s| Cow::Owned(s.to_string())),
entries: Cow::Owned(entries), entries: Cow::Owned(entries),
}) })
} else { } else {
@ -529,11 +522,7 @@ impl GPUDeviceMethods for GPUDevice {
descriptor: &GPUPipelineLayoutDescriptor, descriptor: &GPUPipelineLayoutDescriptor,
) -> DomRoot<GPUPipelineLayout> { ) -> DomRoot<GPUPipelineLayout> {
let desc = wgpu_bind::PipelineLayoutDescriptor { let desc = wgpu_bind::PipelineLayoutDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|s| Cow::Owned(s.to_string())),
bind_group_layouts: Cow::Owned( bind_group_layouts: Cow::Owned(
descriptor descriptor
.bindGroupLayouts .bindGroupLayouts
@ -597,11 +586,7 @@ impl GPUDeviceMethods for GPUDevice {
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let desc = wgpu_bind::BindGroupDescriptor { let desc = wgpu_bind::BindGroupDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|l| Cow::Owned(l.to_string())),
layout: descriptor.layout.id().0, layout: descriptor.layout.id().0,
entries: Cow::Owned(entries), entries: Cow::Owned(entries),
}; };
@ -688,12 +673,7 @@ impl GPUDeviceMethods for GPUDevice {
let scope_id = self.use_current_scope(); let scope_id = self.use_current_scope();
let desc = wgpu_pipe::ComputePipelineDescriptor { let desc = wgpu_pipe::ComputePipelineDescriptor {
label: descriptor label: convert_label(&descriptor.parent.parent),
.parent
.parent
.label
.as_ref()
.map(|s| Cow::Owned(s.to_string())),
layout: Some(descriptor.parent.layout.id().0), layout: Some(descriptor.parent.layout.id().0),
compute_stage: wgpu_pipe::ProgrammableStageDescriptor { compute_stage: wgpu_pipe::ProgrammableStageDescriptor {
module: descriptor.computeStage.module.id().0, module: descriptor.computeStage.module.id().0,
@ -739,11 +719,7 @@ impl GPUDeviceMethods for GPUDevice {
WebGPURequest::CreateCommandEncoder { WebGPURequest::CreateCommandEncoder {
device_id: self.device.0, device_id: self.device.0,
command_encoder_id, command_encoder_id,
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|l| Cow::Owned(l.to_string())),
}, },
)) ))
.expect("Failed to create WebGPU command encoder"); .expect("Failed to create WebGPU command encoder");
@ -765,11 +741,7 @@ impl GPUDeviceMethods for GPUDevice {
let size = convert_texture_size_to_dict(&descriptor.size); let size = convert_texture_size_to_dict(&descriptor.size);
let desc = let desc =
wgt::TextureUsage::from_bits(descriptor.usage).map(|usg| wgpu_res::TextureDescriptor { wgt::TextureUsage::from_bits(descriptor.usage).map(|usg| wgpu_res::TextureDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|l| Cow::Owned(l.to_string())),
size: convert_texture_size_to_wgt(&size), size: convert_texture_size_to_wgt(&size),
mip_level_count: descriptor.mipLevelCount, mip_level_count: descriptor.mipLevelCount,
sample_count: descriptor.sampleCount, sample_count: descriptor.sampleCount,
@ -833,11 +805,7 @@ impl GPUDeviceMethods for GPUDevice {
.create_sampler_id(self.device.0.backend()); .create_sampler_id(self.device.0.backend());
let compare_enable = descriptor.compare.is_some(); let compare_enable = descriptor.compare.is_some();
let desc = wgpu_res::SamplerDescriptor { let desc = wgpu_res::SamplerDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|s| Cow::Owned(s.to_string())),
address_modes: [ address_modes: [
convert_address_mode(descriptor.addressModeU), convert_address_mode(descriptor.addressModeU),
convert_address_mode(descriptor.addressModeV), convert_address_mode(descriptor.addressModeV),
@ -907,12 +875,7 @@ impl GPUDeviceMethods for GPUDevice {
let desc = if valid { let desc = if valid {
Some(wgpu_pipe::RenderPipelineDescriptor { Some(wgpu_pipe::RenderPipelineDescriptor {
label: descriptor label: convert_label(&descriptor.parent.parent),
.parent
.parent
.label
.as_ref()
.map(|s| Cow::Owned(s.to_string())),
layout: Some(descriptor.parent.layout.id().0), layout: Some(descriptor.parent.layout.id().0),
vertex_stage: wgpu_pipe::ProgrammableStageDescriptor { vertex_stage: wgpu_pipe::ProgrammableStageDescriptor {
module: descriptor.vertexStage.module.id().0, module: descriptor.vertexStage.module.id().0,
@ -1048,11 +1011,7 @@ impl GPUDeviceMethods for GPUDevice {
descriptor: &GPURenderBundleEncoderDescriptor, descriptor: &GPURenderBundleEncoderDescriptor,
) -> DomRoot<GPURenderBundleEncoder> { ) -> DomRoot<GPURenderBundleEncoder> {
let desc = wgpu_com::RenderBundleEncoderDescriptor { let desc = wgpu_com::RenderBundleEncoderDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|s| Cow::Owned(s.to_string())),
color_formats: Cow::Owned( color_formats: Cow::Owned(
descriptor descriptor
.colorFormats .colorFormats
@ -1323,3 +1282,7 @@ pub fn convert_texture_size_to_wgt(size: &GPUExtent3DDict) -> wgt::Extent3d {
depth: size.depth, depth: size.depth,
} }
} }
pub fn convert_label(parent: &GPUObjectDescriptorBase) -> Option<Cow<'static, str>> {
parent.label.as_ref().map(|s| Cow::Owned(s.to_string()))
}

View file

@ -11,11 +11,10 @@ use crate::dom::bindings::str::USVString;
use crate::dom::globalscope::GlobalScope; use crate::dom::globalscope::GlobalScope;
use crate::dom::gpubindgroup::GPUBindGroup; use crate::dom::gpubindgroup::GPUBindGroup;
use crate::dom::gpubuffer::GPUBuffer; use crate::dom::gpubuffer::GPUBuffer;
use crate::dom::gpudevice::GPUDevice; use crate::dom::gpudevice::{convert_label, GPUDevice};
use crate::dom::gpurenderbundle::GPURenderBundle; use crate::dom::gpurenderbundle::GPURenderBundle;
use crate::dom::gpurenderpipeline::GPURenderPipeline; use crate::dom::gpurenderpipeline::GPURenderPipeline;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use std::borrow::Cow;
use webgpu::{ use webgpu::{
wgpu::command::{bundle_ffi as wgpu_bundle, RenderBundleEncoder}, wgpu::command::{bundle_ffi as wgpu_bundle, RenderBundleEncoder},
wgt, WebGPU, WebGPURenderBundle, WebGPURequest, wgt, WebGPU, WebGPURenderBundle, WebGPURequest,
@ -185,11 +184,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder {
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoder-finish /// https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoder-finish
fn Finish(&self, descriptor: &GPURenderBundleDescriptor) -> DomRoot<GPURenderBundle> { fn Finish(&self, descriptor: &GPURenderBundleDescriptor) -> DomRoot<GPURenderBundle> {
let desc = wgt::RenderBundleDescriptor { let desc = wgt::RenderBundleDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent
.label
.as_ref()
.map(|l| Cow::Owned(l.to_string())),
}; };
let encoder = self.render_bundle_encoder.borrow_mut().take().unwrap(); let encoder = self.render_bundle_encoder.borrow_mut().take().unwrap();
let render_bundle_id = self let render_bundle_id = self

View file

@ -13,10 +13,11 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::bindings::str::USVString; use crate::dom::bindings::str::USVString;
use crate::dom::globalscope::GlobalScope; use crate::dom::globalscope::GlobalScope;
use crate::dom::gpudevice::{convert_texture_format, convert_texture_view_dimension, GPUDevice}; use crate::dom::gpudevice::{
convert_label, convert_texture_format, convert_texture_view_dimension, GPUDevice,
};
use crate::dom::gputextureview::GPUTextureView; use crate::dom::gputextureview::GPUTextureView;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use std::borrow::Cow;
use std::num::NonZeroU32; use std::num::NonZeroU32;
use std::string::String; use std::string::String;
use webgpu::{ use webgpu::{
@ -142,15 +143,9 @@ impl GPUTextureMethods for GPUTexture {
let desc = if valid { let desc = if valid {
Some(resource::TextureViewDescriptor { Some(resource::TextureViewDescriptor {
label: descriptor label: convert_label(&descriptor.parent),
.parent format: descriptor.format.map(convert_texture_format),
.label dimension: descriptor.dimension.map(convert_texture_view_dimension),
.as_ref()
.map(|l| Cow::Owned(l.to_string())),
format: descriptor.format.map(|fr| convert_texture_format(fr)),
dimension: descriptor
.dimension
.map(|dm| convert_texture_view_dimension(dm)),
aspect: match descriptor.aspect { aspect: match descriptor.aspect {
GPUTextureAspect::All => wgt::TextureAspect::All, GPUTextureAspect::All => wgt::TextureAspect::All,
GPUTextureAspect::Stencil_only => wgt::TextureAspect::StencilOnly, GPUTextureAspect::Stencil_only => wgt::TextureAspect::StencilOnly,