Upgrade to wgpu 26

This commit is contained in:
charlotte 2025-06-29 13:59:14 -07:00
parent 515236ddaf
commit 97e1737362
24 changed files with 38 additions and 14 deletions

View File

@ -98,6 +98,7 @@ impl Node for CasNode {
label: Some("contrast_adaptive_sharpening"),
color_attachments: &[Some(RenderPassColorAttachment {
view: destination,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
})],

View File

@ -64,6 +64,7 @@ impl ViewNode for FxaaNode {
label: Some("fxaa_pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: destination,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
})],

View File

@ -934,6 +934,7 @@ fn perform_edge_detection(
label: Some("SMAA edge detection pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: &smaa_textures.edge_detection_color_texture.default_view,
depth_slice: None,
resolve_target: None,
ops: default(),
})],
@ -989,6 +990,7 @@ fn perform_blending_weight_calculation(
label: Some("SMAA blending weight calculation pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: &smaa_textures.blend_texture.default_view,
depth_slice: None,
resolve_target: None,
ops: default(),
})],
@ -1045,6 +1047,7 @@ fn perform_neighborhood_blending(
label: Some("SMAA neighborhood blending pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: destination,
depth_slice: None,
resolve_target: None,
ops: default(),
})],

View File

@ -208,11 +208,13 @@ impl ViewNode for TemporalAntiAliasNode {
color_attachments: &[
Some(RenderPassColorAttachment {
view: view_target.destination,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
}),
Some(RenderPassColorAttachment {
view: &taa_history_textures.write.default_view,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
}),

View File

@ -20,7 +20,7 @@ serde = { version = "1.0", features = [
], default-features = false, optional = true }
thiserror = { version = "2", default-features = false }
derive_more = { version = "2", default-features = false, features = ["from"] }
wgpu-types = { version = "25", default-features = false, optional = true }
wgpu-types = { path = "../../../../gfx-rs/wgpu/wgpu-types", default-features = false, optional = true }
encase = { version = "0.10", default-features = false, optional = true }
[features]

View File

@ -184,6 +184,7 @@ impl ViewNode for BloomNode {
label: Some("bloom_downsampling_first_pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
})],
@ -208,6 +209,7 @@ impl ViewNode for BloomNode {
label: Some("bloom_downsampling_pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
})],
@ -232,6 +234,7 @@ impl ViewNode for BloomNode {
label: Some("bloom_upsampling_pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view,
depth_slice: None,
resolve_target: None,
ops: Operations {
load: LoadOp::Load,

View File

@ -416,6 +416,7 @@ impl ViewNode for DepthOfFieldNode {
let mut color_attachments: SmallVec<[_; 2]> = SmallVec::new();
color_attachments.push(Some(RenderPassColorAttachment {
view: postprocess.destination,
depth_slice: None,
resolve_target: None,
ops: Operations {
load: LoadOp::Clear(default()),
@ -436,6 +437,7 @@ impl ViewNode for DepthOfFieldNode {
};
color_attachments.push(Some(RenderPassColorAttachment {
view: &auxiliary_dof_texture.default_view,
depth_slice: None,
resolve_target: None,
ops: Operations {
load: LoadOp::Clear(default()),

View File

@ -84,6 +84,7 @@ impl ViewNode for MotionBlurNode {
label: Some("motion_blur_pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: post_process.destination,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
})],

View File

@ -87,6 +87,7 @@ impl ViewNode for MsaaWritebackNode {
color_attachments: &[Some(RenderPassColorAttachment {
// If MSAA is enabled, then the sampled texture will always exist
view: target.sampled_main_texture_view().unwrap(),
depth_slice: None,
resolve_target: Some(post_process.destination),
ops: Operations {
load: LoadOp::Clear(LinearRgba::BLACK.into()),

View File

@ -390,6 +390,7 @@ impl ViewNode for PostProcessingNode {
label: Some("postprocessing pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: post_process.destination,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
})],

View File

@ -117,6 +117,7 @@ impl ViewNode for TonemappingNode {
label: Some("tonemapping_pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: destination,
depth_slice: None,
resolve_target: None,
ops: Operations {
load: LoadOp::Clear(Default::default()), // TODO shouldn't need to be cleared

View File

@ -70,7 +70,7 @@ image = { version = "0.25.2", default-features = false }
# misc
bitflags = { version = "2.3", features = ["serde"] }
bytemuck = { version = "1.5" }
wgpu-types = { version = "25", default-features = false }
wgpu-types = { path = "../../../../gfx-rs/wgpu/wgpu-types", default-features = false }
serde = { version = "1", features = ["derive"] }
thiserror = { version = "2", default-features = false }
futures-lite = "2.0.1"

View File

@ -27,7 +27,7 @@ bevy_platform = { path = "../bevy_platform", version = "0.17.0-dev", default-fea
# other
bitflags = { version = "2.3", features = ["serde"] }
bytemuck = { version = "1.5" }
wgpu-types = { version = "25", default-features = false }
wgpu-types = { path = "../../../../gfx-rs/wgpu/wgpu-types", default-features = false }
serde = { version = "1", default-features = false, features = [
"derive",
], optional = true }

View File

@ -311,6 +311,7 @@ impl ViewNode for ScreenSpaceReflectionsNode {
label: Some("SSR pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: postprocess.destination,
depth_slice: None,
resolve_target: None,
ops: Operations::default(),
})],

View File

@ -442,6 +442,7 @@ impl ViewNode for VolumetricFogNode {
label: Some("volumetric lighting pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: view_target.main_texture_view(),
depth_slice: None,
resolve_target: None,
ops: Operations {
load: LoadOp::Load,

View File

@ -109,7 +109,7 @@ uuid = { version = "1.13.1", default-features = false, optional = true, features
"serde",
] }
variadics_please = "1.1"
wgpu-types = { version = "25", features = [
wgpu-types = { path = "../../../../gfx-rs/wgpu/wgpu-types", features = [
"serde",
], optional = true, default-features = false }

View File

@ -90,7 +90,7 @@ codespan-reporting = "0.12.0"
# It is enabled for now to avoid having to do a significant overhaul of the renderer just for wasm.
# When the 'atomics' feature is enabled `fragile-send-sync-non-atomic` does nothing
# and Bevy instead wraps `wgpu` types to verify they are not used off their origin thread.
wgpu = { version = "25", default-features = false, features = [
wgpu = { path = "../../../../gfx-rs/wgpu/wgpu", default-features = false, features = [
"wgsl",
"dx12",
"metal",
@ -99,7 +99,7 @@ wgpu = { version = "25", default-features = false, features = [
"naga-ir",
"fragile-send-sync-non-atomic-wasm",
] }
naga = { version = "25", features = ["wgsl-in"] }
naga = { path = "../../../../gfx-rs/wgpu/naga", features = ["wgsl-in"] }
serde = { version = "1", features = ["derive"] }
bytemuck = { version = "1.5", features = ["derive", "must_cast"] }
downcast-rs = { version = "2", default-features = false, features = ["std"] }
@ -125,7 +125,7 @@ wesl = { version = "0.1.2", optional = true }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
# Omit the `glsl` feature in non-WebAssembly by default.
naga_oil = { version = "0.18", default-features = false, features = [
naga_oil = { path = "../../../naga_oil", default-features = false, features = [
"test_shader",
] }
@ -133,7 +133,7 @@ naga_oil = { version = "0.18", default-features = false, features = [
proptest = "1"
[target.'cfg(target_arch = "wasm32")'.dependencies]
naga_oil = { version = "0.18" }
naga_oil = { path = "../../../naga_oil" }
js-sys = "0.3"
web-sys = { version = "0.3.67", features = [
'Blob',

View File

@ -76,6 +76,7 @@ impl Node for CameraDriverNode {
label: Some("no_camera_clear_pass"),
color_attachments: &[Some(RenderPassColorAttachment {
view: swap_chain_texture,
depth_slice: None,
resolve_target: None,
ops: Operations {
load: LoadOp::Clear(clear_color_global.to_linear().into()),

View File

@ -370,6 +370,7 @@ impl Plugin for RenderPlugin {
let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor {
backends,
flags: settings.instance_flags,
memory_budget_thresholds: settings.instance_memory_budget_thresholds,
backend_options: wgpu::BackendOptions {
gl: wgpu::GlBackendOptions {
gles_minor_version: settings.gles3_minor_version,

View File

@ -401,7 +401,7 @@ impl ShaderCache {
render_device.create_and_validate_shader_module(module_descriptor)
}
// SAFETY: we are interfacing with shader code, which may contain undefined behavior,
// such as indexing out of bounds.
// such as indexing out of bounds.
// The checks required are prohibitively expensive and a poor default for game engines.
ValidateShader::Disabled => unsafe {
render_device.create_shader_module(module_descriptor)

View File

@ -3,7 +3,7 @@ use crate::renderer::{
};
use alloc::borrow::Cow;
use wgpu::DxcShaderModel;
use wgpu::{DxcShaderModel, MemoryBudgetThresholds};
pub use wgpu::{
Backends, Dx12Compiler, Features as WgpuFeatures, Gles3MinorVersion, InstanceFlags,
Limits as WgpuLimits, MemoryHints, PowerPreference,
@ -53,6 +53,8 @@ pub struct WgpuSettings {
pub instance_flags: InstanceFlags,
/// This hints to the WGPU device about the preferred memory allocation strategy.
pub memory_hints: MemoryHints,
/// The thresholds for device memory budget.
pub instance_memory_budget_thresholds: MemoryBudgetThresholds,
}
impl Default for WgpuSettings {
@ -103,15 +105,12 @@ impl Default for WgpuSettings {
Dx12Compiler::StaticDxc
} else {
let dxc = "dxcompiler.dll";
let dxil = "dxil.dll";
if cfg!(target_os = "windows")
&& std::fs::metadata(dxc).is_ok()
&& std::fs::metadata(dxil).is_ok()
{
Dx12Compiler::DynamicDxc {
dxc_path: String::from(dxc),
dxil_path: String::from(dxil),
max_shader_model: DxcShaderModel::V6_7,
}
} else {
@ -136,6 +135,7 @@ impl Default for WgpuSettings {
gles3_minor_version,
instance_flags,
memory_hints: MemoryHints::default(),
instance_memory_budget_thresholds:MemoryBudgetThresholds::default(),
}
}
}

View File

@ -40,6 +40,7 @@ impl ColorAttachment {
RenderPassColorAttachment {
view: &resolve_target.default_view,
depth_slice: None,
resolve_target: Some(&self.texture.default_view),
ops: Operations {
load: match (self.clear_color, first_call) {
@ -63,6 +64,7 @@ impl ColorAttachment {
RenderPassColorAttachment {
view: &self.texture.default_view,
depth_slice: None,
resolve_target: None,
ops: Operations {
load: match (self.clear_color, first_call) {
@ -146,6 +148,7 @@ impl OutputColorAttachment {
RenderPassColorAttachment {
view: &self.view,
depth_slice: None,
resolve_target: None,
ops: Operations {
load: match (clear_color, first_call) {

View File

@ -600,6 +600,7 @@ fn render_screenshot(
label: Some("screenshot_to_screen_pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: texture_view,
depth_slice: None,
resolve_target: None,
ops: wgpu::Operations {
load: wgpu::LoadOp::Load,

View File

@ -59,7 +59,7 @@ cfg-if = "1.0"
raw-window-handle = "0.6"
serde = { version = "1.0", features = ["derive"], optional = true }
bytemuck = { version = "1.5", optional = true }
wgpu-types = { version = "25", optional = true }
wgpu-types = { path = "../../../../gfx-rs/wgpu/wgpu-types", optional = true }
accesskit = "0.19"
tracing = { version = "0.1", default-features = false, features = ["std"] }