rafx_framework/render_features/jobs/write/
render_job_command_buffer_context.rs

1use crate::graph::{RenderGraphContext, VisitRenderpassNodeArgs};
2use crate::{DynCommandBuffer, GraphicsPipelineRenderTargetMeta, RenderResources, ResourceContext};
3use rafx_api::RafxDeviceContext;
4
5pub struct RenderJobCommandBufferContext<'graph, 'write> {
6    //NOTE: render_resources is included in the graph context
7    pub command_buffer: DynCommandBuffer,
8    pub render_target_meta: GraphicsPipelineRenderTargetMeta,
9    pub graph_context: RenderGraphContext<'graph, 'write>,
10}
11
12impl<'graph, 'write> RenderJobCommandBufferContext<'graph, 'write> {
13    pub fn new(
14        command_buffer: DynCommandBuffer,
15        render_target_meta: GraphicsPipelineRenderTargetMeta,
16        graph_context: RenderGraphContext<'graph, 'write>,
17    ) -> Self {
18        RenderJobCommandBufferContext {
19            command_buffer,
20            render_target_meta,
21            graph_context,
22        }
23    }
24
25    pub fn from_graph_visit_render_pass_args(
26        args: &'graph VisitRenderpassNodeArgs<'graph, 'write>
27    ) -> RenderJobCommandBufferContext<'graph, 'write> {
28        RenderJobCommandBufferContext::new(
29            args.command_buffer.clone(),
30            args.render_target_meta.clone(),
31            args.graph_context,
32        )
33    }
34
35    pub fn device_context(&self) -> &RafxDeviceContext {
36        &self.graph_context.device_context()
37    }
38
39    pub fn resource_context(&self) -> &ResourceContext {
40        &self.graph_context.resource_context()
41    }
42
43    pub fn command_buffer(&self) -> &DynCommandBuffer {
44        &self.command_buffer
45    }
46
47    pub fn render_target_meta(&self) -> &GraphicsPipelineRenderTargetMeta {
48        &self.render_target_meta
49    }
50
51    pub fn graph_context(&self) -> &RenderGraphContext<'graph, 'write> {
52        &self.graph_context
53    }
54
55    pub fn render_resources(&self) -> &RenderResources {
56        self.graph_context.render_resources()
57    }
58}