]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/pipelinecache.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / backends / vulkan / pipelinecache.cpp
index 951d33f3bea801fe72a2516dd984edbd1e50a669..618ddc9323b68d24678b372648a42ce3ec6530e6 100644 (file)
@@ -34,10 +34,10 @@ VkRenderPass PipelineCache::get_render_pass(const RenderPass &rp)
 
        vector<char> buffer;
        rp.fill_creation_info(buffer);
-       const VkRenderPassCreateInfo *creation_info = reinterpret_cast<const VkRenderPassCreateInfo *>(buffer.data());
+       const VkRenderPassCreateInfo2 *creation_info = reinterpret_cast<const VkRenderPassCreateInfo2 *>(buffer.data());
 
        VkRenderPass render_pass;
-       vk.CreateRenderPass(*creation_info, render_pass);
+       vk.CreateRenderPass2(*creation_info, render_pass);
 
        render_passes.insert(make_pair(key, render_pass));
 
@@ -55,10 +55,19 @@ VkPipeline PipelineCache::get_pipeline(const PipelineState &ps)
 
        vector<char> buffer;
        ps.fill_creation_info(buffer);
-       const VkGraphicsPipelineCreateInfo *creation_info = reinterpret_cast<const VkGraphicsPipelineCreateInfo *>(buffer.data());
 
+       VkStructureType type = *reinterpret_cast<const VkStructureType *>(buffer.data());
        VkPipeline pipeline;
-       vk.CreateGraphicsPipelines(0, 1, creation_info, &pipeline);
+       if(type==VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)
+       {
+               const VkComputePipelineCreateInfo *creation_info = reinterpret_cast<const VkComputePipelineCreateInfo *>(buffer.data());
+               vk.CreateComputePipelines(0, 1, creation_info, &pipeline);
+       }
+       else
+       {
+               const VkGraphicsPipelineCreateInfo *creation_info = reinterpret_cast<const VkGraphicsPipelineCreateInfo *>(buffer.data());
+               vk.CreateGraphicsPipelines(0, 1, creation_info, &pipeline);
+       }
 
        pipelines.insert(make_pair(key, pipeline));