use crate::render_features::{
RenderFeatureDebugConstants, RenderFeatureIndex, RenderJobBeginExecuteGraphContext,
RenderJobCommandBufferContext, RenderPhaseIndex, SubmitNodeId, ViewFrameIndex,
};
use rafx_api::RafxResult;
pub struct BeginSubmitNodeBatchArgs {
pub view_frame_index: ViewFrameIndex,
pub render_phase_index: RenderPhaseIndex,
pub feature_changed: bool,
pub sort_key: u32,
}
pub struct RenderSubmitNodeArgs {
pub view_frame_index: ViewFrameIndex,
pub render_phase_index: RenderPhaseIndex,
pub submit_node_id: SubmitNodeId,
}
pub trait RenderFeatureWriteJob<'write>: Sync + Send {
fn on_begin_execute_graph(
&self,
_begin_execute_graph_context: &mut RenderJobBeginExecuteGraphContext,
) -> RafxResult<()> {
Ok(())
}
fn begin_submit_node_batch(
&self,
_write_context: &mut RenderJobCommandBufferContext,
_args: BeginSubmitNodeBatchArgs,
) -> RafxResult<()> {
Ok(())
}
fn render_submit_node(
&self,
_write_context: &mut RenderJobCommandBufferContext,
args: RenderSubmitNodeArgs,
) -> RafxResult<()>;
fn feature_debug_constants(&self) -> &'static RenderFeatureDebugConstants;
fn feature_index(&self) -> RenderFeatureIndex;
}