@@ -4,14 +4,15 @@ use rafx::api::*;
4
4
use rafx:: assets:: distill_impl:: AssetResource ;
5
5
use rafx:: assets:: MaterialAsset ;
6
6
use rafx:: distill:: loader:: { storage:: DefaultIndirectionResolver , Loader , RpcIO } ;
7
- use rafx:: framework:: { DescriptorSetBindings , VertexDataLayout } ;
7
+ use rafx:: framework:: render_features:: { RenderJobWriteContext , SubmitNodeBlocks } ;
8
+ use rafx:: framework:: { DescriptorSetBindings , RenderResources , VertexDataLayout } ;
8
9
use rafx:: graph:: {
9
10
PreparedRenderGraph , RenderGraphBuilder , RenderGraphImageConstraint , RenderGraphImageExtents ,
10
11
RenderGraphImageSpecification , RenderGraphQueue , SwapchainSurfaceInfo ,
11
12
} ;
12
- use rafx:: nodes :: RenderPhaseIndex ;
13
- use rafx:: nodes :: SubmitNode ;
14
- use rafx:: nodes :: { PreparedRenderData , RenderPhase } ;
13
+ use rafx:: render_features :: RenderFeatureSubmitNode ;
14
+ use rafx:: render_features :: RenderPhaseIndex ;
15
+ use rafx:: render_features :: { PreparedRenderData , RenderPhase } ;
15
16
use std:: sync:: Arc ;
16
17
17
18
const WINDOW_WIDTH : u32 = 900 ;
@@ -109,7 +110,7 @@ fn run() -> RafxResult<()> {
109
110
// (Multiple "features" can render in a single "phase". Sorting behavior for draw calls
110
111
// across those features is defined by the phase)
111
112
//
112
- let render_registry = rafx:: nodes :: RenderRegistryBuilder :: default ( )
113
+ let render_registry = rafx:: render_features :: RenderRegistryBuilder :: default ( )
113
114
. register_render_phase :: < OpaqueRenderPhase > ( "Opaque" )
114
115
. build ( ) ;
115
116
@@ -422,12 +423,22 @@ fn run() -> RafxResult<()> {
422
423
& swapchain_surface_info,
423
424
) ?;
424
425
426
+ let submit_node_blocks = SubmitNodeBlocks :: default ( ) ;
427
+
428
+ let render_resources = RenderResources :: default ( ) ;
429
+
430
+ let write_context =
431
+ RenderJobWriteContext :: new ( resource_context. clone ( ) , & render_resources) ;
432
+
433
+ let prepared_render_data =
434
+ PreparedRenderData :: new ( & submit_node_blocks, Vec :: default ( ) , write_context) ;
435
+
425
436
//
426
437
// Execute the graph. This will write out command buffer(s). This demo doesn't use the
427
438
// job system, so pass an empty PreparedRenderData
428
439
//
429
440
let command_buffers =
430
- prepared_graph. execute_graph ( PreparedRenderData :: empty ( ) , & graphics_queue) ?;
441
+ prepared_graph. execute_graph ( prepared_render_data , & graphics_queue) ?;
431
442
432
443
//
433
444
// Submit the command buffers to the GPU
@@ -464,15 +475,13 @@ rafx::declare_render_phase!(
464
475
) ;
465
476
466
477
#[ profiling:: function]
467
- fn opaque_render_phase_sort_submit_nodes ( mut submit_nodes : Vec < SubmitNode > ) -> Vec < SubmitNode > {
478
+ fn opaque_render_phase_sort_submit_nodes ( submit_nodes : & mut Vec < RenderFeatureSubmitNode > ) {
468
479
// Sort by feature
469
480
log:: trace!(
470
481
"Sort phase {}" ,
471
482
OpaqueRenderPhase :: render_phase_debug_name( )
472
483
) ;
473
484
submit_nodes. sort_unstable_by ( |a, b| a. feature_index ( ) . cmp ( & b. feature_index ( ) ) ) ;
474
-
475
- submit_nodes
476
485
}
477
486
478
487
//
0 commit comments