From e791f5dacb63539fcd57a8b072fe13306a8ce2c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Thu, 25 Aug 2022 17:07:47 +0200 Subject: [PATCH 1/3] log shaders and defs being processed --- .../bevy_render/src/render_resource/pipeline_cache.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/bevy_render/src/render_resource/pipeline_cache.rs b/crates/bevy_render/src/render_resource/pipeline_cache.rs index 0467928a33e31..2e5af79e0d336 100644 --- a/crates/bevy_render/src/render_resource/pipeline_cache.rs +++ b/crates/bevy_render/src/render_resource/pipeline_cache.rs @@ -12,7 +12,11 @@ use crate::{ use bevy_asset::{AssetEvent, Assets, Handle}; use bevy_ecs::system::{Res, ResMut}; use bevy_ecs::{event::EventReader, system::Resource}; -use bevy_utils::{default, tracing::error, Entry, HashMap, HashSet}; +use bevy_utils::{ + default, + tracing::{debug, error}, + Entry, HashMap, HashSet, +}; use std::{hash::Hash, iter::FusedIterator, mem, ops::Deref, sync::Arc}; use thiserror::Error; use wgpu::{ @@ -137,6 +141,10 @@ impl ShaderCache { shader_defs.push(String::from("NO_STORAGE_BUFFERS_SUPPORT")); } + debug!( + "processing shader {:?}, with shader defs {:?}", + handle, shader_defs + ); let processed = self.processor.process( shader, &shader_defs, From 870ae18694235f1b1a244481f64f0ce751ae535b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Thu, 25 Aug 2022 17:07:59 +0200 Subject: [PATCH 2/3] make the count of pipelines ready available --- crates/bevy_render/src/render_resource/pipeline_cache.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/bevy_render/src/render_resource/pipeline_cache.rs b/crates/bevy_render/src/render_resource/pipeline_cache.rs index 2e5af79e0d336..8576e3b991881 100644 --- a/crates/bevy_render/src/render_resource/pipeline_cache.rs +++ b/crates/bevy_render/src/render_resource/pipeline_cache.rs @@ -281,6 +281,13 @@ pub struct PipelineCache { } impl PipelineCache { + pub fn count_ready(&self) -> usize { + self.pipelines + .iter() + .filter(|pipeline| matches!(pipeline.state, CachedPipelineState::Ok(_))) + .count() + } + pub fn new(device: RenderDevice) -> Self { Self { device, From 37931f3faa800322e0d3d0302a46d133637d99d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Tue, 30 Aug 2022 22:40:12 +0200 Subject: [PATCH 3/3] expose a readonly iterator over the cached pipelines --- .../src/render_resource/pipeline_cache.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/crates/bevy_render/src/render_resource/pipeline_cache.rs b/crates/bevy_render/src/render_resource/pipeline_cache.rs index 8576e3b991881..5582e8ba45b3b 100644 --- a/crates/bevy_render/src/render_resource/pipeline_cache.rs +++ b/crates/bevy_render/src/render_resource/pipeline_cache.rs @@ -24,7 +24,7 @@ use wgpu::{ VertexBufferLayout as RawVertexBufferLayout, }; -enum PipelineDescriptor { +pub enum PipelineDescriptor { RenderPipelineDescriptor(Box), ComputePipelineDescriptor(Box), } @@ -51,9 +51,9 @@ impl CachedComputePipelineId { pub const INVALID: Self = CachedComputePipelineId(usize::MAX); } -struct CachedPipeline { - descriptor: PipelineDescriptor, - state: CachedPipelineState, +pub struct CachedPipeline { + pub descriptor: PipelineDescriptor, + pub state: CachedPipelineState, } #[derive(Debug)] @@ -281,11 +281,8 @@ pub struct PipelineCache { } impl PipelineCache { - pub fn count_ready(&self) -> usize { - self.pipelines - .iter() - .filter(|pipeline| matches!(pipeline.state, CachedPipelineState::Ok(_))) - .count() + pub fn pipelines(&self) -> impl Iterator { + self.pipelines.iter() } pub fn new(device: RenderDevice) -> Self {