Skip to content

Commit d8b5527

Browse files
committed
added GpuPlugin
extracted the gpu code into a separate crate renamed GPU* to Gpu* renamed occurrences of the variable name `device` that refer to a `GPUDevice` to `gpu_device` renamed occurrences of the variable name `queue` that refer to a `GPUQueue` to `gpu_queue` renamed type names Render{Device, Queue, Adapter, AdapterInfo, Instance, Context} to GPU{Device, Queue, Adapter, AdapterInfo, Instance, Context} renamed variable names render_{device, queue, adapter, adapter_info, instance, context} to gpu_{device, queue, adapter, adapter_info, instance, context}
1 parent 3666712 commit d8b5527

File tree

119 files changed

+1280
-1306
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+1280
-1306
lines changed

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ default = [
3535
"bevy_core_pipeline",
3636
"bevy_pbr",
3737
"bevy_gltf",
38+
"bevy_gpu",
3839
"bevy_render",
3940
"bevy_sprite",
4041
"bevy_text",
@@ -57,6 +58,7 @@ bevy_core_pipeline = ["bevy_internal/bevy_core_pipeline"]
5758
bevy_dynamic_plugin = ["bevy_internal/bevy_dynamic_plugin"]
5859
bevy_gilrs = ["bevy_internal/bevy_gilrs"]
5960
bevy_gltf = ["bevy_internal/bevy_gltf"]
61+
bevy_gpu = ["bevy_internal/bevy_gpu"]
6062
bevy_pbr = ["bevy_internal/bevy_pbr"]
6163
bevy_render = ["bevy_internal/bevy_render"]
6264
bevy_scene = ["bevy_internal/bevy_scene"]

crates/bevy_core_pipeline/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ bevy_app = { path = "../bevy_app", version = "0.9.0" }
2222
bevy_asset = { path = "../bevy_asset", version = "0.9.0" }
2323
bevy_derive = { path = "../bevy_derive", version = "0.9.0" }
2424
bevy_ecs = { path = "../bevy_ecs", version = "0.9.0" }
25+
bevy_gpu = { path = "../bevy_gpu", version = "0.9.0" }
2526
bevy_reflect = { path = "../bevy_reflect", version = "0.9.0" }
2627
bevy_render = { path = "../bevy_render", version = "0.9.0" }
2728
bevy_transform = { path = "../bevy_transform", version = "0.9.0" }

crates/bevy_core_pipeline/src/bloom/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use bevy_ecs::{
77
system::{Commands, Query, Res, ResMut, Resource},
88
world::{FromWorld, World},
99
};
10+
use bevy_gpu::{gpu_resource::*, GpuContext, GpuDevice};
1011
use bevy_math::UVec2;
1112
use bevy_reflect::{Reflect, TypeUuid};
1213
use bevy_render::{
@@ -18,8 +19,6 @@ use bevy_render::{
1819
prelude::Camera,
1920
render_graph::{Node, NodeRunError, RenderGraph, RenderGraphContext, SlotInfo, SlotType},
2021
render_phase::TrackedRenderPass,
21-
render_resource::*,
22-
renderer::{GpuContext, GpuDevice},
2322
texture::{CachedTexture, TextureCache},
2423
view::ViewTarget,
2524
RenderApp, RenderStage,

crates/bevy_core_pipeline/src/core_2d/main_pass_2d_node.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ use crate::{
33
core_2d::{camera_2d::Camera2d, Transparent2d},
44
};
55
use bevy_ecs::prelude::*;
6+
use bevy_gpu::{
7+
gpu_resource::{LoadOp, Operations, RenderPassDescriptor},
8+
GpuContext,
9+
};
610
use bevy_render::{
711
camera::ExtractedCamera,
812
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
9-
render_phase::RenderPhase,
10-
render_resource::{LoadOp, Operations, RenderPassDescriptor},
11-
renderer::GpuContext,
13+
render_phase::{DrawFunctions, RenderPhase, TrackedRenderPass},
1214
view::{ExtractedView, ViewTarget},
1315
};
1416
#[cfg(feature = "trace")]

crates/bevy_core_pipeline/src/core_2d/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub use main_pass_2d_node::*;
2121

2222
use bevy_app::{App, Plugin};
2323
use bevy_ecs::prelude::*;
24+
use bevy_gpu::gpu_resource::CachedRenderPipelineId;
2425
use bevy_render::{
2526
camera::Camera,
2627
extract_component::ExtractComponentPlugin,
@@ -29,7 +30,6 @@ use bevy_render::{
2930
batch_phase_system, sort_phase_system, BatchedPhaseItem, CachedRenderPipelinePhaseItem,
3031
DrawFunctionId, DrawFunctions, EntityPhaseItem, PhaseItem, RenderPhase,
3132
},
32-
render_resource::CachedRenderPipelineId,
3333
Extract, RenderApp, RenderStage,
3434
};
3535
use bevy_utils::FloatOrd;

crates/bevy_core_pipeline/src/core_3d/camera_3d.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use crate::{clear_color::ClearColorConfig, tonemapping::Tonemapping};
22
use bevy_ecs::{prelude::*, query::QueryItem};
3+
use bevy_gpu::gpu_resource::LoadOp;
34
use bevy_reflect::{Reflect, ReflectDeserialize, ReflectSerialize};
45
use bevy_render::{
56
camera::{Camera, CameraRenderGraph, Projection},
67
extract_component::ExtractComponent,
78
primitives::Frustum,
8-
render_resource::LoadOp,
99
view::VisibleEntities,
1010
};
1111
use bevy_transform::prelude::{GlobalTransform, Transform};

crates/bevy_core_pipeline/src/core_3d/main_pass_3d_node.rs

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ use crate::{
33
core_3d::{AlphaMask3d, Camera3d, Opaque3d, Transparent3d},
44
};
55
use bevy_ecs::prelude::*;
6+
use bevy_gpu::{
7+
gpu_resource::{LoadOp, Operations, RenderPassDepthStencilAttachment, RenderPassDescriptor},
8+
GpuContext,
9+
};
610
use bevy_render::{
711
camera::ExtractedCamera,
812
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
9-
render_phase::RenderPhase,
10-
render_resource::{LoadOp, Operations, RenderPassDepthStencilAttachment, RenderPassDescriptor},
11-
renderer::GpuContext,
13+
render_phase::{DrawFunctions, RenderPhase, TrackedRenderPass},
1214
view::{ExtractedView, ViewDepthTexture, ViewTarget},
1315
};
1416
#[cfg(feature = "trace")]
@@ -95,13 +97,20 @@ impl Node for MainPass3dNode {
9597
}),
9698
};
9799

98-
opaque_phase.render(
99-
world,
100-
gpu_context,
101-
view_entity,
102-
camera.viewport.as_ref(),
103-
pass_descriptor,
104-
);
100+
let draw_functions = world.resource::<DrawFunctions<Opaque3d>>();
101+
102+
let render_pass = render_context
103+
.command_encoder
104+
.begin_render_pass(&pass_descriptor);
105+
let mut draw_functions = draw_functions.write();
106+
let mut tracked_pass = TrackedRenderPass::new(render_pass);
107+
if let Some(viewport) = camera.viewport.as_ref() {
108+
tracked_pass.set_camera_viewport(viewport);
109+
}
110+
for item in &opaque_phase.items {
111+
let draw_function = draw_functions.get_mut(item.draw_function).unwrap();
112+
draw_function.draw(world, &mut tracked_pass, view_entity, item);
113+
}
105114
}
106115

