]> git.tdb.fi Git - libs/gl.git/blob - source/backends/vulkan/renderer_backend.cpp
Support multiple PipelineStates in Renderer
[libs/gl.git] / source / backends / vulkan / renderer_backend.cpp
1 #include "renderer.h"
2 #include "renderer_backend.h"
3
4 namespace Msp {
5 namespace GL {
6
7 VulkanRenderer::VulkanRenderer():
8         current_pipeline(&pipeline_states[0])
9 { }
10
11 void VulkanRenderer::begin()
12 {
13         begin_semaphore = 0;
14         end_semaphore = 0;
15 }
16
17 void VulkanRenderer::begin(Semaphore &sem)
18 {
19         static_cast<Renderer *>(this)->begin();
20
21         begin_semaphore = &sem;
22 }
23
24 void VulkanRenderer::end()
25 {
26         Renderer &self = *static_cast<Renderer *>(this);
27         self.commands.use_pipeline(0);
28         self.commands.submit_frame(begin_semaphore, end_semaphore);
29 }
30
31 void VulkanRenderer::end(Semaphore &sem)
32 {
33         end_semaphore = &sem;
34         static_cast<Renderer *>(this)->end();
35 }
36
37 void VulkanRenderer::set_pipeline_key(uintptr_t key)
38 {
39         current_pipeline = &pipeline_states[key];
40 }
41
42 } // namespace GL
43 } // namespace Msp