mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
[rs] Merge #500
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:
@@ -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"
|
||||
|
||||
@@ -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: | |
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user