mirror of
https://github.com/bevyengine/bevy
synced 2024-11-10 15:14:50 +00:00
fast-fail in as_bind_group (#12513)
# Objective prevent gpu buffer allocations when running `as_bind_group` for assets with texture dependencies that are not yet available. ## Solution reorder the binding creation so that fallible items are created first.
This commit is contained in:
parent
3549ae9e37
commit
26f2d3fb2f
1 changed files with 6 additions and 3 deletions
|
@ -272,7 +272,8 @@ pub fn derive_as_bind_group(ast: syn::DeriveInput) -> Result<TokenStream> {
|
|||
|
||||
let fallback_image = get_fallback_image(&render_path, dimension);
|
||||
|
||||
binding_impls.push(quote! {
|
||||
// insert fallible texture-based entries at 0 so that if we fail here, we exit before allocating any buffers
|
||||
binding_impls.insert(0, quote! {
|
||||
( #binding_index,
|
||||
#render_path::render_resource::OwnedBindingResource::TextureView({
|
||||
let handle: Option<&#asset_path::Handle<#render_path::texture::Image>> = (&self.#field_name).into();
|
||||
|
@ -311,7 +312,8 @@ pub fn derive_as_bind_group(ast: syn::DeriveInput) -> Result<TokenStream> {
|
|||
|
||||
let fallback_image = get_fallback_image(&render_path, *dimension);
|
||||
|
||||
binding_impls.push(quote! {
|
||||
// insert fallible texture-based entries at 0 so that if we fail here, we exit before allocating any buffers
|
||||
binding_impls.insert(0, quote! {
|
||||
(
|
||||
#binding_index,
|
||||
#render_path::render_resource::OwnedBindingResource::TextureView({
|
||||
|
@ -353,7 +355,8 @@ pub fn derive_as_bind_group(ast: syn::DeriveInput) -> Result<TokenStream> {
|
|||
|
||||
let fallback_image = get_fallback_image(&render_path, *dimension);
|
||||
|
||||
binding_impls.push(quote! {
|
||||
// insert fallible texture-based entries at 0 so that if we fail here, we exit before allocating any buffers
|
||||
binding_impls.insert(0, quote! {
|
||||
(
|
||||
#binding_index,
|
||||
#render_path::render_resource::OwnedBindingResource::Sampler({
|
||||
|
|
Loading…
Reference in a new issue