rafx_framework/render_features/jobs/write/
render_job_command_buffer_context.rs1use crate::graph::{RenderGraphContext, VisitRenderpassNodeArgs};
2use crate::{DynCommandBuffer, GraphicsPipelineRenderTargetMeta, RenderResources, ResourceContext};
3use rafx_api::RafxDeviceContext;
4
5pub struct RenderJobCommandBufferContext<'graph, 'write> {
6 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}