107116
if !alpha_mask_phase.items.is_empty() {
@@ -127,13 +136,20 @@ impl Node for MainPass3dNode {
127136
}),
128137
};
129138

130-
alpha_mask_phase.render(
131-
world,
132-
gpu_context,
133-
view_entity,
134-
camera.viewport.as_ref(),
135-
pass_descriptor,
136-
);
139+
let draw_functions = world.resource::<DrawFunctions<AlphaMask3d>>();
140+
141+
let render_pass = render_context
142+
.command_encoder
143+
.begin_render_pass(&pass_descriptor);
144+
let mut draw_functions = draw_functions.write();
145+
let mut tracked_pass = TrackedRenderPass::new(render_pass);
146+
if let Some(viewport) = camera.viewport.as_ref() {
147+
tracked_pass.set_camera_viewport(viewport);
148+
}
149+
for item in &alpha_mask_phase.items {
150+
let draw_function = draw_functions.get_mut(item.draw_function).unwrap();
151+
draw_function.draw(world, &mut tracked_pass, view_entity, item);
152+
}
137153
}
138154

139155
if !transparent_phase.items.is_empty() {

crates/bevy_core_pipeline/src/core_3d/mod.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ pub use main_pass_3d_node::*;
2323

2424
use bevy_app::{App, Plugin};
2525
use bevy_ecs::prelude::*;
26+
use bevy_gpu::{
27+
gpu_resource::{
28+
CachedRenderPipelineId, Extent3d, TextureDescriptor, TextureDimension, TextureFormat,
29+
TextureUsages,
30+
},
31+
GpuDevice,
32+
};
2633
use bevy_render::{
2734
camera::{Camera, ExtractedCamera},
2835
extract_component::ExtractComponentPlugin,
@@ -32,11 +39,6 @@ use bevy_render::{
3239
sort_phase_system, CachedRenderPipelinePhaseItem, DrawFunctionId, DrawFunctions,
3340
EntityPhaseItem, PhaseItem, RenderPhase,
3441
},
35-
render_resource::{
36-
CachedRenderPipelineId, Extent3d, TextureDescriptor, TextureDimension, TextureFormat,
37-
TextureUsages,
38-
},
39-
renderer::GpuDevice,
4042
texture::TextureCache,
4143
view::ViewDepthTexture,
4244
Extract, RenderApp, RenderStage,

crates/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use bevy_asset::HandleUntyped;
2+
use bevy_gpu::{gpu_resource::VertexState, prelude::Shader};
23
use bevy_reflect::TypeUuid;
3-
use bevy_render::{prelude::Shader, render_resource::VertexState};
44

55
pub const FULLSCREEN_SHADER_HANDLE: HandleUntyped =
66
HandleUntyped::weak_from_u64(Shader::TYPE_UUID, 7837534426033940724);

crates/bevy_core_pipeline/src/fxaa/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ use bevy_app::prelude::*;
33
use bevy_asset::{load_internal_asset, HandleUntyped};
44
use bevy_derive::Deref;
55
use bevy_ecs::{prelude::*, query::QueryItem};
6+
use bevy_gpu::{gpu_resource::*, GpuDevice};
67
use bevy_reflect::TypeUuid;
78
use bevy_render::{
89
extract_component::{ExtractComponent, ExtractComponentPlugin},
910
prelude::Camera,
1011
render_graph::RenderGraph,
11-
render_resource::*,
12-
renderer::GpuDevice,
1312
texture::BevyDefault,
1413
view::{ExtractedView, ViewTarget},
1514
RenderApp, RenderStage,

crates/bevy_core_pipeline/src/fxaa/node.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@ use std::sync::Mutex;
33
use crate::fxaa::{CameraFxaaPipeline, Fxaa, FxaaPipeline};
44
use bevy_ecs::prelude::*;
55
use bevy_ecs::query::QueryState;
6-
use bevy_render::{
7-
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
8-
render_resource::{
6+
use bevy_gpu::{
7+
gpu_resource::{
98
BindGroup, BindGroupDescriptor, BindGroupEntry, BindingResource, FilterMode, Operations,
109
PipelineCache, RenderPassColorAttachment, RenderPassDescriptor, SamplerDescriptor,
1110
TextureViewId,
1211
},
13-
renderer::GpuContext,
12+
GpuContext,
13+
};
14+
use bevy_render::{
15+
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
1416
view::{ExtractedView, ViewTarget},
1517
};
1618
use bevy_utils::default;

crates/bevy_core_pipeline/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ use crate::{
2828
};
2929
use bevy_app::{App, Plugin};
3030
use bevy_asset::load_internal_asset;
31-
use bevy_render::{extract_resource::ExtractResourcePlugin, prelude::Shader};
31+
use bevy_gpu::prelude::Shader;
32+
use bevy_render::extract_resource::ExtractResourcePlugin;
3233

3334
#[derive(Default)]
3435
pub struct CorePipelinePlugin;

crates/bevy_core_pipeline/src/tonemapping/mod.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
use crate::fullscreen_vertex_shader::fullscreen_shader_vertex_state;
22
use bevy_app::prelude::*;
33
use bevy_asset::{load_internal_asset, HandleUntyped};
4-
use bevy_ecs::prelude::*;
5-
use bevy_ecs::query::QueryItem;
4+
use bevy_ecs::{prelude::*, query::QueryItem};
5+
use bevy_gpu::{gpu_resource::*, GpuDevice};
66
use bevy_reflect::{Reflect, TypeUuid};
7-
use bevy_render::camera::Camera;
8-
use bevy_render::extract_component::{ExtractComponent, ExtractComponentPlugin};
9-
use bevy_render::renderer::GpuDevice;
10-
use bevy_render::view::ViewTarget;
11-
use bevy_render::{render_resource::*, RenderApp, RenderStage};
7+
use bevy_render::{
8+
camera::Camera,
9+
extract_component::{ExtractComponent, ExtractComponentPlugin},
10+
view::ViewTarget,
11+
RenderApp, RenderStage,
12+
};
1213

1314
mod node;
1415

crates/bevy_core_pipeline/src/tonemapping/node.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,9 @@ use std::sync::Mutex;
33
use crate::tonemapping::{TonemappingPipeline, ViewTonemappingPipeline};
44
use bevy_ecs::prelude::*;
55
use bevy_ecs::query::QueryState;
6+
use bevy_gpu::{gpu_resource::*, GpuContext};
67
use bevy_render::{
78
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
8-
render_resource::{
9-
BindGroup, BindGroupDescriptor, BindGroupEntry, BindingResource, LoadOp, Operations,
10-
PipelineCache, RenderPassColorAttachment, RenderPassDescriptor, SamplerDescriptor,
11-
TextureViewId,
12-
},
13-
renderer::GpuContext,
149
view::{ExtractedView, ViewTarget},
1510
};
1611

@@ -111,7 +106,7 @@ impl Node for TonemappingNode {
111106
};
112107

113108
let mut render_pass = gpu_context
114-
.gpu_command_encoder
109+
.command_encoder
115110
.begin_render_pass(&pass_descriptor);
116111

117112
render_pass.set_pipeline(pipeline);

crates/bevy_core_pipeline/src/upscaling/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ use crate::fullscreen_vertex_shader::fullscreen_shader_vertex_state;
22
use bevy_app::prelude::*;
33
use bevy_asset::{load_internal_asset, HandleUntyped};
44
use bevy_ecs::prelude::*;
5+
use bevy_gpu::{gpu_resource::*, GpuDevice};
56
use bevy_reflect::TypeUuid;
6-
use bevy_render::renderer::GpuDevice;
7-
use bevy_render::view::ViewTarget;
8-
use bevy_render::{render_resource::*, RenderApp, RenderStage};
7+
use bevy_render::{view::ViewTarget, RenderApp, RenderStage};
98

109
mod node;
1110

crates/bevy_core_pipeline/src/upscaling/node.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,9 @@ use std::sync::Mutex;
22

33
use bevy_ecs::prelude::*;
44
use bevy_ecs::query::QueryState;
5+
use bevy_gpu::{gpu_resource::*, GpuContext};
56
use bevy_render::{
67
render_graph::{Node, NodeRunError, RenderGraphContext, SlotInfo, SlotType},
7-
render_resource::{
8-
BindGroup, BindGroupDescriptor, BindGroupEntry, BindingResource, LoadOp, Operations,
9-
PipelineCache, RenderPassColorAttachment, RenderPassDescriptor, SamplerDescriptor,
10-
TextureViewId,
11-
},
12-
renderer::GpuContext,
138
view::{ExtractedView, ViewTarget},
149
};
1510

crates/bevy_encase_derive/src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use bevy_macro_utils::BevyManifest;
22
use encase_derive_impl::{implement, syn};
33

44
const BEVY: &str = "bevy";
5-
const BEVY_RENDER: &str = "bevy_render";
5+
const BEVY_GPU: &str = "bevy_gpu";
66
const ENCASE: &str = "encase";
77

88
fn bevy_encase_path() -> syn::Path {
@@ -17,10 +17,10 @@ fn bevy_encase_path() -> syn::Path {
1717
segments,
1818
}
1919
})
20-
.or_else(|| bevy_manifest.maybe_get_path(BEVY_RENDER))
21-
.map(|bevy_render_path| {
22-
let mut segments = bevy_render_path.segments;
23-
segments.push(BevyManifest::parse_str("render_resource"));
20+
.or_else(|| bevy_manifest.maybe_get_path(BEVY_GPU))
21+
.map(|bevy_gpu_path| {
22+
let mut segments = bevy_gpu_path.segments;
23+
segments.push(BevyManifest::parse_str("gpu_resource"));
2424
syn::Path {
2525
leading_colon: None,
2626
segments,

crates/bevy_gltf/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ bevy_asset = { path = "../bevy_asset", version = "0.9.0" }
1616
bevy_core = { path = "../bevy_core", version = "0.9.0" }
1717
bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.9.0" }
1818
bevy_ecs = { path = "../bevy_ecs", version = "0.9.0" }
19+
bevy_gpu = { path = "../bevy_gpu", version = "0.9.0" }
1920
bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.9.0" }
2021
bevy_log = { path = "../bevy_log", version = "0.9.0" }
2122
bevy_math = { path = "../bevy_math", version = "0.9.0" }

crates/bevy_gltf/src/loader.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use bevy_asset::{
55
use bevy_core::Name;
66
use bevy_core_pipeline::prelude::Camera3d;
77
use bevy_ecs::{entity::Entity, prelude::FromWorld, world::World};
8+
use bevy_gpu::{gpu_resource::*, GpuDevice};
89
use bevy_hierarchy::{BuildWorldChildren, WorldChildBuilder};
910
use bevy_log::warn;
1011
use bevy_math::{Mat4, Vec3};
@@ -24,8 +25,6 @@ use bevy_render::{
2425
},
2526
prelude::SpatialBundle,
2627
primitives::{Aabb, Frustum},
27-
render_resource::{AddressMode, Face, FilterMode, PrimitiveTopology, SamplerDescriptor},
28-
renderer::GpuDevice,
2928
texture::{CompressedImageFormats, Image, ImageSampler, ImageType, TextureError},
3029
view::VisibleEntities,
3130
};

0 commit comments

Comments
 (0)