diff --git a/crates/bevy_anti_alias/src/contrast_adaptive_sharpening/node.rs b/crates/bevy_anti_alias/src/contrast_adaptive_sharpening/node.rs index e253f28946ecc..9e5ffd1141544 100644 --- a/crates/bevy_anti_alias/src/contrast_adaptive_sharpening/node.rs +++ b/crates/bevy_anti_alias/src/contrast_adaptive_sharpening/node.rs @@ -2,8 +2,10 @@ use std::sync::Mutex; use crate::contrast_adaptive_sharpening::ViewCasPipeline; use bevy_ecs::prelude::*; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, extract_component::{ComponentUniforms, DynamicUniformIndex}, render_graph::{Node, NodeRunError, RenderGraphContext}, render_resource::{ @@ -67,6 +69,7 @@ impl Node for CasNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let view_target = target.post_process_write(); @@ -113,12 +116,14 @@ impl Node for CasNode { let mut render_pass = render_context .command_encoder() .begin_render_pass(&pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "contrast_adaptive_sharpening"); render_pass.set_pipeline(pipeline); render_pass.set_bind_group(0, bind_group, &[uniform_index.index()]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_anti_alias/src/dlss/node.rs b/crates/bevy_anti_alias/src/dlss/node.rs index aae59fa95b821..577f581a598b9 100644 --- a/crates/bevy_anti_alias/src/dlss/node.rs +++ b/crates/bevy_anti_alias/src/dlss/node.rs @@ -5,9 +5,11 @@ use super::{ use bevy_camera::MainPassResolutionOverride; use bevy_core_pipeline::prepass::ViewPrepassTextures; use bevy_ecs::{query::QueryItem, world::World}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::TemporalJitter, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, renderer::{RenderAdapter, RenderContext}, view::ViewTarget, @@ -70,17 +72,20 @@ impl ViewNode for DlssNode { motion_vector_scale: Some(-render_resolution.as_vec2()), }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let command_encoder = render_context.command_encoder(); let mut dlss_context = dlss_context.context.lock().unwrap(); command_encoder.push_debug_group("dlss_super_resolution"); + #[cfg(not(target_os = "macos"))] let time_span = diagnostics.time_span(command_encoder, "dlss_super_resolution"); dlss_context .render(render_parameters, command_encoder, &adapter) .expect("Failed to render DLSS Super Resolution"); + #[cfg(not(target_os = "macos"))] time_span.end(command_encoder); command_encoder.pop_debug_group(); @@ -146,17 +151,20 @@ impl ViewNode for DlssNode { motion_vector_scale: Some(-render_resolution.as_vec2()), }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let command_encoder = render_context.command_encoder(); let mut dlss_context = dlss_context.context.lock().unwrap(); command_encoder.push_debug_group("dlss_ray_reconstruction"); + #[cfg(not(target_os = "macos"))] let time_span = diagnostics.time_span(command_encoder, "dlss_ray_reconstruction"); dlss_context .render(render_parameters, command_encoder, &adapter) .expect("Failed to render DLSS Ray Reconstruction"); + #[cfg(not(target_os = "macos"))] time_span.end(command_encoder); command_encoder.pop_debug_group(); diff --git a/crates/bevy_anti_alias/src/fxaa/node.rs b/crates/bevy_anti_alias/src/fxaa/node.rs index bf520b776c4c5..b9df25460b537 100644 --- a/crates/bevy_anti_alias/src/fxaa/node.rs +++ b/crates/bevy_anti_alias/src/fxaa/node.rs @@ -2,8 +2,10 @@ use std::sync::Mutex; use crate::fxaa::{CameraFxaaPipeline, Fxaa, FxaaPipeline}; use bevy_ecs::{prelude::*, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_resource::{ BindGroup, BindGroupEntries, Operations, PipelineCache, RenderPassColorAttachment, @@ -43,6 +45,7 @@ impl ViewNode for FxaaNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let post_process = target.post_process_write(); @@ -79,12 +82,14 @@ impl ViewNode for FxaaNode { let mut render_pass = render_context .command_encoder() .begin_render_pass(&pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "fxaa"); render_pass.set_pipeline(pipeline); render_pass.set_bind_group(0, bind_group, &[]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_anti_alias/src/smaa/mod.rs b/crates/bevy_anti_alias/src/smaa/mod.rs index ee28af6b69bb7..1a2e8ccea5360 100644 --- a/crates/bevy_anti_alias/src/smaa/mod.rs +++ b/crates/bevy_anti_alias/src/smaa/mod.rs @@ -51,9 +51,11 @@ use bevy_ecs::{ use bevy_image::{BevyDefault, Image, ToExtents}; use bevy_math::{vec4, Vec4}; use bevy_reflect::{std_traits::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, extract_component::{ExtractComponent, ExtractComponentPlugin}, render_asset::RenderAssets, render_graph::{ @@ -846,8 +848,10 @@ impl ViewNode for SmaaNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); render_context.command_encoder().push_debug_group("smaa"); + #[cfg(not(target_os = "macos"))] let time_span = diagnostics.time_span(render_context.command_encoder(), "smaa"); // Fetch the framebuffer textures. @@ -893,6 +897,7 @@ impl ViewNode for SmaaNode { destination, ); + #[cfg(not(target_os = "macos"))] time_span.end(render_context.command_encoder()); render_context.command_encoder().pop_debug_group(); diff --git a/crates/bevy_anti_alias/src/taa/mod.rs b/crates/bevy_anti_alias/src/taa/mod.rs index 377de519c1560..d0798db42b906 100644 --- a/crates/bevy_anti_alias/src/taa/mod.rs +++ b/crates/bevy_anti_alias/src/taa/mod.rs @@ -19,9 +19,11 @@ use bevy_ecs::{ use bevy_image::{BevyDefault as _, ToExtents}; use bevy_math::vec2; use bevy_reflect::{std_traits::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::{ExtractedCamera, MipBias, TemporalJitter}, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, RenderGraphExt, ViewNode, ViewNodeRunner}, render_resource::{ binding_types::{sampler, texture_2d, texture_depth_2d}, @@ -179,6 +181,7 @@ impl ViewNode for TemporalAntiAliasNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let view_target = view_target.post_process_write(); @@ -217,6 +220,7 @@ impl ViewNode for TemporalAntiAliasNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut taa_pass, "taa"); taa_pass.set_render_pipeline(taa_pipeline); @@ -226,6 +230,7 @@ impl ViewNode for TemporalAntiAliasNode { } taa_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut taa_pass); } diff --git a/crates/bevy_core_pipeline/src/core_2d/main_opaque_pass_2d_node.rs b/crates/bevy_core_pipeline/src/core_2d/main_opaque_pass_2d_node.rs index e8cd0c65c6888..fbe87ef689d86 100644 --- a/crates/bevy_core_pipeline/src/core_2d/main_opaque_pass_2d_node.rs +++ b/crates/bevy_core_pipeline/src/core_2d/main_opaque_pass_2d_node.rs @@ -1,8 +1,10 @@ use crate::core_2d::Opaque2d; use bevy_ecs::{prelude::World, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_phase::{TrackedRenderPass, ViewBinnedRenderPhases}, render_resource::{CommandEncoderDescriptor, RenderPassDescriptor, StoreOp}, @@ -41,6 +43,7 @@ impl ViewNode for MainOpaquePass2dNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let color_attachments = [Some(target.get_color_attachment())]; @@ -72,6 +75,7 @@ impl ViewNode for MainOpaquePass2dNode { occlusion_query_set: None, }); let mut render_pass = TrackedRenderPass::new(&render_device, render_pass); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "main_opaque_pass_2d"); if let Some(viewport) = camera.viewport.as_ref() { @@ -96,6 +100,7 @@ impl ViewNode for MainOpaquePass2dNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); drop(render_pass); command_encoder.finish() diff --git a/crates/bevy_core_pipeline/src/core_2d/main_transparent_pass_2d_node.rs b/crates/bevy_core_pipeline/src/core_2d/main_transparent_pass_2d_node.rs index 4054283a5738a..daad739232a8c 100644 --- a/crates/bevy_core_pipeline/src/core_2d/main_transparent_pass_2d_node.rs +++ b/crates/bevy_core_pipeline/src/core_2d/main_transparent_pass_2d_node.rs @@ -1,8 +1,10 @@ use crate::core_2d::Transparent2d; use bevy_ecs::prelude::*; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_phase::{TrackedRenderPass, ViewSortedRenderPhases}, render_resource::{CommandEncoderDescriptor, RenderPassDescriptor, StoreOp}, @@ -42,6 +44,7 @@ impl ViewNode for MainTransparentPass2dNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let color_attachments = [Some(target.get_color_attachment())]; @@ -74,6 +77,7 @@ impl ViewNode for MainTransparentPass2dNode { }); let mut render_pass = TrackedRenderPass::new(&render_device, render_pass); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "main_transparent_pass_2d"); if let Some(viewport) = camera.viewport.as_ref() { @@ -92,6 +96,7 @@ impl ViewNode for MainTransparentPass2dNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); } diff --git a/crates/bevy_core_pipeline/src/core_3d/main_opaque_pass_3d_node.rs b/crates/bevy_core_pipeline/src/core_3d/main_opaque_pass_3d_node.rs index 25cf2ac75c58e..fe7ba44d06743 100644 --- a/crates/bevy_core_pipeline/src/core_3d/main_opaque_pass_3d_node.rs +++ b/crates/bevy_core_pipeline/src/core_3d/main_opaque_pass_3d_node.rs @@ -4,9 +4,11 @@ use crate::{ }; use bevy_camera::{MainPassResolutionOverride, Viewport}; use bevy_ecs::{prelude::World, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_phase::{TrackedRenderPass, ViewBinnedRenderPhases}, render_resource::{CommandEncoderDescriptor, PipelineCache, RenderPassDescriptor, StoreOp}, @@ -65,6 +67,7 @@ impl ViewNode for MainOpaquePass3dNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let color_attachments = [Some(target.get_color_attachment())]; @@ -90,6 +93,7 @@ impl ViewNode for MainOpaquePass3dNode { occlusion_query_set: None, }); let mut render_pass = TrackedRenderPass::new(&render_device, render_pass); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "main_opaque_pass_3d"); if let Some(viewport) = @@ -132,6 +136,7 @@ impl ViewNode for MainOpaquePass3dNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); drop(render_pass); command_encoder.finish() diff --git a/crates/bevy_core_pipeline/src/core_3d/main_transmissive_pass_3d_node.rs b/crates/bevy_core_pipeline/src/core_3d/main_transmissive_pass_3d_node.rs index 1319534bf3971..05e45171f8b71 100644 --- a/crates/bevy_core_pipeline/src/core_3d/main_transmissive_pass_3d_node.rs +++ b/crates/bevy_core_pipeline/src/core_3d/main_transmissive_pass_3d_node.rs @@ -3,9 +3,11 @@ use crate::core_3d::Transmissive3d; use bevy_camera::{Camera3d, MainPassResolutionOverride, Viewport}; use bevy_ecs::{prelude::*, query::QueryItem}; use bevy_image::ToExtents; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_phase::ViewSortedRenderPhases, render_resource::{RenderPassDescriptor, StoreOp}, @@ -54,6 +56,7 @@ impl ViewNode for MainTransmissivePass3dNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let physical_target_size = camera.physical_target_size.unwrap(); @@ -98,6 +101,7 @@ impl ViewNode for MainTransmissivePass3dNode { let mut render_pass = render_context.begin_tracked_render_pass(render_pass_descriptor.clone()); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "main_transmissive_pass_3d"); @@ -112,11 +116,13 @@ impl ViewNode for MainTransmissivePass3dNode { error!("Error encountered while rendering the transmissive phase {err:?}"); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); } } else { let mut render_pass = render_context.begin_tracked_render_pass(render_pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "main_transmissive_pass_3d"); @@ -131,6 +137,7 @@ impl ViewNode for MainTransmissivePass3dNode { error!("Error encountered while rendering the transmissive phase {err:?}"); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); } } diff --git a/crates/bevy_core_pipeline/src/core_3d/main_transparent_pass_3d_node.rs b/crates/bevy_core_pipeline/src/core_3d/main_transparent_pass_3d_node.rs index bd54b7849e9c5..11d3cf2a61037 100644 --- a/crates/bevy_core_pipeline/src/core_3d/main_transparent_pass_3d_node.rs +++ b/crates/bevy_core_pipeline/src/core_3d/main_transparent_pass_3d_node.rs @@ -1,9 +1,11 @@ use crate::core_3d::Transparent3d; use bevy_camera::{MainPassResolutionOverride, Viewport}; use bevy_ecs::{prelude::*, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_phase::ViewSortedRenderPhases, render_resource::{RenderPassDescriptor, StoreOp}, @@ -52,6 +54,7 @@ impl ViewNode for MainTransparentPass3dNode { #[cfg(feature = "trace")] let _main_transparent_pass_3d_span = info_span!("main_transparent_pass_3d").entered(); + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let mut render_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor { @@ -68,6 +71,7 @@ impl ViewNode for MainTransparentPass3dNode { occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "main_transparent_pass_3d"); if let Some(viewport) = @@ -80,6 +84,7 @@ impl ViewNode for MainTransparentPass3dNode { error!("Error encountered while rendering the transparent phase {err:?}"); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); } diff --git a/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs b/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs index 1889fc33ce6d9..1e44186f55af7 100644 --- a/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs +++ b/crates/bevy_core_pipeline/src/deferred/copy_lighting_id.rs @@ -6,9 +6,11 @@ use bevy_app::prelude::*; use bevy_asset::{embedded_asset, load_embedded_asset, AssetServer}; use bevy_ecs::prelude::*; use bevy_image::ToExtents; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_resource::{binding_types::texture_2d, *}, renderer::RenderDevice, texture::{CachedTexture, TextureCache}, @@ -78,6 +80,7 @@ impl ViewNode for CopyDeferredLightingIdNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let bind_group = render_context.render_device().create_bind_group( @@ -101,12 +104,14 @@ impl ViewNode for CopyDeferredLightingIdNode { occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "copy_deferred_lighting_id"); render_pass.set_render_pipeline(pipeline); render_pass.set_bind_group(0, &bind_group, &[]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_core_pipeline/src/deferred/node.rs b/crates/bevy_core_pipeline/src/deferred/node.rs index 49bf3dc5adf19..9c226c6af1151 100644 --- a/crates/bevy_core_pipeline/src/deferred/node.rs +++ b/crates/bevy_core_pipeline/src/deferred/node.rs @@ -4,9 +4,11 @@ use bevy_render::experimental::occlusion_culling::OcclusionCulling; use bevy_render::render_graph::ViewNode; use bevy_render::view::{ExtractedView, NoIndirectDrawing}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext}, render_phase::{TrackedRenderPass, ViewBinnedRenderPhases}, render_resource::{CommandEncoderDescriptor, RenderPassDescriptor, StoreOp}, @@ -131,6 +133,7 @@ fn run_deferred_prepass<'w>( return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostic = render_context.diagnostic_recorder(); let mut color_attachments = vec![]; @@ -225,6 +228,7 @@ fn run_deferred_prepass<'w>( occlusion_query_set: None, }); let mut render_pass = TrackedRenderPass::new(&render_device, render_pass); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostic.pass_span(&mut render_pass, label); if let Some(viewport) = Viewport::from_viewport_and_override(camera.viewport.as_ref(), resolution_override) @@ -254,6 +258,7 @@ fn run_deferred_prepass<'w>( } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); drop(render_pass); diff --git a/crates/bevy_core_pipeline/src/mip_generation/mod.rs b/crates/bevy_core_pipeline/src/mip_generation/mod.rs index aa19f8994a750..56494c51cecaf 100644 --- a/crates/bevy_core_pipeline/src/mip_generation/mod.rs +++ b/crates/bevy_core_pipeline/src/mip_generation/mod.rs @@ -32,8 +32,10 @@ use bevy_image::Image; use bevy_log::error; use bevy_math::{vec2, Vec2}; use bevy_platform::collections::{hash_map::Entry, HashMap, HashSet}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics as _; use bevy_render::{ - diagnostic::RecordDiagnostics as _, render_asset::RenderAssets, render_resource::{ binding_types::uniform_buffer, BindGroupLayoutDescriptor, FilterMode, ShaderType, @@ -416,6 +418,7 @@ impl Node for MipGenerationNode { let mip_generation_bind_groups = world.resource::(); let gpu_images = world.resource::>(); + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); for mip_generation_job in mip_generation_phase.iter() { @@ -454,6 +457,7 @@ impl Node for MipGenerationNode { label: Some("mip generation pass 1"), timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass_1, "mip generation pass 1"); compute_pass_1.set_pipeline(mip_generation_pipeline_pass_1); compute_pass_1.set_bind_group( @@ -466,6 +470,7 @@ impl Node for MipGenerationNode { gpu_image.size.height.div_ceil(64), 1, ); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass_1); } @@ -478,6 +483,7 @@ impl Node for MipGenerationNode { label: Some("mip generation pass 2"), timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass_2, "mip generation pass 2"); compute_pass_2.set_pipeline(mip_generation_pipeline_pass_2); compute_pass_2.set_bind_group( @@ -490,6 +496,7 @@ impl Node for MipGenerationNode { gpu_image.size.height.div_ceil(256), 1, ); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass_2); } } diff --git a/crates/bevy_core_pipeline/src/oit/resolve/node.rs b/crates/bevy_core_pipeline/src/oit/resolve/node.rs index 4aa1ee201c8f6..998ddc2fb4c4c 100644 --- a/crates/bevy_core_pipeline/src/oit/resolve/node.rs +++ b/crates/bevy_core_pipeline/src/oit/resolve/node.rs @@ -1,8 +1,10 @@ use bevy_camera::{MainPassResolutionOverride, Viewport}; use bevy_ecs::{prelude::*, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, RenderLabel, ViewNode}, render_resource::{BindGroupEntries, PipelineCache, RenderPassDescriptor}, renderer::RenderContext, @@ -51,6 +53,7 @@ impl ViewNode for OitResolveNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let depth_bind_group = render_context.render_device().create_bind_group( @@ -67,6 +70,7 @@ impl ViewNode for OitResolveNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "oit_resolve"); if let Some(viewport) = @@ -81,6 +85,7 @@ impl ViewNode for OitResolveNode { render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); } diff --git a/crates/bevy_core_pipeline/src/prepass/node.rs b/crates/bevy_core_pipeline/src/prepass/node.rs index d429fc9289d76..85d986cd4a3ba 100644 --- a/crates/bevy_core_pipeline/src/prepass/node.rs +++ b/crates/bevy_core_pipeline/src/prepass/node.rs @@ -1,8 +1,10 @@ use bevy_camera::{MainPassResolutionOverride, Viewport}; use bevy_ecs::{prelude::*, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, experimental::occlusion_culling::OcclusionCulling, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_phase::{TrackedRenderPass, ViewBinnedRenderPhases}, @@ -142,6 +144,7 @@ fn run_prepass<'w>( return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let mut color_attachments = vec![ @@ -185,6 +188,7 @@ fn run_prepass<'w>( }); let mut render_pass = TrackedRenderPass::new(&render_device, render_pass); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, label); if let Some(viewport) = @@ -234,6 +238,7 @@ fn run_prepass<'w>( } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); drop(render_pass); diff --git a/crates/bevy_core_pipeline/src/tonemapping/node.rs b/crates/bevy_core_pipeline/src/tonemapping/node.rs index 19fb63b6347e8..178fa5b50a594 100644 --- a/crates/bevy_core_pipeline/src/tonemapping/node.rs +++ b/crates/bevy_core_pipeline/src/tonemapping/node.rs @@ -3,8 +3,10 @@ use std::sync::Mutex; use crate::tonemapping::{TonemappingLuts, TonemappingPipeline, ViewTonemappingPipeline}; use bevy_ecs::{prelude::*, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, render_asset::RenderAssets, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_resource::{ @@ -61,6 +63,7 @@ impl ViewNode for TonemappingNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let post_process = target.post_process_write(); @@ -135,12 +138,14 @@ impl ViewNode for TonemappingNode { let mut render_pass = render_context .command_encoder() .begin_render_pass(&pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "tonemapping"); render_pass.set_pipeline(pipeline); render_pass.set_bind_group(0, bind_group, &[view_uniform_offset.offset]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_core_pipeline/src/upscaling/node.rs b/crates/bevy_core_pipeline/src/upscaling/node.rs index 3d7b2c9905068..47f577636b00f 100644 --- a/crates/bevy_core_pipeline/src/upscaling/node.rs +++ b/crates/bevy_core_pipeline/src/upscaling/node.rs @@ -1,9 +1,11 @@ use crate::{blit::BlitPipeline, upscaling::ViewUpscalingPipeline}; use bevy_camera::{CameraOutputMode, ClearColor, ClearColorConfig}; use bevy_ecs::{prelude::*, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_resource::{BindGroup, PipelineCache, RenderPassDescriptor, TextureViewId}, renderer::RenderContext, @@ -34,6 +36,7 @@ impl ViewNode for UpscalingNode { let blit_pipeline = world.resource::(); let clear_color_global = world.resource::(); + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let clear_color = if let Some(camera) = camera { @@ -86,6 +89,7 @@ impl ViewNode for UpscalingNode { let mut render_pass = render_context .command_encoder() .begin_render_pass(&pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "upscaling"); if let Some(camera) = camera @@ -100,6 +104,7 @@ impl ViewNode for UpscalingNode { render_pass.set_bind_group(0, bind_group, &[]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_pbr/src/atmosphere/node.rs b/crates/bevy_pbr/src/atmosphere/node.rs index 9f640b524b886..7821ae19fcf0e 100644 --- a/crates/bevy_pbr/src/atmosphere/node.rs +++ b/crates/bevy_pbr/src/atmosphere/node.rs @@ -1,9 +1,11 @@ use bevy_camera::{MainPassResolutionOverride, Viewport}; use bevy_ecs::{query::QueryItem, system::lifetimeless::Read, world::World}; use bevy_math::{UVec2, Vec3Swizzles}; +// render diagnostics are not supported on mac; feature gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, extract_component::DynamicUniformIndex, render_graph::{NodeRunError, RenderGraphContext, RenderLabel, ViewNode}, render_resource::{ComputePass, ComputePassDescriptor, PipelineCache, RenderPassDescriptor}, @@ -73,7 +75,7 @@ impl ViewNode for AtmosphereLutsNode { else { return Ok(()); }; - + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let command_encoder = render_context.command_encoder(); @@ -82,6 +84,7 @@ impl ViewNode for AtmosphereLutsNode { label: Some("atmosphere_luts"), timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut luts_pass, "atmosphere_luts"); fn dispatch_2d(compute_pass: &mut ComputePass, size: UVec2) { @@ -156,6 +159,7 @@ impl ViewNode for AtmosphereLutsNode { dispatch_2d(&mut luts_pass, settings.aerial_view_lut_size.xy()); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut luts_pass); Ok(()) @@ -204,6 +208,7 @@ impl ViewNode for RenderSkyNode { return Ok(()); }; //TODO: warning + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let mut render_sky_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor { @@ -213,6 +218,7 @@ impl ViewNode for RenderSkyNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_sky_pass, "render_sky"); if let Some(viewport) = @@ -235,6 +241,7 @@ impl ViewNode for RenderSkyNode { ); render_sky_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_sky_pass); Ok(()) diff --git a/crates/bevy_pbr/src/deferred/mod.rs b/crates/bevy_pbr/src/deferred/mod.rs index 41766372d9f36..9792d3ad9b467 100644 --- a/crates/bevy_pbr/src/deferred/mod.rs +++ b/crates/bevy_pbr/src/deferred/mod.rs @@ -22,8 +22,10 @@ use bevy_ecs::{prelude::*, query::QueryItem}; use bevy_image::BevyDefault as _; use bevy_light::{EnvironmentMapLight, IrradianceVolume, ShadowFilteringMethod}; use bevy_render::RenderStartup; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, extract_component::{ ComponentUniforms, ExtractComponent, ExtractComponentPlugin, UniformComponentPlugin, }, @@ -181,6 +183,7 @@ impl ViewNode for DeferredOpaquePass3dPbrLightingNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let bind_group_2 = render_context.render_device().create_bind_group( @@ -203,6 +206,7 @@ impl ViewNode for DeferredOpaquePass3dPbrLightingNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "deferred_lighting"); render_pass.set_render_pipeline(pipeline); @@ -222,6 +226,7 @@ impl ViewNode for DeferredOpaquePass3dPbrLightingNode { render_pass.set_bind_group(2, &bind_group_2, &[]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_pbr/src/light_probe/generate.rs b/crates/bevy_pbr/src/light_probe/generate.rs index 8eaae00c5da34..3c22d688842d3 100644 --- a/crates/bevy_pbr/src/light_probe/generate.rs +++ b/crates/bevy_pbr/src/light_probe/generate.rs @@ -28,8 +28,10 @@ use bevy_ecs::{ }; use bevy_image::Image; use bevy_math::{Quat, UVec2, Vec2}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, render_asset::RenderAssets, render_graph::{Node, NodeRunError, RenderGraphContext, RenderGraphExt, RenderLabel}, render_resource::{ @@ -901,6 +903,7 @@ impl Node for DownsamplingNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); for (_, bind_groups, env_map_light) in self.query.iter_manual(world) { @@ -918,6 +921,7 @@ impl Node for DownsamplingNode { timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, "lightprobe_copy"); compute_pass.set_pipeline(copy_pipeline); @@ -928,6 +932,7 @@ impl Node for DownsamplingNode { let wg_y = tex_size.height.div_ceil(8); compute_pass.dispatch_workgroups(wg_x, wg_y, 6); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); } @@ -941,6 +946,7 @@ impl Node for DownsamplingNode { timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, "lightprobe_downsampling_first_pass"); @@ -952,6 +958,7 @@ impl Node for DownsamplingNode { let wg_y = tex_size.height.div_ceil(64); compute_pass.dispatch_workgroups(wg_x, wg_y, 6); // 6 faces + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); } @@ -965,6 +972,7 @@ impl Node for DownsamplingNode { timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, "lightprobe_downsampling_second_pass"); @@ -976,6 +984,7 @@ impl Node for DownsamplingNode { let wg_y = tex_size.height.div_ceil(256); compute_pass.dispatch_workgroups(wg_x, wg_y, 6); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); } } @@ -1024,6 +1033,7 @@ impl Node for FilteringNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); for (_, bind_groups, env_map_light) in self.query.iter_manual(world) { @@ -1035,6 +1045,7 @@ impl Node for FilteringNode { timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, "lightprobe_radiance_map"); compute_pass.set_pipeline(radiance_pipeline); @@ -1053,6 +1064,7 @@ impl Node for FilteringNode { // Dispatch for all 6 faces compute_pass.dispatch_workgroups(workgroup_count, workgroup_count, 6); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); // End the compute pass before starting the next one drop(compute_pass); @@ -1068,6 +1080,7 @@ impl Node for FilteringNode { timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let irr_span = diagnostics.pass_span(&mut compute_pass, "lightprobe_irradiance_map"); @@ -1077,6 +1090,7 @@ impl Node for FilteringNode { // 32×32 texture processed with 8×8 workgroups for all 6 faces compute_pass.dispatch_workgroups(4, 4, 6); + #[cfg(not(target_os = "macos"))] irr_span.end(&mut compute_pass); } } diff --git a/crates/bevy_pbr/src/meshlet/material_shade_nodes.rs b/crates/bevy_pbr/src/meshlet/material_shade_nodes.rs index 890df912f4e93..7d0298d61f9d1 100644 --- a/crates/bevy_pbr/src/meshlet/material_shade_nodes.rs +++ b/crates/bevy_pbr/src/meshlet/material_shade_nodes.rs @@ -19,9 +19,11 @@ use bevy_ecs::{ query::{Has, QueryItem}, world::World, }; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_resource::{ LoadOp, Operations, PipelineCache, RenderPassDepthStencilAttachment, RenderPassDescriptor, @@ -91,6 +93,7 @@ impl ViewNode for MeshletMainOpaquePass3dNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let mut render_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor { @@ -107,6 +110,7 @@ impl ViewNode for MeshletMainOpaquePass3dNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "meshlet_material_opaque_3d_pass"); if let Some(viewport) = Viewport::from_viewport_and_override(camera.viewport.as_ref(), resolution_override) @@ -144,6 +148,7 @@ impl ViewNode for MeshletMainOpaquePass3dNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) @@ -204,6 +209,7 @@ impl ViewNode for MeshletPrepassNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let color_attachments = vec![ @@ -234,6 +240,7 @@ impl ViewNode for MeshletPrepassNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "meshlet_material_prepass"); if let Some(viewport) = Viewport::from_viewport_and_override(camera.viewport.as_ref(), resolution_override) @@ -276,6 +283,7 @@ impl ViewNode for MeshletPrepassNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) @@ -355,6 +363,7 @@ impl ViewNode for MeshletDeferredGBufferPrepassNode { .map(|deferred_lighting_pass_id| deferred_lighting_pass_id.get_attachment()), ]; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let mut render_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor { @@ -371,6 +380,7 @@ impl ViewNode for MeshletDeferredGBufferPrepassNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "meshlet_material_deferred_prepass"); if let Some(viewport) = @@ -414,6 +424,7 @@ impl ViewNode for MeshletDeferredGBufferPrepassNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_pbr/src/meshlet/visibility_buffer_raster_node.rs b/crates/bevy_pbr/src/meshlet/visibility_buffer_raster_node.rs index fee4741308b85..d223c8ea11fd9 100644 --- a/crates/bevy_pbr/src/meshlet/visibility_buffer_raster_node.rs +++ b/crates/bevy_pbr/src/meshlet/visibility_buffer_raster_node.rs @@ -12,9 +12,11 @@ use bevy_ecs::{ world::{FromWorld, World}, }; use bevy_math::UVec2; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{Node, NodeRunError, RenderGraphContext}, render_resource::*, renderer::RenderContext, @@ -105,11 +107,13 @@ impl Node for MeshletVisibilityBufferRasterPassNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); render_context .command_encoder() .push_debug_group("meshlet_visibility_buffer_raster"); + #[cfg(not(target_os = "macos"))] let time_span = diagnostics.time_span( render_context.command_encoder(), "meshlet_visibility_buffer_raster", @@ -246,6 +250,7 @@ impl Node for MeshletVisibilityBufferRasterPassNode { "meshlet_visibility_buffer_raster: {}", shadow_view.pass_name )); + #[cfg(not(target_os = "macos"))] let time_span_shadow = diagnostics.time_span( render_context.command_encoder(), shadow_view.pass_name.clone(), @@ -342,9 +347,11 @@ impl Node for MeshletVisibilityBufferRasterPassNode { downsample_depth_second_shadow_view_pipeline, ); render_context.command_encoder().pop_debug_group(); + #[cfg(not(target_os = "macos"))] time_span_shadow.end(render_context.command_encoder()); } + #[cfg(not(target_os = "macos"))] time_span.end(render_context.command_encoder()); Ok(()) diff --git a/crates/bevy_pbr/src/render/gpu_preprocess.rs b/crates/bevy_pbr/src/render/gpu_preprocess.rs index ed3040c52cb11..675c8fb8a6ddd 100644 --- a/crates/bevy_pbr/src/render/gpu_preprocess.rs +++ b/crates/bevy_pbr/src/render/gpu_preprocess.rs @@ -26,6 +26,9 @@ use bevy_ecs::{ system::{lifetimeless::Read, Commands, Query, Res, ResMut}, world::{FromWorld, World}, }; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ batching::gpu_preprocessing::{ BatchedInstanceBuffers, GpuOcclusionCullingWorkItemBuffers, GpuPreprocessingMode, @@ -35,7 +38,6 @@ use bevy_render::{ PreprocessWorkItemBuffers, UntypedPhaseBatchedInstanceBuffers, UntypedPhaseIndirectParametersBuffers, }, - diagnostic::RecordDiagnostics, experimental::occlusion_culling::OcclusionCulling, render_graph::{Node, NodeRunError, RenderGraphContext, RenderGraphExt}, render_resource::{ @@ -582,6 +584,7 @@ impl Node for EarlyGpuPreprocessNode { render_context: &mut RenderContext<'w>, world: &'w World, ) -> Result<(), NodeRunError> { + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); // Grab the [`BatchedInstanceBuffers`]. @@ -598,6 +601,7 @@ impl Node for EarlyGpuPreprocessNode { label: Some("early_mesh_preprocessing"), timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, "early_mesh_preprocessing"); let mut all_views: SmallVec<[_; 8]> = SmallVec::new(); @@ -774,6 +778,7 @@ impl Node for EarlyGpuPreprocessNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); Ok(()) @@ -823,6 +828,7 @@ impl Node for LateGpuPreprocessNode { render_context: &mut RenderContext<'w>, world: &'w World, ) -> Result<(), NodeRunError> { + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); // Grab the [`BatchedInstanceBuffers`]. @@ -856,6 +862,7 @@ impl Node for LateGpuPreprocessNode { timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, "late_mesh_preprocessing"); // Run the compute passes. @@ -948,6 +955,7 @@ impl Node for LateGpuPreprocessNode { } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); Ok(()) @@ -1044,6 +1052,7 @@ fn run_build_indirect_parameters_node( return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let pipeline_cache = world.resource::(); @@ -1056,6 +1065,7 @@ fn run_build_indirect_parameters_node( label: Some(label), timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, label); // Fetch the pipeline. @@ -1076,6 +1086,7 @@ fn run_build_indirect_parameters_node( ) else { warn!("The build indirect parameters pipelines weren't ready"); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); return Ok(()); }; @@ -1091,6 +1102,7 @@ fn run_build_indirect_parameters_node( ) else { // This will happen while the pipeline is being compiled and is fine. + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); return Ok(()); }; @@ -1163,6 +1175,7 @@ fn run_build_indirect_parameters_node( } } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); Ok(()) diff --git a/crates/bevy_pbr/src/render/light.rs b/crates/bevy_pbr/src/render/light.rs index 9c95f0711493d..bdadf1849b539 100644 --- a/crates/bevy_pbr/src/render/light.rs +++ b/crates/bevy_pbr/src/render/light.rs @@ -42,8 +42,14 @@ use bevy_render::{ mesh::allocator::MeshAllocator, view::{NoIndirectDrawing, RetainedViewEntity}, }; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; +use bevy_render::{ + mesh::allocator::SlabId, + sync_world::{MainEntity, RenderEntity}, +}; use bevy_render::{ - diagnostic::RecordDiagnostics, mesh::RenderMesh, render_asset::RenderAssets, render_graph::{Node, NodeRunError, RenderGraphContext}, @@ -54,10 +60,6 @@ use bevy_render::{ view::ExtractedView, Extract, }; -use bevy_render::{ - mesh::allocator::SlabId, - sync_world::{MainEntity, RenderEntity}, -}; use bevy_transform::{components::GlobalTransform, prelude::Transform}; use bevy_utils::default; use core::{hash::Hash, ops::Range}; @@ -2320,6 +2322,7 @@ impl ShadowPassNode { let depth_stencil_attachment = Some(view_light.depth_attachment.get_attachment(StoreOp::Store)); + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); render_context.add_command_buffer_generation_task(move |render_device| { #[cfg(feature = "trace")] @@ -2338,6 +2341,7 @@ impl ShadowPassNode { }); let mut render_pass = TrackedRenderPass::new(&render_device, render_pass); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, view_light.pass_name.clone()); @@ -2347,6 +2351,7 @@ impl ShadowPassNode { error!("Error encountered while rendering the shadow phase {err:?}"); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); drop(render_pass); command_encoder.finish() diff --git a/crates/bevy_pbr/src/ssao/mod.rs b/crates/bevy_pbr/src/ssao/mod.rs index 81aa5aa4aed65..db40a7f3b3198 100644 --- a/crates/bevy_pbr/src/ssao/mod.rs +++ b/crates/bevy_pbr/src/ssao/mod.rs @@ -17,9 +17,11 @@ use bevy_ecs::{ }; use bevy_image::ToExtents; use bevy_reflect::{std_traits::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::{ExtractedCamera, TemporalJitter}, - diagnostic::RecordDiagnostics, extract_component::ExtractComponent, globals::{GlobalsBuffer, GlobalsUniform}, render_graph::{NodeRunError, RenderGraphContext, RenderGraphExt, ViewNode, ViewNodeRunner}, @@ -206,10 +208,12 @@ impl ViewNode for SsaoNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let command_encoder = render_context.command_encoder(); command_encoder.push_debug_group("ssao"); + #[cfg(not(target_os = "macos"))] let time_span = diagnostics.time_span(command_encoder, "ssao"); { @@ -267,6 +271,7 @@ impl ViewNode for SsaoNode { ); } + #[cfg(not(target_os = "macos"))] time_span.end(command_encoder); command_encoder.pop_debug_group(); Ok(()) diff --git a/crates/bevy_pbr/src/ssr/mod.rs b/crates/bevy_pbr/src/ssr/mod.rs index 7bd9d02c529de..bdc1773beb55f 100644 --- a/crates/bevy_pbr/src/ssr/mod.rs +++ b/crates/bevy_pbr/src/ssr/mod.rs @@ -24,8 +24,10 @@ use bevy_ecs::{ use bevy_image::BevyDefault as _; use bevy_light::EnvironmentMapLight; use bevy_reflect::{std_traits::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, extract_component::{ExtractComponent, ExtractComponentPlugin}, render_graph::{ NodeRunError, RenderGraph, RenderGraphContext, RenderGraphExt, ViewNode, ViewNodeRunner, @@ -286,6 +288,7 @@ impl ViewNode for ScreenSpaceReflectionsNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); // Set up a standard pair of postprocessing textures. @@ -317,6 +320,7 @@ impl ViewNode for ScreenSpaceReflectionsNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "ssr"); // Set bind groups. @@ -339,6 +343,7 @@ impl ViewNode for ScreenSpaceReflectionsNode { render_pass.set_bind_group(2, &ssr_bind_group, &[]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_pbr/src/volumetric_fog/render.rs b/crates/bevy_pbr/src/volumetric_fog/render.rs index e0ddc3ccefe74..2ceee79eb3770 100644 --- a/crates/bevy_pbr/src/volumetric_fog/render.rs +++ b/crates/bevy_pbr/src/volumetric_fog/render.rs @@ -21,8 +21,10 @@ use bevy_image::{BevyDefault, Image}; use bevy_light::{FogVolume, VolumetricFog, VolumetricLight}; use bevy_math::{vec4, Affine3A, Mat4, Vec3, Vec3A, Vec4}; use bevy_mesh::{Mesh, MeshVertexBufferLayoutRef}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, mesh::{allocator::MeshAllocator, RenderMesh, RenderMeshBufferInfo}, render_asset::RenderAssets, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, @@ -359,10 +361,12 @@ impl ViewNode for VolumetricFogNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); render_context .command_encoder() .push_debug_group("volumetric_lighting"); + #[cfg(not(target_os = "macos"))] let time_span = diagnostics.time_span(render_context.command_encoder(), "volumetric_lighting"); @@ -501,6 +505,7 @@ impl ViewNode for VolumetricFogNode { } } + #[cfg(not(target_os = "macos"))] time_span.end(render_context.command_encoder()); render_context.command_encoder().pop_debug_group(); diff --git a/crates/bevy_pbr/src/wireframe.rs b/crates/bevy_pbr/src/wireframe.rs index c4b19df63f09f..c6696cf1e9482 100644 --- a/crates/bevy_pbr/src/wireframe.rs +++ b/crates/bevy_pbr/src/wireframe.rs @@ -24,10 +24,12 @@ use bevy_platform::{ hash::FixedHasher, }; use bevy_reflect::{std_traits::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ batching::gpu_preprocessing::{GpuPreprocessingMode, GpuPreprocessingSupport}, camera::{extract_cameras, ExtractedCamera}, - diagnostic::RecordDiagnostics, extract_resource::ExtractResource, mesh::{ allocator::{MeshAllocator, SlabId}, @@ -393,6 +395,7 @@ impl ViewNode for Wireframe3dNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let mut render_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor { @@ -402,6 +405,7 @@ impl ViewNode for Wireframe3dNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "wireframe_3d"); if let Some(viewport) = camera.viewport.as_ref() { @@ -413,6 +417,7 @@ impl ViewNode for Wireframe3dNode { return Err(NodeRunError::DrawError(err)); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_post_process/src/auto_exposure/node.rs b/crates/bevy_post_process/src/auto_exposure/node.rs index 125c300241ccb..c3a7ea5e0f8f2 100644 --- a/crates/bevy_post_process/src/auto_exposure/node.rs +++ b/crates/bevy_post_process/src/auto_exposure/node.rs @@ -9,8 +9,10 @@ use bevy_ecs::{ system::lifetimeless::Read, world::{FromWorld, World}, }; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, globals::GlobalsBuffer, render_asset::RenderAssets, render_graph::*, @@ -99,6 +101,7 @@ impl Node for AutoExposureNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let compute_bind_group = render_context.render_device().create_bind_group( @@ -128,6 +131,7 @@ impl Node for AutoExposureNode { label: Some("auto_exposure"), timestamp_writes: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut compute_pass, "auto_exposure"); compute_pass.set_bind_group(0, &compute_bind_group, &[view_uniform_offset.offset]); @@ -140,6 +144,7 @@ impl Node for AutoExposureNode { compute_pass.set_pipeline(average_pipeline); compute_pass.dispatch_workgroups(1, 1, 1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut compute_pass); Ok(()) diff --git a/crates/bevy_post_process/src/bloom/mod.rs b/crates/bevy_post_process/src/bloom/mod.rs index 07eb83571e187..cb4db1620fde2 100644 --- a/crates/bevy_post_process/src/bloom/mod.rs +++ b/crates/bevy_post_process/src/bloom/mod.rs @@ -18,9 +18,11 @@ use bevy_core_pipeline::{ }; use bevy_ecs::{prelude::*, query::QueryItem}; use bevy_math::{ops, UVec2}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, extract_component::{ ComponentUniforms, DynamicUniformIndex, ExtractComponentPlugin, UniformComponentPlugin, }, @@ -160,6 +162,7 @@ impl ViewNode for BloomNode { let view_texture = view_target.main_texture_view(); let view_texture_unsampled = view_target.get_unsampled_color_attachment(); + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); render_context.add_command_buffer_generation_task(move |render_device| { @@ -171,6 +174,7 @@ impl ViewNode for BloomNode { label: Some("bloom_command_encoder"), }); command_encoder.push_debug_group("bloom"); + #[cfg(not(target_os = "macos"))] let time_span = diagnostics.time_span(&mut command_encoder, "bloom"); // First downsample pass @@ -304,6 +308,7 @@ impl ViewNode for BloomNode { upsampling_final_pass.draw(0..3, 0..1); } + #[cfg(not(target_os = "macos"))] time_span.end(&mut command_encoder); command_encoder.pop_debug_group(); command_encoder.finish() diff --git a/crates/bevy_post_process/src/dof/mod.rs b/crates/bevy_post_process/src/dof/mod.rs index 4cff455fe7fde..f6b2a215d633a 100644 --- a/crates/bevy_post_process/src/dof/mod.rs +++ b/crates/bevy_post_process/src/dof/mod.rs @@ -31,8 +31,10 @@ use bevy_ecs::{ use bevy_image::BevyDefault as _; use bevy_math::ops; use bevy_reflect::{prelude::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, extract_component::{ComponentUniforms, DynamicUniformIndex, UniformComponentPlugin}, render_graph::{ NodeRunError, RenderGraphContext, RenderGraphExt as _, ViewNode, ViewNodeRunner, @@ -355,6 +357,7 @@ impl ViewNode for DepthOfFieldNode { let view_uniforms = world.resource::(); let global_bind_group = world.resource::(); + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); // We can be in either Gaussian blur or bokeh mode here. Both modes are @@ -451,6 +454,7 @@ impl ViewNode for DepthOfFieldNode { let mut render_pass = render_context .command_encoder() .begin_render_pass(&render_pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, pipeline_render_info.pass_label); @@ -466,6 +470,7 @@ impl ViewNode for DepthOfFieldNode { // Render the full-screen pass. render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); } diff --git a/crates/bevy_post_process/src/effect_stack/mod.rs b/crates/bevy_post_process/src/effect_stack/mod.rs index 444377781b83d..04b441953df3a 100644 --- a/crates/bevy_post_process/src/effect_stack/mod.rs +++ b/crates/bevy_post_process/src/effect_stack/mod.rs @@ -20,8 +20,10 @@ use bevy_ecs::{ }; use bevy_image::{BevyDefault, Image}; use bevy_reflect::{std_traits::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, extract_component::{ExtractComponent, ExtractComponentPlugin}, render_asset::RenderAssets, render_graph::{ @@ -374,6 +376,7 @@ impl ViewNode for PostProcessingNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); // Use the [`PostProcessWrite`] infrastructure, since this is a @@ -408,12 +411,14 @@ impl ViewNode for PostProcessingNode { let mut render_pass = render_context .command_encoder() .begin_render_pass(&pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "postprocessing"); render_pass.set_pipeline(pipeline); render_pass.set_bind_group(0, &bind_group, &[**post_processing_uniform_buffer_offsets]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_post_process/src/motion_blur/node.rs b/crates/bevy_post_process/src/motion_blur/node.rs index 179cb01e00ff3..708e263153cef 100644 --- a/crates/bevy_post_process/src/motion_blur/node.rs +++ b/crates/bevy_post_process/src/motion_blur/node.rs @@ -1,6 +1,8 @@ use bevy_ecs::{query::QueryItem, world::World}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, extract_component::ComponentUniforms, globals::GlobalsBuffer, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, @@ -60,6 +62,7 @@ impl ViewNode for MotionBlurNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let post_process = view_target.post_process_write(); @@ -95,12 +98,14 @@ impl ViewNode for MotionBlurNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "motion_blur"); render_pass.set_render_pipeline(pipeline); render_pass.set_bind_group(0, &bind_group, &[]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_post_process/src/msaa_writeback.rs b/crates/bevy_post_process/src/msaa_writeback.rs index 0a35088f7f0f4..04bf36e6bba8a 100644 --- a/crates/bevy_post_process/src/msaa_writeback.rs +++ b/crates/bevy_post_process/src/msaa_writeback.rs @@ -7,9 +7,11 @@ use bevy_core_pipeline::{ core_3d::graph::{Core3d, Node3d}, }; use bevy_ecs::{prelude::*, query::QueryItem}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, RenderGraphExt, ViewNode, ViewNodeRunner}, render_resource::*, renderer::RenderContext, @@ -77,6 +79,7 @@ impl ViewNode for MsaaWritebackNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); // The current "main texture" needs to be bound as an input resource, and we need the "other" @@ -113,12 +116,14 @@ impl ViewNode for MsaaWritebackNode { let mut render_pass = render_context .command_encoder() .begin_render_pass(&pass_descriptor); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "msaa_writeback"); render_pass.set_pipeline(pipeline); render_pass.set_bind_group(0, &bind_group, &[]); render_pass.draw(0..3, 0..1); + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_solari/src/realtime/node.rs b/crates/bevy_solari/src/realtime/node.rs index ac8fc69456e63..e9478ec4e45f3 100644 --- a/crates/bevy_solari/src/realtime/node.rs +++ b/crates/bevy_solari/src/realtime/node.rs @@ -14,8 +14,10 @@ use bevy_ecs::{ query::QueryItem, world::{FromWorld, World}, }; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ - diagnostic::RecordDiagnostics, render_graph::{NodeRunError, RenderGraphContext, ViewNode}, render_resource::{ binding_types::{ @@ -222,6 +224,7 @@ impl ViewNode for SolariLightingNode { // Choice of number here is arbitrary let frame_index = frame_count.0.wrapping_mul(5782582); + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let command_encoder = render_context.command_encoder(); @@ -261,6 +264,7 @@ impl ViewNode for SolariLightingNode { pass.dispatch_workgroups(dx, dy, 1); } + #[cfg(not(target_os = "macos"))] let d = diagnostics.time_span(&mut pass, "solari_lighting/presample_light_tiles"); pass.set_pipeline(presample_light_tiles_pipeline); pass.set_push_constants( @@ -268,8 +272,10 @@ impl ViewNode for SolariLightingNode { bytemuck::cast_slice(&[frame_index, solari_lighting.reset as u32]), ); pass.dispatch_workgroups(LIGHT_TILE_BLOCKS as u32, 1, 1); + #[cfg(not(target_os = "macos"))] d.end(&mut pass); + #[cfg(not(target_os = "macos"))] let d = diagnostics.time_span(&mut pass, "solari_lighting/world_cache"); pass.set_bind_group(2, &bind_group_world_cache_active_cells_dispatch, &[]); @@ -304,8 +310,10 @@ impl ViewNode for SolariLightingNode { 0, ); + #[cfg(not(target_os = "macos"))] d.end(&mut pass); + #[cfg(not(target_os = "macos"))] let d = diagnostics.time_span(&mut pass, "solari_lighting/direct_lighting"); pass.set_pipeline(di_initial_and_temporal_pipeline); @@ -322,8 +330,10 @@ impl ViewNode for SolariLightingNode { ); pass.dispatch_workgroups(dx, dy, 1); + #[cfg(not(target_os = "macos"))] d.end(&mut pass); + #[cfg(not(target_os = "macos"))] let d = diagnostics.time_span(&mut pass, "solari_lighting/diffuse_indirect_lighting"); pass.set_pipeline(gi_initial_and_temporal_pipeline); @@ -340,8 +350,10 @@ impl ViewNode for SolariLightingNode { ); pass.dispatch_workgroups(dx, dy, 1); + #[cfg(not(target_os = "macos"))] d.end(&mut pass); + #[cfg(not(target_os = "macos"))] let d = diagnostics.time_span(&mut pass, "solari_lighting/specular_indirect_lighting"); pass.set_pipeline(specular_gi_pipeline); pass.set_push_constants( @@ -349,6 +361,7 @@ impl ViewNode for SolariLightingNode { bytemuck::cast_slice(&[frame_index, solari_lighting.reset as u32]), ); pass.dispatch_workgroups(dx, dy, 1); + #[cfg(not(target_os = "macos"))] d.end(&mut pass); Ok(()) diff --git a/crates/bevy_sprite_render/src/mesh2d/wireframe2d.rs b/crates/bevy_sprite_render/src/mesh2d/wireframe2d.rs index 5f9a0a0e6e54d..a4570e9b6e8da 100644 --- a/crates/bevy_sprite_render/src/mesh2d/wireframe2d.rs +++ b/crates/bevy_sprite_render/src/mesh2d/wireframe2d.rs @@ -23,10 +23,12 @@ use bevy_platform::{ hash::FixedHasher, }; use bevy_reflect::{std_traits::ReflectDefault, Reflect}; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ batching::gpu_preprocessing::GpuPreprocessingMode, camera::ExtractedCamera, - diagnostic::RecordDiagnostics, extract_resource::ExtractResource, mesh::{ allocator::{MeshAllocator, SlabId}, @@ -382,6 +384,7 @@ impl ViewNode for Wireframe2dNode { return Ok(()); }; + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); let mut render_pass = render_context.begin_tracked_render_pass(RenderPassDescriptor { @@ -391,6 +394,7 @@ impl ViewNode for Wireframe2dNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "wireframe_2d"); if let Some(viewport) = camera.viewport.as_ref() { @@ -402,6 +406,7 @@ impl ViewNode for Wireframe2dNode { return Err(NodeRunError::DrawError(err)); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(()) diff --git a/crates/bevy_ui_render/src/render_pass.rs b/crates/bevy_ui_render/src/render_pass.rs index 642f69d9350e8..3ae0c8e82a4c6 100644 --- a/crates/bevy_ui_render/src/render_pass.rs +++ b/crates/bevy_ui_render/src/render_pass.rs @@ -8,9 +8,11 @@ use bevy_ecs::{ system::{lifetimeless::*, SystemParamItem}, }; use bevy_math::FloatOrd; +// render diagnostics are not supported on mac; gating to prevent potential flickering (GH Issue #22257) +#[cfg(not(target_os = "macos"))] +use bevy_render::diagnostic::RecordDiagnostics; use bevy_render::{ camera::ExtractedCamera, - diagnostic::RecordDiagnostics, render_graph::*, render_phase::*, render_resource::{CachedRenderPipelineId, RenderPassDescriptor}, @@ -80,6 +82,7 @@ impl Node for UiPassNode { return Ok(()); } + #[cfg(not(target_os = "macos"))] let diagnostics = render_context.diagnostic_recorder(); // use the UI view entity if it is defined @@ -98,6 +101,7 @@ impl Node for UiPassNode { timestamp_writes: None, occlusion_query_set: None, }); + #[cfg(not(target_os = "macos"))] let pass_span = diagnostics.pass_span(&mut render_pass, "ui"); if let Some(viewport) = camera.viewport.as_ref() { @@ -107,6 +111,7 @@ impl Node for UiPassNode { error!("Error encountered while rendering the ui phase {err:?}"); } + #[cfg(not(target_os = "macos"))] pass_span.end(&mut render_pass); Ok(())