mirror of
https://github.com/bevyengine/bevy
synced 2024-11-29 08:00:20 +00:00
Reverted combining of set_bind_group between different passes.
This commit is contained in:
parent
a0347195c0
commit
9588bb3243
4 changed files with 60 additions and 69 deletions
|
@ -1,50 +0,0 @@
|
||||||
use bevy_render2::{pipeline::BindGroupDescriptorId, render_resource::BindGroupId};
|
|
||||||
use bevy_utils::tracing::trace;
|
|
||||||
use crate::resources::WgpuResourceRefs;
|
|
||||||
|
|
||||||
pub enum Pass<'a, 'b> {
|
|
||||||
Render(&'b mut wgpu::RenderPass<'a>),
|
|
||||||
Compute(&'b mut wgpu::ComputePass<'a>),
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn set_bind_group<'a, 'b>(
|
|
||||||
pass: Pass<'a, 'b>,
|
|
||||||
wgpu_resources: &WgpuResourceRefs<'a>,
|
|
||||||
index: u32,
|
|
||||||
bind_group_descriptor_id: BindGroupDescriptorId,
|
|
||||||
bind_group: BindGroupId,
|
|
||||||
dynamic_uniform_indices: Option<&[u32]>,
|
|
||||||
) {
|
|
||||||
if let Some(bind_group_info) = wgpu_resources
|
|
||||||
.bind_groups
|
|
||||||
.get(&bind_group_descriptor_id)
|
|
||||||
{
|
|
||||||
if let Some(wgpu_bind_group) = bind_group_info.bind_groups.get(&bind_group) {
|
|
||||||
const EMPTY: &[u32] = &[];
|
|
||||||
let dynamic_uniform_indices =
|
|
||||||
if let Some(dynamic_uniform_indices) = dynamic_uniform_indices {
|
|
||||||
dynamic_uniform_indices
|
|
||||||
} else {
|
|
||||||
EMPTY
|
|
||||||
};
|
|
||||||
wgpu_resources
|
|
||||||
.used_bind_group_sender
|
|
||||||
.send(bind_group)
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
trace!(
|
|
||||||
"set bind group {:?} {:?}: {:?}",
|
|
||||||
bind_group_descriptor_id,
|
|
||||||
dynamic_uniform_indices,
|
|
||||||
bind_group
|
|
||||||
);
|
|
||||||
|
|
||||||
match pass {
|
|
||||||
Pass::Render(render_pass) =>
|
|
||||||
render_pass.set_bind_group(index, wgpu_bind_group, dynamic_uniform_indices),
|
|
||||||
Pass::Compute(compute_pass) =>
|
|
||||||
compute_pass.set_bind_group(index, wgpu_bind_group, dynamic_uniform_indices),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +1,11 @@
|
||||||
use crate::{WgpuRenderContext, bind_group::{self, Pass}, resources::WgpuResourceRefs};
|
use crate::{resources::WgpuResourceRefs, WgpuRenderContext};
|
||||||
use bevy_render2::{
|
use bevy_render2::{
|
||||||
pass::ComputePass,
|
pass::ComputePass,
|
||||||
pipeline::{BindGroupDescriptorId, ComputePipelineDescriptor, PipelineId},
|
pipeline::{BindGroupDescriptorId, ComputePipelineDescriptor, PipelineId},
|
||||||
render_resource::BindGroupId,
|
render_resource::BindGroupId,
|
||||||
renderer::RenderContext,
|
renderer::RenderContext,
|
||||||
};
|
};
|
||||||
|
use bevy_utils::tracing::trace;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct WgpuComputePass<'a> {
|
pub struct WgpuComputePass<'a> {
|
||||||
|
@ -26,14 +27,34 @@ impl<'a> ComputePass for WgpuComputePass<'a> {
|
||||||
bind_group: BindGroupId,
|
bind_group: BindGroupId,
|
||||||
dynamic_uniform_indices: Option<&[u32]>,
|
dynamic_uniform_indices: Option<&[u32]>,
|
||||||
) {
|
) {
|
||||||
bind_group::set_bind_group(
|
if let Some(bind_group_info) = self
|
||||||
Pass::Compute(&mut self.compute_pass),
|
.wgpu_resources
|
||||||
&self.wgpu_resources,
|
.bind_groups
|
||||||
index,
|
.get(&bind_group_descriptor_id)
|
||||||
|
{
|
||||||
|
if let Some(wgpu_bind_group) = bind_group_info.bind_groups.get(&bind_group) {
|
||||||
|
const EMPTY: &[u32] = &[];
|
||||||
|
let dynamic_uniform_indices =
|
||||||
|
if let Some(dynamic_uniform_indices) = dynamic_uniform_indices {
|
||||||
|
dynamic_uniform_indices
|
||||||
|
} else {
|
||||||
|
EMPTY
|
||||||
|
};
|
||||||
|
self.wgpu_resources
|
||||||
|
.used_bind_group_sender
|
||||||
|
.send(bind_group)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
trace!(
|
||||||
|
"set bind group {:?} {:?}: {:?}",
|
||||||
bind_group_descriptor_id,
|
bind_group_descriptor_id,
|
||||||
bind_group,
|
|
||||||
dynamic_uniform_indices,
|
dynamic_uniform_indices,
|
||||||
)
|
bind_group
|
||||||
|
);
|
||||||
|
self.compute_pass
|
||||||
|
.set_bind_group(index, wgpu_bind_group, dynamic_uniform_indices);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_pipeline(&mut self, pipeline: PipelineId) {
|
fn set_pipeline(&mut self, pipeline: PipelineId) {
|
||||||
|
|
|
@ -8,7 +8,6 @@ mod render_resource_context;
|
||||||
mod renderer;
|
mod renderer;
|
||||||
mod resources;
|
mod resources;
|
||||||
mod type_converter;
|
mod type_converter;
|
||||||
mod bind_group;
|
|
||||||
|
|
||||||
pub use compute_pass::*;
|
pub use compute_pass::*;
|
||||||
pub use render_context::*;
|
pub use render_context::*;
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
use crate::{WgpuRenderContext, bind_group::{self, Pass}, resources::WgpuResourceRefs, type_converter::WgpuInto};
|
use crate::{resources::WgpuResourceRefs, type_converter::WgpuInto, WgpuRenderContext};
|
||||||
use bevy_render2::{
|
use bevy_render2::{
|
||||||
pass::RenderPass,
|
pass::RenderPass,
|
||||||
pipeline::{BindGroupDescriptorId, IndexFormat, RenderPipelineDescriptor, PipelineId},
|
pipeline::{BindGroupDescriptorId, IndexFormat, RenderPipelineDescriptor, PipelineId},
|
||||||
render_resource::{BindGroupId, BufferId},
|
render_resource::{BindGroupId, BufferId},
|
||||||
renderer::RenderContext,
|
renderer::RenderContext,
|
||||||
};
|
};
|
||||||
|
use bevy_utils::tracing::trace;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -61,14 +62,34 @@ impl<'a> RenderPass for WgpuRenderPass<'a> {
|
||||||
bind_group: BindGroupId,
|
bind_group: BindGroupId,
|
||||||
dynamic_uniform_indices: Option<&[u32]>,
|
dynamic_uniform_indices: Option<&[u32]>,
|
||||||
) {
|
) {
|
||||||
bind_group::set_bind_group(
|
if let Some(bind_group_info) = self
|
||||||
Pass::Render(&mut self.render_pass),
|
.wgpu_resources
|
||||||
&self.wgpu_resources,
|
.bind_groups
|
||||||
index,
|
.get(&bind_group_descriptor_id)
|
||||||
|
{
|
||||||
|
if let Some(wgpu_bind_group) = bind_group_info.bind_groups.get(&bind_group) {
|
||||||
|
const EMPTY: &[u32] = &[];
|
||||||
|
let dynamic_uniform_indices =
|
||||||
|
if let Some(dynamic_uniform_indices) = dynamic_uniform_indices {
|
||||||
|
dynamic_uniform_indices
|
||||||
|
} else {
|
||||||
|
EMPTY
|
||||||
|
};
|
||||||
|
self.wgpu_resources
|
||||||
|
.used_bind_group_sender
|
||||||
|
.send(bind_group)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
trace!(
|
||||||
|
"set bind group {:?} {:?}: {:?}",
|
||||||
bind_group_descriptor_id,
|
bind_group_descriptor_id,
|
||||||
bind_group,
|
|
||||||
dynamic_uniform_indices,
|
dynamic_uniform_indices,
|
||||||
)
|
bind_group
|
||||||
|
);
|
||||||
|
self.render_pass
|
||||||
|
.set_bind_group(index, wgpu_bind_group, dynamic_uniform_indices);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_pipeline(&mut self, pipeline: PipelineId) {
|
fn set_pipeline(&mut self, pipeline: PipelineId) {
|
||||||
|
|
Loading…
Reference in a new issue