WIP Initialize PIpelines
This commit is contained in:
@@ -112,6 +112,10 @@ KRPipeline::KRPipeline(KRContext& context, VkDevice& device, const char* szKey,
|
|||||||
: KRContextObject(context)
|
: KRContextObject(context)
|
||||||
, m_iProgram(0) // not used for Vulkan
|
, m_iProgram(0) // not used for Vulkan
|
||||||
{
|
{
|
||||||
|
VkExtent2D swapChainExtent;
|
||||||
|
swapChainExtent.width = 1024; // TODO - Test code
|
||||||
|
swapChainExtent.height = 768; // TODO - Test code
|
||||||
|
|
||||||
strcpy(m_szKey, szKey);
|
strcpy(m_szKey, szKey);
|
||||||
|
|
||||||
const int kMaxStages = 4;
|
const int kMaxStages = 4;
|
||||||
@@ -140,6 +144,93 @@ KRPipeline::KRPipeline(KRContext& context, VkDevice& device, const char* szKey,
|
|||||||
|
|
||||||
stageInfo.pName = stageName.c_str();
|
stageInfo.pName = stageName.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VkPipelineVertexInputStateCreateInfo vertexInputInfo{};
|
||||||
|
vertexInputInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
|
||||||
|
vertexInputInfo.vertexBindingDescriptionCount = 0;
|
||||||
|
vertexInputInfo.pVertexBindingDescriptions = nullptr; // TODO
|
||||||
|
vertexInputInfo.vertexAttributeDescriptionCount = 0;
|
||||||
|
vertexInputInfo.pVertexAttributeDescriptions = nullptr; // TODO
|
||||||
|
|
||||||
|
VkPipelineInputAssemblyStateCreateInfo inputAssembly{};
|
||||||
|
inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
|
||||||
|
inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
|
||||||
|
inputAssembly.primitiveRestartEnable = VK_FALSE;
|
||||||
|
|
||||||
|
VkViewport viewport{};
|
||||||
|
viewport.x = 0.0f;
|
||||||
|
viewport.y = 0.0f;
|
||||||
|
viewport.width = (float)swapChainExtent.width;
|
||||||
|
viewport.height = (float)swapChainExtent.height;
|
||||||
|
viewport.minDepth = 0.0f;
|
||||||
|
viewport.maxDepth = 1.0f;
|
||||||
|
|
||||||
|
VkRect2D scissor{};
|
||||||
|
scissor.offset = { 0, 0 };
|
||||||
|
scissor.extent = swapChainExtent;
|
||||||
|
|
||||||
|
VkPipelineViewportStateCreateInfo viewportState{};
|
||||||
|
viewportState.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
|
||||||
|
viewportState.viewportCount = 1;
|
||||||
|
viewportState.pViewports = &viewport;
|
||||||
|
viewportState.scissorCount = 1;
|
||||||
|
viewportState.pScissors = &scissor;
|
||||||
|
|
||||||
|
VkPipelineRasterizationStateCreateInfo rasterizer{};
|
||||||
|
rasterizer.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
|
||||||
|
rasterizer.depthClampEnable = VK_FALSE;
|
||||||
|
rasterizer.rasterizerDiscardEnable = VK_FALSE;
|
||||||
|
rasterizer.polygonMode = VK_POLYGON_MODE_FILL;
|
||||||
|
rasterizer.lineWidth = 1.0f;
|
||||||
|
rasterizer.cullMode = VK_CULL_MODE_BACK_BIT;
|
||||||
|
rasterizer.frontFace = VK_FRONT_FACE_CLOCKWISE;
|
||||||
|
rasterizer.depthBiasEnable = VK_FALSE;
|
||||||
|
rasterizer.depthBiasConstantFactor = 0.0f;
|
||||||
|
rasterizer.depthBiasClamp = 0.0f;
|
||||||
|
rasterizer.depthBiasSlopeFactor = 0.0f;
|
||||||
|
|
||||||
|
VkPipelineMultisampleStateCreateInfo multisampling{};
|
||||||
|
multisampling.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
|
||||||
|
multisampling.sampleShadingEnable = VK_FALSE;
|
||||||
|
multisampling.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
|
||||||
|
multisampling.minSampleShading = 1.0f;
|
||||||
|
multisampling.pSampleMask = nullptr;
|
||||||
|
multisampling.alphaToCoverageEnable = VK_FALSE;
|
||||||
|
multisampling.alphaToOneEnable = VK_FALSE;
|
||||||
|
|
||||||
|
VkPipelineColorBlendAttachmentState colorBlendAttachment{};
|
||||||
|
colorBlendAttachment.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;
|
||||||
|
colorBlendAttachment.blendEnable = VK_FALSE;
|
||||||
|
colorBlendAttachment.srcColorBlendFactor = VK_BLEND_FACTOR_ONE;
|
||||||
|
colorBlendAttachment.dstColorBlendFactor = VK_BLEND_FACTOR_ZERO;
|
||||||
|
colorBlendAttachment.colorBlendOp = VK_BLEND_OP_ADD;
|
||||||
|
colorBlendAttachment.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
|
||||||
|
colorBlendAttachment.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
|
||||||
|
colorBlendAttachment.alphaBlendOp = VK_BLEND_OP_ADD;
|
||||||
|
|
||||||
|
VkPipelineColorBlendStateCreateInfo colorBlending{};
|
||||||
|
colorBlending.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
|
||||||
|
colorBlending.logicOpEnable = VK_FALSE;
|
||||||
|
colorBlending.logicOp = VK_LOGIC_OP_COPY;
|
||||||
|
colorBlending.attachmentCount = 1;
|
||||||
|
colorBlending.pAttachments = &colorBlendAttachment;
|
||||||
|
colorBlending.blendConstants[0] = 0.0f;
|
||||||
|
colorBlending.blendConstants[1] = 0.0f;
|
||||||
|
colorBlending.blendConstants[2] = 0.0f;
|
||||||
|
colorBlending.blendConstants[3] = 0.0f;
|
||||||
|
|
||||||
|
VkPipelineLayoutCreateInfo pipelineLayoutInfo{};
|
||||||
|
pipelineLayoutInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||||
|
pipelineLayoutInfo.setLayoutCount = 0;
|
||||||
|
pipelineLayoutInfo.pSetLayouts = nullptr;
|
||||||
|
pipelineLayoutInfo.pushConstantRangeCount = 0;
|
||||||
|
pipelineLayoutInfo.pPushConstantRanges = nullptr;
|
||||||
|
|
||||||
|
VkPipelineLayout pipelineLayout;
|
||||||
|
if (vkCreatePipelineLayout(device, &pipelineLayoutInfo, nullptr, &pipelineLayout) != VK_SUCCESS) {
|
||||||
|
// failed! TODO - Error handling
|
||||||
|
}
|
||||||
|
|
||||||
// TODO - WIP, need to complete
|
// TODO - WIP, need to complete
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,6 +343,8 @@ KRPipeline::KRPipeline(KRContext &context, char *szKey, std::string options, std
|
|||||||
}
|
}
|
||||||
|
|
||||||
KRPipeline::~KRPipeline() {
|
KRPipeline::~KRPipeline() {
|
||||||
|
// TODO: vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
|
||||||
|
|
||||||
if(m_iProgram) {
|
if(m_iProgram) {
|
||||||
GLDEBUG(glDeleteProgram(m_iProgram));
|
GLDEBUG(glDeleteProgram(m_iProgram));
|
||||||
if(getContext().getPipelineManager()->m_active_pipeline == this) {
|
if(getContext().getPipelineManager()->m_active_pipeline == this) {
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ KRShader::KRShader(KRContext &context, std::string name, std::string extension,
|
|||||||
{
|
{
|
||||||
m_pData = data;
|
m_pData = data;
|
||||||
m_extension = extension;
|
m_extension = extension;
|
||||||
|
m_subExtension = KRResource::GetFileExtension(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
KRShader::~KRShader()
|
KRShader::~KRShader()
|
||||||
|
|||||||
Reference in New Issue
Block a user