]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/pipelinestate_backend.h
Add a wrapper class for recording Vulkan commands
[libs/gl.git] / source / backends / vulkan / pipelinestate_backend.h
index 085309e61872a82b058d593fa8af9d546836f613..892d8b3a12a127cc20d64b445a0a56bb07f601b1 100644 (file)
@@ -8,6 +8,7 @@ namespace Msp {
 namespace GL {
 
 class Device;
+class VulkanCommandRecorder;
 
 class VulkanPipelineState: public NonCopyable
 {
@@ -19,8 +20,10 @@ protected:
        Device &device;
        mutable unsigned changes = 0;
        mutable unsigned unapplied = 0;
-       mutable VkPipeline handle;
+       mutable VkPipeline handle = 0;
        mutable std::vector<unsigned> descriptor_set_slots;
+       mutable unsigned first_changed_desc_set = 0;
+       mutable std::uint32_t push_const_compat = 0;
 
        VulkanPipelineState();
        VulkanPipelineState(VulkanPipelineState &&);
@@ -36,7 +39,7 @@ protected:
        VkDescriptorSetLayout get_descriptor_set_layout(unsigned) const;
        unsigned fill_descriptor_writes(unsigned, unsigned, std::vector<char> &) const;
 
-       void apply(VkCommandBuffer, const VulkanPipelineState *, unsigned, bool) const;
+       void apply(const VulkanCommandRecorder &, const VulkanPipelineState *, unsigned, bool) const;
 };
 
 using PipelineStateBackend = VulkanPipelineState;