diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-04-17 16:43:47 +0200 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-04-17 16:43:47 +0200 |
| commit | 182b31b310ff9f27fd62257426da377515d7ad9c (patch) | |
| tree | b5295d40d27e85d74c7c2d2cbe940180faa1f834 /src/vkvg_device_internal.c | |
| parent | 1afbf1702e3ed4a15d505b67ddbe5b4ceb9dcc49 (diff) | |
test with a compute queue for gradientgradComputeTest
Diffstat (limited to 'src/vkvg_device_internal.c')
| -rw-r--r-- | src/vkvg_device_internal.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/vkvg_device_internal.c b/src/vkvg_device_internal.c index d34e6cc..85dde3c 100644 --- a/src/vkvg_device_internal.c +++ b/src/vkvg_device_internal.c @@ -104,6 +104,38 @@ void _setupRenderPass(VkvgDevice dev) VK_CHECK_RESULT(vkCreateRenderPass(dev->vkDev, &renderPassInfo, NULL, &dev->renderPass)); } +void _init_gradient_pipeline(VkvgDevice dev) +{ + VkDescriptorSetLayoutBinding dsLayoutBinding = { .binding = 0, + .descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, + .descriptorCount = 1, + .stageFlags = VK_SHADER_STAGE_COMPUTE_BIT }; + VkDescriptorSetLayoutCreateInfo dsLayoutCreateInfo = { .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, + .bindingCount = 1, + .pBindings = &dsLayoutBinding }; + VK_CHECK_RESULT(vkCreateDescriptorSetLayout(dev->vkDev, &dsLayoutCreateInfo, NULL, &dev->gradientPipeline.descriptorSetLayout)); + + VkPipelineLayoutCreateInfo pipelineLayoutCreateInfo = { .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + .setLayoutCount = 1, + .pSetLayouts = &dev->gradientPipeline.descriptorSetLayout }; + VK_CHECK_RESULT(vkCreatePipelineLayout(dev->vkDev, &pipelineLayoutCreateInfo, NULL, &dev->gradientPipeline.pipelineLayout)); + + VkShaderModule mod; + VkShaderModuleCreateInfo createInfo = { .sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, + .pCode = gradient0_comp_spv, + .codeSize = gradient0_comp_spv_len }; + VK_CHECK_RESULT(vkCreateShaderModule(dev->vkDev, &createInfo, NULL, &mod)); + VkPipelineShaderStageCreateInfo shaderStageCreateInfo = { .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, + .stage = VK_SHADER_STAGE_COMPUTE_BIT, + .module = mod, + .pName = "main" }; + VkComputePipelineCreateInfo pipelineCreateInfo = { .sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, + .stage = shaderStageCreateInfo, + .layout = dev->gradientPipeline.pipelineLayout }; + VK_CHECK_RESULT(vkCreateComputePipelines(dev->vkDev, VK_NULL_HANDLE, 1, &pipelineCreateInfo, NULL, &dev->gradientPipeline.pipeline)); + vkDestroyShaderModule(dev->vkDev, mod, NULL); +} + void _setupPipelines(VkvgDevice dev) { VkGraphicsPipelineCreateInfo pipelineCreateInfo = { .sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, |