Skip to content

Commit 0bdfdef

Browse files
committed
Added pvkCreateGraphicsPipelineProfile0
1 parent 250f707 commit 0bdfdef

File tree

1 file changed

+62
-20
lines changed

1 file changed

+62
-20
lines changed

include/PlayVk/PlayVk.h

Lines changed: 62 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,9 +1611,9 @@ PVK_STATIC PVK_INLINE PVK_CONSTEXPR VkVertexInputAttributeDescription __pvkGetVe
16111611
return dsc;
16121612
}
16131613

1614-
PVK_LINKAGE VkPipeline __pvkCreateGraphicsPipeline(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t subpassIndex, uint32_t width, uint32_t height, VkPipelineColorBlendStateCreateInfo* colorBlend, bool enableDepth, uint32_t count, va_list args);
1614+
PVK_LINKAGE VkPipeline __pvkCreateGraphicsPipeline(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t subpassIndex, uint32_t width, uint32_t height, uint32_t vertInputBindCount, VkVertexInputBindingDescription* vertexBindingDescriptions, uint32_t vertInputAttrCount, VkVertexInputAttributeDescription* vertexAttributeDescriptions, VkPipelineColorBlendStateCreateInfo* colorBlend, bool enableDepth, uint32_t count, va_list args);
16151615
#ifdef PVK_IMPLEMENTATION
1616-
PVK_LINKAGE VkPipeline __pvkCreateGraphicsPipeline(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t subpassIndex, uint32_t width, uint32_t height, VkPipelineColorBlendStateCreateInfo* colorBlend, bool enableDepth, uint32_t count, va_list args)
1616+
PVK_LINKAGE VkPipeline __pvkCreateGraphicsPipeline(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t subpassIndex, uint32_t width, uint32_t height, uint32_t vertInputBindCount, VkVertexInputBindingDescription* vertexBindingDescriptions, uint32_t vertInputAttrCount, VkVertexInputAttributeDescription* vertexAttributeDescriptions, VkPipelineColorBlendStateCreateInfo* colorBlend, bool enableDepth, uint32_t count, va_list args)
16171617
{
16181618
/* Shader modules */
16191619
PvkShader shaderModules[count];
@@ -1622,24 +1622,12 @@ PVK_LINKAGE VkPipeline __pvkCreateGraphicsPipeline(VkDevice device, VkPipelineLa
16221622
VkPipelineShaderStageCreateInfo* stageCInfos = __pvkCreatePipelineShaderStageCreateInfos(count, shaderModules);
16231623

16241624
/* Vertex buffer layouts and their description */
1625-
VkVertexInputBindingDescription vertexBindingDescription = { };
1626-
{
1627-
vertexBindingDescription.binding = 0;
1628-
vertexBindingDescription.stride = PVK_VERTEX_SIZE;
1629-
vertexBindingDescription.inputRate = VK_VERTEX_INPUT_RATE_VERTEX;
1630-
};
1631-
VkVertexInputAttributeDescription* vertexAttributeDescriptions = PVK_NEWV(VkVertexInputAttributeDescription, PVK_VERTEX_ATTRIBUTE_COUNT);
1632-
vertexAttributeDescriptions[0] = __pvkGetVertexInputAttributeDescription(0, 0, VK_FORMAT_R32G32B32_SFLOAT, PVK_VERTEX_POSITION_OFFSET);
1633-
vertexAttributeDescriptions[1] = __pvkGetVertexInputAttributeDescription(0, 1, VK_FORMAT_R32G32B32_SFLOAT, PVK_VERTEX_NORMAL_OFFSET);
1634-
vertexAttributeDescriptions[2] = __pvkGetVertexInputAttributeDescription(0, 2, VK_FORMAT_R32G32_SFLOAT, PVK_VERTEX_TEXCOORD_OFFSET);
1635-
vertexAttributeDescriptions[3] = __pvkGetVertexInputAttributeDescription(0, 3, VK_FORMAT_R32G32B32A32_SFLOAT, PVK_VERTEX_COLOR_OFFSET);
1636-
16371625
VkPipelineVertexInputStateCreateInfo vertexInputStateCInfo = { };
16381626
{
16391627
vertexInputStateCInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
1640-
vertexInputStateCInfo.vertexBindingDescriptionCount = 1;
1641-
vertexInputStateCInfo.pVertexBindingDescriptions = &vertexBindingDescription;
1642-
vertexInputStateCInfo.vertexAttributeDescriptionCount = PVK_VERTEX_ATTRIBUTE_COUNT;
1628+
vertexInputStateCInfo.vertexBindingDescriptionCount = vertInputBindCount;
1629+
vertexInputStateCInfo.pVertexBindingDescriptions = vertexBindingDescriptions;
1630+
vertexInputStateCInfo.vertexAttributeDescriptionCount = vertInputAttrCount;
16431631
vertexInputStateCInfo.pVertexAttributeDescriptions = vertexAttributeDescriptions;
16441632
};
16451633

@@ -1728,18 +1716,59 @@ PVK_LINKAGE VkPipeline __pvkCreateGraphicsPipeline(VkDevice device, VkPipelineLa
17281716
PVK_CHECK(vkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineCInfo, NULL, &pipeline));
17291717

17301718
PVK_DELETE(stageCInfos);
1731-
PVK_DELETE(vertexAttributeDescriptions);
17321719
return pipeline;
17331720
}
17341721
#endif
17351722

17361723
PVK_LINKAGE VkPipeline pvkCreateShadowMapGraphicsPipeline(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t subpassIndex, uint32_t width, uint32_t height, uint32_t count, ...);
17371724
#ifdef PVK_IMPLEMENTATION
17381725
PVK_LINKAGE VkPipeline pvkCreateShadowMapGraphicsPipeline(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t subpassIndex, uint32_t width, uint32_t height, uint32_t count, ...)
1726+
{
1727+
VkVertexInputBindingDescription vertexBindingDescription = { };
1728+
{
1729+
vertexBindingDescription.binding = 0;
1730+
vertexBindingDescription.stride = PVK_VERTEX_SIZE;
1731+
vertexBindingDescription.inputRate = VK_VERTEX_INPUT_RATE_VERTEX;
1732+
};
1733+
VkVertexInputAttributeDescription* vertexAttributeDescriptions = PVK_NEWV(VkVertexInputAttributeDescription, PVK_VERTEX_ATTRIBUTE_COUNT);
1734+
vertexAttributeDescriptions[0] = __pvkGetVertexInputAttributeDescription(0, 0, VK_FORMAT_R32G32B32_SFLOAT, PVK_VERTEX_POSITION_OFFSET);
1735+
vertexAttributeDescriptions[1] = __pvkGetVertexInputAttributeDescription(0, 1, VK_FORMAT_R32G32B32_SFLOAT, PVK_VERTEX_NORMAL_OFFSET);
1736+
vertexAttributeDescriptions[2] = __pvkGetVertexInputAttributeDescription(0, 2, VK_FORMAT_R32G32_SFLOAT, PVK_VERTEX_TEXCOORD_OFFSET);
1737+
vertexAttributeDescriptions[3] = __pvkGetVertexInputAttributeDescription(0, 3, VK_FORMAT_R32G32B32A32_SFLOAT, PVK_VERTEX_COLOR_OFFSET);
1738+
1739+
va_list shaderModuleList;
1740+
va_start(shaderModuleList, count);
1741+
VkPipeline pipeline = __pvkCreateGraphicsPipeline(device, layout, renderPass, subpassIndex, width, height, 1, &vertexBindingDescription, 4, vertexAttributeDescriptions, NULL, true, count, shaderModuleList);
1742+
va_end(shaderModuleList);
1743+
1744+
PVK_DELETE(vertexAttributeDescriptions);
1745+
return pipeline;
1746+
}
1747+
#endif
1748+
1749+
PVK_LINKAGE VkPipeline pvkCreateGraphicsPipelineProfile0(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t width, uint32_t height, uint32_t count, ...);
1750+
#ifdef PVK_IMPLEMENTATION
1751+
PVK_LINKAGE VkPipeline pvkCreateGraphicsPipelineProfile0(VkDevice device, VkPipelineLayout layout, VkRenderPass renderPass, uint32_t width, uint32_t height, uint32_t count, ...)
17391752
{
17401753
va_list shaderModuleList;
17411754
va_start(shaderModuleList, count);
1742-
VkPipeline pipeline = __pvkCreateGraphicsPipeline(device, layout, renderPass, subpassIndex, width, height, NULL, true, count, shaderModuleList);
1755+
1756+
/* Color attachment configuration */
1757+
VkPipelineColorBlendAttachmentState colorAttachment = { };
1758+
{
1759+
colorAttachment.blendEnable = VK_FALSE;
1760+
colorAttachment.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;
1761+
};
1762+
1763+
VkPipelineColorBlendStateCreateInfo colorBlend = { };
1764+
{
1765+
colorBlend.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
1766+
colorBlend.logicOpEnable = VK_FALSE;
1767+
colorBlend.attachmentCount = 1;
1768+
colorBlend.pAttachments = &colorAttachment;
1769+
};
1770+
1771+
VkPipeline pipeline = __pvkCreateGraphicsPipeline(device, layout, renderPass, 0, width, height, 0, NULL, 0, NULL, &colorBlend, true, count, shaderModuleList);
17431772
va_end(shaderModuleList);
17441773
return pipeline;
17451774
}
@@ -1772,9 +1801,22 @@ PVK_LINKAGE VkPipeline pvkCreateGraphicsPipeline(VkDevice device, VkPipelineLayo
17721801
colorBlend.pAttachments = colorAttachments;
17731802
};
17741803

1775-
VkPipeline pipeline = __pvkCreateGraphicsPipeline(device, layout, renderPass, subpassIndex, width, height, &colorBlend, true, count, shaderModuleList);
1804+
VkVertexInputBindingDescription vertexBindingDescription = { };
1805+
{
1806+
vertexBindingDescription.binding = 0;
1807+
vertexBindingDescription.stride = PVK_VERTEX_SIZE;
1808+
vertexBindingDescription.inputRate = VK_VERTEX_INPUT_RATE_VERTEX;
1809+
};
1810+
VkVertexInputAttributeDescription* vertexAttributeDescriptions = PVK_NEWV(VkVertexInputAttributeDescription, PVK_VERTEX_ATTRIBUTE_COUNT);
1811+
vertexAttributeDescriptions[0] = __pvkGetVertexInputAttributeDescription(0, 0, VK_FORMAT_R32G32B32_SFLOAT, PVK_VERTEX_POSITION_OFFSET);
1812+
vertexAttributeDescriptions[1] = __pvkGetVertexInputAttributeDescription(0, 1, VK_FORMAT_R32G32B32_SFLOAT, PVK_VERTEX_NORMAL_OFFSET);
1813+
vertexAttributeDescriptions[2] = __pvkGetVertexInputAttributeDescription(0, 2, VK_FORMAT_R32G32_SFLOAT, PVK_VERTEX_TEXCOORD_OFFSET);
1814+
vertexAttributeDescriptions[3] = __pvkGetVertexInputAttributeDescription(0, 3, VK_FORMAT_R32G32B32A32_SFLOAT, PVK_VERTEX_COLOR_OFFSET);
1815+
1816+
VkPipeline pipeline = __pvkCreateGraphicsPipeline(device, layout, renderPass, subpassIndex, width, height, 1, &vertexBindingDescription, 4, vertexAttributeDescriptions, &colorBlend, true, count, shaderModuleList);
17761817
va_end(shaderModuleList);
17771818
PVK_DELETE(colorAttachments);
1819+
PVK_DELETE(vertexAttributeDescriptions);
17781820
return pipeline;
17791821
}
17801822
#endif

0 commit comments

Comments
 (0)