15 #include <vsg/state/PipelineLayout.h>
16 #include <vsg/state/ShaderStage.h>
17 #include <vsg/state/StateCommand.h>
18 #include <vsg/vk/RenderPass.h>
33 virtual void apply(
Context& context, VkGraphicsPipelineCreateInfo& pipelineInfo)
const = 0;
40 using GraphicsPipelineStates = std::vector<ref_ptr<GraphicsPipelineState>>;
41 extern VSG_DECLSPEC
void mergeGraphicsPipelineStates(GraphicsPipelineStates& dest_PipelineStates,
ref_ptr<GraphicsPipelineState> src_PipelineState);
42 extern VSG_DECLSPEC
void mergeGraphicsPipelineStates(GraphicsPipelineStates& dest_PipelineStates,
const GraphicsPipelineStates& src_PipelineStates);
50 GraphicsPipeline(
PipelineLayout* pipelineLayout,
const ShaderStages& shaderStages,
const GraphicsPipelineStates& pipelineStates, uint32_t subpass = 0);
52 VkPipeline vk(uint32_t deviceID)
const {
return _implementation[deviceID]->_pipeline; }
56 GraphicsPipelineStates pipelineStates;
63 void read(
Input& input)
override;
64 void write(
Output& output)
const override;
70 void release(uint32_t viewID) { _implementation[viewID] = {}; }
71 void release() { _implementation.clear(); }
74 virtual ~GraphicsPipeline();
87 std::vector<ref_ptr<Implementation>> _implementation;
102 void read(
Input& input)
override;
103 void write(
Output& output)
const override;
108 void compile(
Context& context)
override;
110 virtual void release();
BindGraphicsPipeline state command encapsulates the vkCmdBindPipeline call for a GraphicsPipeline.
Definition: GraphicsPipeline.h:93
int compare(const Object &rhs_object) const override
compare two objects, return -1 if this object is less than rhs, return 0 if it's equal,...
ref_ptr< GraphicsPipeline > pipeline
pipeline to pass in the vkCmdBindPipeline call;
Definition: GraphicsPipeline.h:98
CommandBuffer encapsulates VkCommandBuffer.
Definition: CommandBuffer.h:27
Device encapsulate vkDeivce, a logical handle to the PhysicalDevice with capabilities specified durin...
Definition: Device.h:37
Definition: GraphicsPipeline.h:29
GraphicsPipeline encapsulates graphics VkPipeline and the VkGraphicsPipelineCreateInfo settings used ...
Definition: GraphicsPipeline.h:46
int compare(const Object &rhs_object) const override
compare two objects, return -1 if this object is less than rhs, return 0 if it's equal,...
ShaderStages stages
VkGraphicsPipelineCreateInfo settings.
Definition: GraphicsPipeline.h:55
PipelineLayout encapsulates VkPipelineLayout and the VkPipelineLayoutCreateInfo settings used to set ...
Definition: PipelineLayout.h:27
RenderPass encapsulation of VkRenderPass.
Definition: RenderPass.h:86
Definition: GraphicsPipeline.h:77