Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision be34c9a6bba08254efa559ad761334e7d9502fdd)
+++ vulkan-game.cpp	(revision fd700156e5a5aca46cc18f426992984e8e9ae9f0)
@@ -115,4 +115,5 @@
       VkRenderPass renderPass;
       VkPipelineLayout pipelineLayout;
+      VkPipeline graphicsPipeline;
 
       // both SDL and GLFW create window functions return NULL on failure
@@ -680,4 +681,26 @@
          if (vkCreatePipelineLayout(device, &pipelineLayoutInfo, nullptr, &pipelineLayout) != VK_SUCCESS) {
             throw runtime_error("failed to create pipeline layout!");
+         }
+
+         VkGraphicsPipelineCreateInfo pipelineInfo = {};
+         pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
+         pipelineInfo.stageCount = 2;
+         pipelineInfo.pStages = shaderStages;
+         pipelineInfo.pVertexInputState = &vertexInputInfo;
+         pipelineInfo.pInputAssemblyState = &inputAssembly;
+         pipelineInfo.pViewportState = &viewportState;
+         pipelineInfo.pRasterizationState = &rasterizer;
+         pipelineInfo.pMultisampleState = &multisampling;
+         pipelineInfo.pDepthStencilState = nullptr;
+         pipelineInfo.pColorBlendState = &colorBlending;
+         pipelineInfo.pDynamicState = nullptr;
+         pipelineInfo.layout = pipelineLayout;
+         pipelineInfo.renderPass = renderPass;
+         pipelineInfo.subpass = 0;
+         pipelineInfo.basePipelineHandle = VK_NULL_HANDLE;
+         pipelineInfo.basePipelineIndex = -1;
+
+         if (vkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &graphicsPipeline) != VK_SUCCESS) {
+            throw runtime_error("failed to create graphics pipeline!");
          }
 
@@ -727,4 +750,5 @@
 
       void cleanup() {
+         vkDestroyPipeline(device, graphicsPipeline, nullptr);
          vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
          vkDestroyRenderPass(device, renderPass, nullptr);
