500: Update wgpu for optional layouts r=3rdtimeisthecharm a=kvark

Fixes #498
Includes https://github.com/gfx-rs/wgpu/pull/872 and https://github.com/gfx-rs/wgpu/pull/870

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
This commit is contained in:
bors[bot]
2020-08-10 21:54:18 +00:00
committed by GitHub
14 changed files with 34 additions and 27 deletions

View File

@@ -27,14 +27,14 @@ vulkan-portability = ["wgc/gfx-backend-vulkan"]
package = "wgpu-core"
version = "0.5"
git = "https://github.com/gfx-rs/wgpu"
rev = "8057acf120f9944056a6b5de6cf326f18ae7671d"
rev = "04f5cfd1c8e66612ed44ab371dac3d956235ffa7"
features = ["raw-window-handle"]
[dependencies.wgt]
package = "wgpu-types"
version = "0.5"
git = "https://github.com/gfx-rs/wgpu"
rev = "8057acf120f9944056a6b5de6cf326f18ae7671d"
rev = "04f5cfd1c8e66612ed44ab371dac3d956235ffa7"
[dependencies]
arrayvec = "0.5"

View File

@@ -15,6 +15,7 @@ All framework-based examples render to the window.
| vertex attributes | :star: | :star: | :star: | :star: | :star: | | :star: | :star: |
| instancing | :star: | | | | | | | |
| lines and points | | | | :star: | | | | |
| implicit layout | | | | | | | | |
| sampled color textures | :star: | :star: | :star: | | | :star: | :star: | :star: |
| storage textures | :star: | | | | | | | |
| binding array | | | | | | | :star: | |

View File

@@ -106,7 +106,7 @@ impl framework::Example for Example {
});
let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &render_pipeline_layout,
layout: Some(&render_pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),
@@ -151,7 +151,7 @@ impl framework::Example for Example {
// create compute pipeline
let compute_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor {
layout: &compute_pipeline_layout,
layout: Some(&compute_pipeline_layout),
compute_stage: wgpu::ProgrammableStageDescriptor {
module: &boids_module,
entry_point: Borrowed("main"),

View File

@@ -246,7 +246,7 @@ impl framework::Example for Example {
let fs_module = device.create_shader_module(wgpu::include_spirv!("shader.frag.spv"));
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),

View File

@@ -89,7 +89,7 @@ async fn execute_gpu(numbers: Vec<u32>) -> Vec<u32> {
});
let compute_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
compute_stage: wgpu::ProgrammableStageDescriptor {
module: &cs_module,
entry_point: Borrowed("main"),

View File

@@ -41,7 +41,7 @@ async fn run(event_loop: EventLoop<()>, window: Window, swapchain_format: wgpu::
});
let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),

View File

@@ -110,7 +110,7 @@ impl Example {
let fs_module = device.create_shader_module(wgpu::include_spirv!("blit.frag.spv"));
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),
@@ -343,7 +343,7 @@ impl framework::Example for Example {
let fs_module = device.create_shader_module(wgpu::include_spirv!("draw.frag.spv"));
let draw_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),

View File

@@ -51,7 +51,7 @@ impl Example {
) -> wgpu::RenderBundle {
log::info!("sample_count: {}", sample_count);
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: vs_module,
entry_point: Borrowed("main"),

View File

@@ -481,7 +481,7 @@ impl framework::Example for Example {
let fs_module = device.create_shader_module(wgpu::include_spirv!("bake.frag.spv"));
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),
@@ -612,7 +612,7 @@ impl framework::Example for Example {
let fs_module = device.create_shader_module(wgpu::include_spirv!("forward.frag.spv"));
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),

View File

@@ -96,7 +96,7 @@ impl framework::Example for Skybox {
// Create the render pipeline
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),

View File

@@ -260,7 +260,7 @@ impl framework::Example for Example {
};
let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &pipeline_layout,
layout: Some(&pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &vs_module,
entry_point: Borrowed("main"),

View File

@@ -230,6 +230,8 @@ impl Example {
..Default::default()
});
let depth_view = draw_depth_buffer.create_default_view();
let water_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
layout: water_bind_group_layout,
entries: Borrowed(&[
@@ -245,9 +247,7 @@ impl Example {
},
wgpu::BindGroupEntry {
binding: 2,
resource: wgpu::BindingResource::TextureView(
&draw_depth_buffer.create_default_view(),
),
resource: wgpu::BindingResource::TextureView(&depth_view),
},
wgpu::BindGroupEntry {
binding: 3,
@@ -259,7 +259,7 @@ impl Example {
(
reflection_texture.create_default_view(),
draw_depth_buffer.create_default_view(),
depth_view,
water_bind_group,
)
}
@@ -491,7 +491,7 @@ impl framework::Example for Example {
// constraints and modifiers it will have.
let water_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
// The "layout" is what uniforms will be needed.
layout: &water_pipeline_layout,
layout: Some(&water_pipeline_layout),
// Vertex & Fragment shaders
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &water_vs_module,
@@ -566,7 +566,7 @@ impl framework::Example for Example {
// Same idea as the water pipeline.
let terrain_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
layout: &terrain_pipeline_layout,
layout: Some(&terrain_pipeline_layout),
vertex_stage: wgpu::ProgrammableStageDescriptor {
module: &terrain_vs_module,
entry_point: Borrowed("main"),

View File

@@ -732,7 +732,7 @@ impl crate::Context for Context {
wgc::gfx_select!(*device => global.device_create_render_pipeline(
*device,
&pipe::RenderPipelineDescriptor {
layout: desc.layout.id,
layout: desc.layout.map(|l| l.id),
vertex_stage,
fragment_stage,
rasterization_state: desc.rasterization_state.clone(),
@@ -744,9 +744,11 @@ impl crate::Context for Context {
sample_mask: desc.sample_mask,
alpha_to_coverage_enabled: desc.alpha_to_coverage_enabled,
},
PhantomData
PhantomData,
None
))
.unwrap_pretty()
.0
}
fn device_create_compute_pipeline(
@@ -760,15 +762,17 @@ impl crate::Context for Context {
wgc::gfx_select!(*device => global.device_create_compute_pipeline(
*device,
&pipe::ComputePipelineDescriptor {
layout: desc.layout.id,
layout: desc.layout.map(|l| l.id),
compute_stage: pipe::ProgrammableStageDescriptor {
module: desc.compute_stage.module.id,
entry_point: Borrowed(&desc.compute_stage.entry_point),
},
},
PhantomData
PhantomData,
None
))
.unwrap_pretty()
.0
}
fn device_create_buffer(

View File

@@ -1007,7 +1007,7 @@ impl crate::Context for Context {
let mapped_vertex_stage = map_stage_descriptor(&desc.vertex_stage);
let mut mapped_desc = web_sys::GpuRenderPipelineDescriptor::new(
&desc.layout.id.0,
&desc.layout.as_ref().unwrap().id.0,
&mapped_color_states,
mapped_primitive_topology,
&mapped_vertex_stage,
@@ -1041,8 +1041,10 @@ impl crate::Context for Context {
desc: &ComputePipelineDescriptor,
) -> Self::ComputePipelineId {
let mapped_compute_stage = map_stage_descriptor(&desc.compute_stage);
let mapped_desc =
web_sys::GpuComputePipelineDescriptor::new(&desc.layout.id.0, &mapped_compute_stage);
let mapped_desc = web_sys::GpuComputePipelineDescriptor::new(
&desc.layout.as_ref().unwrap().id.0,
&mapped_compute_stage,
);
// TODO: label
Sendable(device.0.create_compute_pipeline(&mapped_desc))
}