]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/renderer_backend.cpp
Support multiple PipelineStates in Renderer
[libs/gl.git] / source / backends / vulkan / renderer_backend.cpp
index d1788461185066ac67e04e315031bef4dad9e3ac..3b9281b5c609b8874539eac1f0b5467accd41464 100644 (file)
@@ -4,6 +4,16 @@
 namespace Msp {
 namespace GL {
 
+VulkanRenderer::VulkanRenderer():
+       current_pipeline(&pipeline_states[0])
+{ }
+
+void VulkanRenderer::begin()
+{
+       begin_semaphore = 0;
+       end_semaphore = 0;
+}
+
 void VulkanRenderer::begin(Semaphore &sem)
 {
        static_cast<Renderer *>(this)->begin();
@@ -13,14 +23,20 @@ void VulkanRenderer::begin(Semaphore &sem)
 
 void VulkanRenderer::end()
 {
-       static_cast<Renderer *>(this)->commands.use_pipeline(0);
+       Renderer &self = *static_cast<Renderer *>(this);
+       self.commands.use_pipeline(0);
+       self.commands.submit_frame(begin_semaphore, end_semaphore);
 }
 
 void VulkanRenderer::end(Semaphore &sem)
 {
-       Renderer &self = *static_cast<Renderer *>(this);
-       self.end();
-       self.commands.submit_frame(begin_semaphore, &sem);
+       end_semaphore = &sem;
+       static_cast<Renderer *>(this)->end();
+}
+
+void VulkanRenderer::set_pipeline_key(uintptr_t key)
+{
+       current_pipeline = &pipeline_states[key];
 }
 
 } // namespace GL