]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/pipelinestate_backend.h
Apply only changed parts of VulkanPipelineState
[libs/gl.git] / source / backends / vulkan / pipelinestate_backend.h
index d7ef4a20bf97483ade9b2c818228d59352e2628e..d482081bb400d4bc987c71048366eee26585536d 100644 (file)
@@ -17,12 +17,15 @@ class VulkanPipelineState: public NonCopyable
 protected:
        Device &device;
        mutable unsigned changes = 0;
+       mutable unsigned unapplied = 0;
        mutable VkPipeline handle;
        mutable std::vector<VkDescriptorSet> descriptor_set_handles;
 
        VulkanPipelineState();
        VulkanPipelineState(VulkanPipelineState &&);
 
+       static bool can_bind_tex_level(unsigned) { return true; }
+
        void update() const;
        void refresh() const { if(changes) update(); }
        std::uint64_t compute_hash() const;
@@ -31,7 +34,7 @@ protected:
        VkDescriptorSetLayout get_descriptor_set_layout(unsigned) const;
        unsigned fill_descriptor_writes(unsigned, std::vector<char> &) const;
 
-       void apply(VkCommandBuffer) const;
+       void apply(VkCommandBuffer, const VulkanPipelineState *, unsigned, bool) const;
 };
 
 using PipelineStateBackend = VulkanPipelineState;