Adding vertex input description, readding slang

This commit is contained in:
Dynamitos
2024-01-19 09:49:42 +01:00
parent 0f6dabde86
commit cb6b1815ee
16 changed files with 105 additions and 12 deletions
@@ -52,10 +52,36 @@ PGraphicsPipeline PipelineCache::createPipeline(Gfx::LegacyPipelineCreateInfo gf
{
PPipelineLayout layout = Gfx::PPipelineLayout(gfxInfo.pipelineLayout).cast<PipelineLayout>();
uint32 hash = layout->getHash();
const VertexInputStateCreateInfo& vertexInputDesc = gfxInfo.vertexInput->getInfo();
Array<VkVertexInputBindingDescription> bindings(vertexInputDesc.bindings.size());
Array<VkVertexInputAttributeDescription> attributes(vertexInputDesc.attributes.size());
for (size_t i = 0; i < bindings.size(); i++)
{
bindings[i] = {
.binding = vertexInputDesc.bindings[i].binding,
.stride = vertexInputDesc.bindings[i].stride,
.inputRate = VkVertexInputRate(vertexInputDesc.bindings[i].inputRate),
};
}
for (size_t i = 0; i < attributes.size(); i++)
{
attributes[i] = {
.location = vertexInputDesc.attributes[i].location,
.binding = vertexInputDesc.attributes[i].binding,
.format = cast(vertexInputDesc.attributes[i].format),
.offset = vertexInputDesc.attributes[i].offset,
};
}
hash = CRC::Calculate(bindings.data(), sizeof(VkVertexInputBindingDescription) * bindings.size(), CRC::CRC_32(), hash);
hash = CRC::Calculate(attributes.data(), sizeof(VkVertexInputAttributeDescription) * attributes.size(), CRC::CRC_32(), hash);
VkPipelineVertexInputStateCreateInfo vertexInput = {
.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
.pNext = nullptr,
.flags = 0,
.vertexBindingDescriptionCount = (uint32)bindings.size(),
.pVertexBindingDescriptions = bindings.data(),
.vertexAttributeDescriptionCount = (uint32)attributes.size(),
.pVertexAttributeDescriptions = attributes.data(),
};
uint32 stageCount = 0;