diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-10-09 22:55:42 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-10-09 22:55:42 -0400 |
| commit | fd7f42449557771ab0b6a679853c245681801ba3 (patch) | |
| tree | 6f73cedc512c2f55ef8be70a55373f1a93c85edb /src/entities.cpp | |
| parent | 958ee36629199464c4d26ff3614e426a6265d70e (diff) | |
moved texture pipelines handling to window.cpp - messy
Diffstat (limited to 'src/entities.cpp')
| -rw-r--r-- | src/entities.cpp | 322 |
1 files changed, 4 insertions, 318 deletions
diff --git a/src/entities.cpp b/src/entities.cpp index d98d49b..84a9110 100644 --- a/src/entities.cpp +++ b/src/entities.cpp @@ -2,312 +2,8 @@ #include "entities.hpp" DynArray<EntityType> GlobalEntityTypes{16}; -VkDescriptorSetLayout vkDescriptorSetLayout_Texture = VK_NULL_HANDLE; -VkPipelineLayout vkPipelineLayout_Texture = VK_NULL_HANDLE; -VkSampler vkSampler_Texture = VK_NULL_HANDLE; -struct ImplementedPipelines { - union { - VkPipeline pipelines[2] = { VK_NULL_HANDLE, VK_NULL_HANDLE }; - struct { - VkPipeline Texture; - VkPipeline TextureWireframe; - }; - }; -} vkPipelines; void EntityType_Init() { - VkDescriptorSetLayoutBinding vkDescriptorSetLayoutBindings[2]; - for (long i = 0; i < 2; ++i) { - vkDescriptorSetLayoutBindings[i].pImmutableSamplers = nullptr; - } - vkDescriptorSetLayoutBindings[0].binding = 0; - vkDescriptorSetLayoutBindings[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - vkDescriptorSetLayoutBindings[0].descriptorCount = 1; - vkDescriptorSetLayoutBindings[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; - vkDescriptorSetLayoutBindings[1].binding = 1; - vkDescriptorSetLayoutBindings[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - vkDescriptorSetLayoutBindings[1].descriptorCount = 1; - vkDescriptorSetLayoutBindings[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; - VkDescriptorSetLayoutCreateInfo vkDescriptorSetLayoutCreateInfo { - .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, - .pNext = nullptr, - .flags = 0, - .bindingCount = 2, - .pBindings = vkDescriptorSetLayoutBindings, - }; - vkCreateDescriptorSetLayout(vkDevice, &vkDescriptorSetLayoutCreateInfo, vkAllocator, &vkDescriptorSetLayout_Texture); - - VkPipelineLayoutCreateInfo vkPipelineLayoutCreateInfo { - .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, - .pNext = nullptr, - .flags = 0, - .setLayoutCount = 1, - .pSetLayouts = &vkDescriptorSetLayout_Texture, - .pushConstantRangeCount = 0, - .pPushConstantRanges = nullptr, - }; - vkCreatePipelineLayout(vkDevice, &vkPipelineLayoutCreateInfo, vkAllocator, &vkPipelineLayout_Texture); - - VkSamplerCreateInfo vkSamplerCreateInfo; - vkSamplerCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; - vkSamplerCreateInfo.pNext = nullptr; - vkSamplerCreateInfo.flags = 0; - vkSamplerCreateInfo.magFilter = VK_FILTER_NEAREST; - vkSamplerCreateInfo.minFilter = VK_FILTER_NEAREST; - vkSamplerCreateInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; - vkSamplerCreateInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT; - vkSamplerCreateInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT; - vkSamplerCreateInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT; - vkSamplerCreateInfo.mipLodBias = 0.0f; - vkSamplerCreateInfo.anisotropyEnable = VK_TRUE; - vkSamplerCreateInfo.maxAnisotropy = vkPhysicalDeviceProperties.limits.maxSamplerAnisotropy; - vkSamplerCreateInfo.compareEnable = VK_FALSE; - vkSamplerCreateInfo.compareOp = VK_COMPARE_OP_ALWAYS; - vkSamplerCreateInfo.minLod = 0.0f; - // TODO MipMap - vkSamplerCreateInfo.maxLod = 1; - vkSamplerCreateInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK; - vkSamplerCreateInfo.unnormalizedCoordinates = VK_FALSE; - vkCreateSampler(vkDevice, &vkSamplerCreateInfo, vkAllocator, &vkSampler_Texture); - - // pipelines - { - const long vertexBindingCount = 4; - long index = 0; - VkVertexInputBindingDescription vertInputBD[vertexBindingCount]; - // model vertex - vertInputBD[index].binding = index; - vertInputBD[index].stride = sizeof(glm::vec3); - vertInputBD[index].inputRate = VK_VERTEX_INPUT_RATE_VERTEX; - index += 1; - // model normals - vertInputBD[index].binding = index; - vertInputBD[index].stride = sizeof(glm::vec3); - vertInputBD[index].inputRate = VK_VERTEX_INPUT_RATE_VERTEX; - index += 1; - // model UV - vertInputBD[index].binding = index; - vertInputBD[index].stride = sizeof(glm::vec2); - vertInputBD[index].inputRate = VK_VERTEX_INPUT_RATE_VERTEX; - index += 1; - // model index - // vertInputBD[index].binding = index; - // vertInputBD[index].stride = sizeof(uint16_t); - // vertInputBD[index].inputRate = VK_VERTEX_INPUT_RATE_VERTEX; - // index += 1; - // instance - vertInputBD[index].binding = index; - vertInputBD[index].stride = sizeof(glm::mat4); - vertInputBD[index].inputRate = VK_VERTEX_INPUT_RATE_INSTANCE; - - const long vertexAttrDescCount = 7; - index = 0; - VkVertexInputAttributeDescription vertAttrDesc[vertexAttrDescCount]; - for (long i = 0; i < vertexAttrDescCount; ++i) { - vertAttrDesc[i].location = i; - } - - // model vertex - vertAttrDesc[index].binding = 0; - vertAttrDesc[index].format = VK_FORMAT_R32G32B32_SFLOAT; - vertAttrDesc[index].offset = 0; - index += 1; - - // model normals - vertAttrDesc[index].binding = 1; - vertAttrDesc[index].format = VK_FORMAT_R32G32B32_SFLOAT; - vertAttrDesc[index].offset = 0; - index += 1; - - // model UV - vertAttrDesc[index].binding = 2; - vertAttrDesc[index].format = VK_FORMAT_R32G32_SFLOAT; - vertAttrDesc[index].offset = 0; - index += 1; - - // instPosRotScale - for (long i = 0; i < 4; ++i) { - vertAttrDesc[index].binding = 3; - vertAttrDesc[index].format = VK_FORMAT_R32G32B32A32_SFLOAT; - vertAttrDesc[index].offset = sizeof(glm::vec4) * i; - index += 1; - } - - // instance texture index - // vertAttrDesc[index].binding = 3; - // vertAttrDesc[index].format = VK_FORMAT_R32_SFLOAT; - // vertAttrDesc[index].offset = runningOffset; - // runningOffset += sizeof(float); - // index += 1; - - VkPipelineVertexInputStateCreateInfo vkPipelineVertexInputStateCreateInfo; - vkPipelineVertexInputStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; - vkPipelineVertexInputStateCreateInfo.pNext = nullptr; - vkPipelineVertexInputStateCreateInfo.flags = {}; - vkPipelineVertexInputStateCreateInfo.vertexBindingDescriptionCount = vertexBindingCount; - vkPipelineVertexInputStateCreateInfo.pVertexBindingDescriptions = vertInputBD; - vkPipelineVertexInputStateCreateInfo.vertexAttributeDescriptionCount = vertexAttrDescCount; - vkPipelineVertexInputStateCreateInfo.pVertexAttributeDescriptions = vertAttrDesc; - - VkPipelineInputAssemblyStateCreateInfo vkPipelineInputAssemblyStateCreateInfo; - vkPipelineInputAssemblyStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; - vkPipelineInputAssemblyStateCreateInfo.pNext = nullptr; - vkPipelineInputAssemblyStateCreateInfo.flags = {}; - vkPipelineInputAssemblyStateCreateInfo.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - vkPipelineInputAssemblyStateCreateInfo.primitiveRestartEnable = VK_FALSE; - - // TODO - is this right? set to dynamic later - VkPipelineViewportStateCreateInfo vkPipelineViewportStateCreateInfo; - vkPipelineViewportStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; - vkPipelineViewportStateCreateInfo.pNext = nullptr; - vkPipelineViewportStateCreateInfo.flags = {}; - vkPipelineViewportStateCreateInfo.viewportCount = 1; - vkPipelineViewportStateCreateInfo.pViewports = nullptr; - vkPipelineViewportStateCreateInfo.scissorCount = 1; - vkPipelineViewportStateCreateInfo.pScissors = nullptr; - - VkPipelineRasterizationStateCreateInfo vkPipelineRasterizationStateCreateInfoFill; - vkPipelineRasterizationStateCreateInfoFill.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; - vkPipelineRasterizationStateCreateInfoFill.pNext = nullptr; - vkPipelineRasterizationStateCreateInfoFill.flags = {}; - vkPipelineRasterizationStateCreateInfoFill.depthClampEnable = VK_FALSE; - vkPipelineRasterizationStateCreateInfoFill.rasterizerDiscardEnable = VK_FALSE; - vkPipelineRasterizationStateCreateInfoFill.polygonMode = VK_POLYGON_MODE_FILL; - vkPipelineRasterizationStateCreateInfoFill.cullMode = VK_CULL_MODE_BACK_BIT; - vkPipelineRasterizationStateCreateInfoFill.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; - vkPipelineRasterizationStateCreateInfoFill.depthBiasEnable = VK_FALSE; - vkPipelineRasterizationStateCreateInfoFill.depthBiasConstantFactor = 0.0f; - vkPipelineRasterizationStateCreateInfoFill.depthBiasClamp = 0.0f; - vkPipelineRasterizationStateCreateInfoFill.depthBiasSlopeFactor = 0.0f; - vkPipelineRasterizationStateCreateInfoFill.lineWidth = 1.0f; - - VkPipelineRasterizationStateCreateInfo vkPipelineRasterizationStateCreateInfoLine{vkPipelineRasterizationStateCreateInfoFill}; - vkPipelineRasterizationStateCreateInfoLine.polygonMode = VK_POLYGON_MODE_LINE; - - VkPipelineMultisampleStateCreateInfo vkPipelineMultisampleStateCreateInfo; - vkPipelineMultisampleStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; - vkPipelineMultisampleStateCreateInfo.pNext = nullptr; - vkPipelineMultisampleStateCreateInfo.flags = 0; - vkPipelineMultisampleStateCreateInfo.rasterizationSamples = renderSampleCount; - vkPipelineMultisampleStateCreateInfo.sampleShadingEnable = VK_FALSE; - vkPipelineMultisampleStateCreateInfo.minSampleShading = 0.0f; - vkPipelineMultisampleStateCreateInfo.pSampleMask = nullptr; - vkPipelineMultisampleStateCreateInfo.alphaToCoverageEnable = VK_FALSE; - vkPipelineMultisampleStateCreateInfo.alphaToOneEnable = VK_FALSE; - - // TODO Transparency - VkPipelineColorBlendAttachmentState vkPipelineColorBlendAttachmentState[1]; - vkPipelineColorBlendAttachmentState[0].blendEnable = VK_FALSE; - vkPipelineColorBlendAttachmentState[0].srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA; - vkPipelineColorBlendAttachmentState[0].dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA; - vkPipelineColorBlendAttachmentState[0].colorBlendOp = VK_BLEND_OP_ADD; - vkPipelineColorBlendAttachmentState[0].srcAlphaBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA; - vkPipelineColorBlendAttachmentState[0].dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA; - vkPipelineColorBlendAttachmentState[0].alphaBlendOp = VK_BLEND_OP_SUBTRACT; - vkPipelineColorBlendAttachmentState[0].colorWriteMask = - VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | - VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT; - - VkPipelineColorBlendStateCreateInfo vkPipelineColorBlendStateCreateInfo; - vkPipelineColorBlendStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; - vkPipelineColorBlendStateCreateInfo.pNext = nullptr; - vkPipelineColorBlendStateCreateInfo.flags = {}; - vkPipelineColorBlendStateCreateInfo.logicOpEnable = VK_FALSE; - vkPipelineColorBlendStateCreateInfo.logicOp = VK_LOGIC_OP_COPY; - vkPipelineColorBlendStateCreateInfo.attachmentCount = 1; - vkPipelineColorBlendStateCreateInfo.pAttachments = vkPipelineColorBlendAttachmentState; - vkPipelineColorBlendStateCreateInfo.blendConstants[0] = 0.0f; - vkPipelineColorBlendStateCreateInfo.blendConstants[1] = 0.0f; - vkPipelineColorBlendStateCreateInfo.blendConstants[2] = 0.0f; - vkPipelineColorBlendStateCreateInfo.blendConstants[3] = 0.0f; - - VkDynamicState dynamicStates[2] = { VK_DYNAMIC_STATE_SCISSOR, VK_DYNAMIC_STATE_VIEWPORT }; - VkPipelineDynamicStateCreateInfo vkPipelineDynamicStateCreateInfo; - vkPipelineDynamicStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; - vkPipelineDynamicStateCreateInfo.pNext = nullptr; - vkPipelineDynamicStateCreateInfo.flags = {}; - vkPipelineDynamicStateCreateInfo.dynamicStateCount = 2; - vkPipelineDynamicStateCreateInfo.pDynamicStates = dynamicStates; - - VkPipelineDepthStencilStateCreateInfo vkPipelineDepthStencilStateCreateInfo; - vkPipelineDepthStencilStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; - vkPipelineDepthStencilStateCreateInfo.pNext = nullptr; - vkPipelineDepthStencilStateCreateInfo.flags = {}; - vkPipelineDepthStencilStateCreateInfo.depthTestEnable = VK_TRUE; - vkPipelineDepthStencilStateCreateInfo.depthWriteEnable = VK_TRUE; - vkPipelineDepthStencilStateCreateInfo.depthCompareOp = VK_COMPARE_OP_LESS; - vkPipelineDepthStencilStateCreateInfo.depthBoundsTestEnable = VK_FALSE; - vkPipelineDepthStencilStateCreateInfo.stencilTestEnable = VK_FALSE; - vkPipelineDepthStencilStateCreateInfo.front = {}; - vkPipelineDepthStencilStateCreateInfo.back = {}; - vkPipelineDepthStencilStateCreateInfo.minDepthBounds = {}; - vkPipelineDepthStencilStateCreateInfo.maxDepthBounds = {}; - - AssetHandle vertShaderAssetHandle = AM_Register("assets/shaders/vert.vert.spv"); - AssetHandle textureFragShaderAssetHandle = AM_Register("assets/shaders/texture.frag.spv"); - const Asset *vertShaderAsset = AM_Get(vertShaderAssetHandle); - const Asset *fragShaderAsset = AM_Get(textureFragShaderAssetHandle); - VkShaderModuleCreateInfo vkShaderModuleCreateInfo[2]; - vkShaderModuleCreateInfo[0].codeSize = vertShaderAsset->size; - vkShaderModuleCreateInfo[0].pCode = reinterpret_cast<const uint32_t *>(vertShaderAsset->ptr); - vkShaderModuleCreateInfo[1].codeSize = fragShaderAsset->size; - vkShaderModuleCreateInfo[1].pCode = reinterpret_cast<const uint32_t *>(fragShaderAsset->ptr); - VkShaderModule shaderModules[2]; - - VkPipelineShaderStageCreateInfo vkPipelineShaderStageCreateInfo[2]; - for (long i = 0; i < 2; ++i) { - vkShaderModuleCreateInfo[i].sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; - vkShaderModuleCreateInfo[i].pNext = nullptr; - vkShaderModuleCreateInfo[i].flags = {}; - vkPipelineShaderStageCreateInfo[i].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; - vkPipelineShaderStageCreateInfo[i].pNext = nullptr; - vkPipelineShaderStageCreateInfo[i].flags = {}; - vkPipelineShaderStageCreateInfo[i].pName = "main"; - vkPipelineShaderStageCreateInfo[i].pSpecializationInfo = nullptr; - - vkCreateShaderModule(vkDevice, &vkShaderModuleCreateInfo[i], vkAllocator, &shaderModules[i]); - } - - vkPipelineShaderStageCreateInfo[0].module = shaderModules[0]; - vkPipelineShaderStageCreateInfo[1].module = shaderModules[1]; - vkPipelineShaderStageCreateInfo[0].stage = VK_SHADER_STAGE_VERTEX_BIT; - vkPipelineShaderStageCreateInfo[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT; - - VkGraphicsPipelineCreateInfo vkGraphicsPipelineCreateInfo[2]; - for (long i = 0; i < 2; ++i) { - vkGraphicsPipelineCreateInfo[i].sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; - vkGraphicsPipelineCreateInfo[i].pNext = nullptr; - vkGraphicsPipelineCreateInfo[i].flags = {}; - vkGraphicsPipelineCreateInfo[i].stageCount = 2; - vkGraphicsPipelineCreateInfo[i].pStages = vkPipelineShaderStageCreateInfo; - vkGraphicsPipelineCreateInfo[i].pVertexInputState = &vkPipelineVertexInputStateCreateInfo; - vkGraphicsPipelineCreateInfo[i].pInputAssemblyState = &vkPipelineInputAssemblyStateCreateInfo; - vkGraphicsPipelineCreateInfo[i].pTessellationState = nullptr; - vkGraphicsPipelineCreateInfo[i].pViewportState = &vkPipelineViewportStateCreateInfo; - vkGraphicsPipelineCreateInfo[i].pMultisampleState = &vkPipelineMultisampleStateCreateInfo; - vkGraphicsPipelineCreateInfo[i].pDepthStencilState = &vkPipelineDepthStencilStateCreateInfo; - vkGraphicsPipelineCreateInfo[i].pColorBlendState = &vkPipelineColorBlendStateCreateInfo; - vkGraphicsPipelineCreateInfo[i].pDynamicState = &vkPipelineDynamicStateCreateInfo; - vkGraphicsPipelineCreateInfo[i].layout = vkPipelineLayout_Texture; - vkGraphicsPipelineCreateInfo[i].renderPass = renderRenderPass; - vkGraphicsPipelineCreateInfo[i].subpass = 0; - vkGraphicsPipelineCreateInfo[i].basePipelineHandle = VK_NULL_HANDLE; - vkGraphicsPipelineCreateInfo[i].basePipelineIndex = {}; - } - - vkGraphicsPipelineCreateInfo[0].pRasterizationState = &vkPipelineRasterizationStateCreateInfoFill; - vkGraphicsPipelineCreateInfo[1].pRasterizationState = &vkPipelineRasterizationStateCreateInfoLine; - - vkCreateGraphicsPipelines(vkDevice, VK_NULL_HANDLE, 2, vkGraphicsPipelineCreateInfo, vkAllocator, vkPipelines.pipelines); - - for (long i = 0; i < 2; ++i) { - vkDestroyShaderModule(vkDevice, shaderModules[i], vkAllocator); - } - - AM_Destroy(textureFragShaderAssetHandle); - AM_Destroy(vertShaderAssetHandle); - } - long entityTypeCount = GlobalEntityTypes.Count(); for (long i = 0; i < entityTypeCount; ++i) { EntityType_Load(GlobalEntityTypes[i]); @@ -339,8 +35,8 @@ void EntityType_Load(EntityType &et) { * I don't like that we're just copying this. * This should be moved to window.cpp. */ - grBinds.vkPipelineLayout = vkPipelineLayout_Texture; - grBinds.graphicsPipeline = vkPipelines.Texture; + grBinds.vkPipelineLayout = pkePipelines.vkPipelineLayout_Texture; + grBinds.graphicsPipeline = pkePipelines.pipelines.Texture; et.grBindsHandle = grBinds.grBindsHandle; cgltf_options options{}; @@ -587,7 +283,7 @@ void EntityType_Load(EntityType &et) { VkDescriptorSetLayout descriptorSets[MAX_FRAMES_IN_FLIGHT]; for (long i = 0; i < MAX_FRAMES_IN_FLIGHT; ++i) { - descriptorSets[i] = vkDescriptorSetLayout_Texture; + descriptorSets[i] = pkePipelines.vkDescriptorSetLayout_Texture; } VkDescriptorSetAllocateInfo vkDescriptorSetAllocateInfo; vkDescriptorSetAllocateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; @@ -619,7 +315,7 @@ void EntityType_Load(EntityType &et) { } VkDescriptorImageInfo textureDescriptorInfo; - textureDescriptorInfo.sampler = vkSampler_Texture; + textureDescriptorInfo.sampler = pkePipelines.vkSampler_Texture; textureDescriptorInfo.imageView = et.textureImageView; textureDescriptorInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; @@ -951,15 +647,5 @@ void EntityType_Teardown() { if (et->entityTypeCode) Pke_Delete<char>(et->entityTypeCode, strlen(et->entityTypeCode)); } - if (vkSampler_Texture != VK_NULL_HANDLE) - vkDestroySampler(vkDevice, vkSampler_Texture, vkAllocator); - for (long i = 0; i < 2; ++i) { - if (vkPipelines.pipelines[i] != VK_NULL_HANDLE) - vkDestroyPipeline(vkDevice, vkPipelines.pipelines[i], vkAllocator); - } - if (vkPipelineLayout_Texture != VK_NULL_HANDLE) - vkDestroyPipelineLayout(vkDevice, vkPipelineLayout_Texture, vkAllocator); - if (vkDescriptorSetLayout_Texture != VK_NULL_HANDLE) - vkDestroyDescriptorSetLayout(vkDevice, vkDescriptorSetLayout_Texture, vkAllocator); GlobalEntityTypes.~DynArray(); } |
