diff --git a/crates/bevy_render/src/storage.rs b/crates/bevy_render/src/storage.rs index eb9c06befef2a..eddfa555edd5a 100644 --- a/crates/bevy_render/src/storage.rs +++ b/crates/bevy_render/src/storage.rs @@ -176,10 +176,11 @@ impl RenderAsset for GpuShaderBuffer { && prev.buffer_descriptor.size == actual_size && prev.buffer_descriptor.usage == source_asset.buffer_description.usage && prev.buffer_descriptor.label == source_asset.buffer_description.label - && source_asset - .buffer_description - .usage - .contains(BufferUsages::COPY_DST) + && (!had_data + || source_asset + .buffer_description + .usage + .contains(BufferUsages::COPY_DST)) { if let Some(ref data) = source_asset.data { render_queue.write_buffer(&prev.buffer, 0, data); diff --git a/crates/bevy_render/src/texture/gpu_image.rs b/crates/bevy_render/src/texture/gpu_image.rs index 2aadd78ecd61c..73f1723efedae 100644 --- a/crates/bevy_render/src/texture/gpu_image.rs +++ b/crates/bevy_render/src/texture/gpu_image.rs @@ -69,10 +69,11 @@ impl RenderAsset for GpuImage { let had_data = image.data.is_some(); let texture = if let Some(prev) = previous_asset && prev.texture_descriptor == image.texture_descriptor - && prev - .texture_descriptor - .usage - .contains(TextureUsages::COPY_DST) + && (!had_data + || prev + .texture_descriptor + .usage + .contains(TextureUsages::COPY_DST)) && let Some(block_bytes) = image.texture_descriptor.format.block_copy_size(None) { if let Some(ref data) = image.data {