]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/pipelinecache.cpp
Support compute shaders and compute operations
[libs/gl.git] / source / backends / vulkan / pipelinecache.cpp
index 951d33f3bea801fe72a2516dd984edbd1e50a669..0ec5fcc78fbd12f7e8a2a693ae07fd6bbadf64b5 100644 (file)
@@ -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));