5. Instance
Creating an instance
VkApplicationInfo
Create Instance (VkInstanceCreateInfo, vkCreateInstance() )
Checking for extension support vkEnumerateInstanceExtensionProperties() (VkExtensionProperties)
: Return number of global extension properties
Cleaning up vkDestroyInstance()
6. Validation layers
Using validation layers vkEnumerateInstanceLayerProperties() (VkLayerProperties)
: Return requested number of global layer properties
Message callback
( glfwGetRequiredInstanceExtensions() )
(VkInstanceCreateInfo)
VkDebugReportCallbackCreateInfoEXT
( PFN_vkCreateDebugReportCallbackEXT() )
( PFN_vkDestroyDebugReportCallbackEXT() )
7. Physical devices and queue families
Selecting a physical device
VkPhysicalDevice vkEnumeratePhysicalDevices()
: Enumerate physical devices accessible to Vulkan instance
Base device suitability checks
VkPhysicalDeviceProperties vkGetPhysicalDeviceProperties()
VkPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures()
Queue families
VkQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties()
8. Logical device and queues
Specifying the queues to be created
VkDeviceQueueCreateInfo
Specifying used device features
VkPhysicalDeviceFeatures
Creating the logical device
VkDeviceCreateInfo
vkCreateDevice() vkDestroyDevice()
Retrieving queue handles
VkQueue vkGetDeviceQueue()
9. Window surface
Window surface creation
VkWin32SurfaceCreateInfoKHR (VkSurfaceKHR)
( PFN_vkCreateWin32SurfaceKHR() )
( glfwCreateWindowSurface() ) vkDestroySurfaceKHR()
Querying for presentation support vkGetPhysicalDeviceSurfaceSupportKHR()
Creating the presentation queue
(VkDeviceQueueCreateInfo)
( vkGetDeviceQueue() )
10. Swap chain
Checking for swap chain support
VkExtensionProperties
VkEnumerateDeviceExtensionProperties()
: Return properties of available physical device extensions
(VkInstanceCreateInfo)
Querying details of swap chain support
VkSurfaceCapabilitiesKHR
VkSurfaceFormatKHR
VkPresentModeKHR vkGetPhysicalDeviceSurfaceCapabilities() vkGetPhysicalDeviceSurfaceFormatsKHR() vkGetPhysicalDeviceSurfacePresentModesKHR()
Choosing the right settings for the swap chain
Surface format
Presentation mode
Swap extent
Creating the swap chain
VkSwapchainCreateInfoKHR vkCreateSwapchainKHR() vkDestroySwapchainKHR()
Retrieving the swap chain images
VkImage
vkGetSwapchainImagesKHR()
11. Image views
VkImageViewCreateInfo vkCreateImageView() vkDestroyImageView()
12. Introduction
13. Shader modules
Vertex shader
Fragment shader
Per-vertex colors
Compiling the shaders
Loading a shader
Creating shader modules
VkShaderModuleCreateInfo vkCreateShaderModule() vkDestroyShaderModule()
Shader stage creation
VkPipelineShaderStageCreateInfo
14. Fixed functions
Vertex input
VkPipelineVertexInputStateCreateInfo
Input assembly
VkPipelineInputAssemblyStateCreateInfo
Viewports and scissors
VkViewport
VkPipelineViewportStateCreateInfo
Raterizer
VkPipelineRasterizationStateCreateInfo
Multisampling
VkPipelineMultisampleStateCreateInfo
Depth and stencil testing
Color blending
VkPipelineColorBlendAttachmentState
VkPipelineColorBlendStateCreateInfo
Dynamic state
VkPipelineDynamicStateCreateInfo
Pipeline layout
VkPipelineLayoutCreateInfo vkCreatePipelineLayout()
vkDestroyPipelineLayout()
15. Render passes
Attachment description
VkAttachmentDescription
Subpasses and attachment reference
VkAttachmentReference
VkSubpassDescription
Render pass
VkRederPassCreateInfo vkCreateRenderPass() vkDestroyRenderPass()
16. Graphics pipeline aggragation
VkGraphicsPipelineCreateInfo vkCreateGraphicsPipelines() vkDestroyPipeline()
17. Framebuffers
VkFramebufferInfo vkCreateFramebuffer() vkDestroyFramebuffer()
18. Command buffers
Command pools
VkCommandPoolCreateInfo vkCreateCommandPool() vkDestroyCommandPool()
Command buffer allocation
VkCommandBufferAllocateInfo vkAllocateCommandBuffers()
Starting command buffer recording
VkCommandBufferBeginInfo vkBeginCommandBuffer()
Starting a render pass
VkRenderPassBeginInfo vkCmdBeginRenderPass()
Basic drawing commands vkCmdBindPipeline() vkCmdDraw()
Finishing up vkCmdEndRenderPass() vkEndCommandBuffer()
19. Rendering and presentation
Semaphores
VkSemaphoreCreateInfo vkCreateSemaphore() vkDestroySemaphore()
Acquiring an image from the swap chain vkAcquireNextImageKHR()
Submitting the command buffer
VkSubmitInfo vkQueueSubmit()
Subpass dependencies
VkSubpassDependency
(VkRenderPassCreateInfo)
Presentation
VkPresentInfoKHR vkQueuePresentKHR() vkDeviceWaitIdle()
20. Swap chain recreation
Recreating the swap chain
Window resizing
( glfwSetWindowUserPointer() )
( glfwSetWindowSizeCallback() )
21. Vertex input description
Binding descriptions
VkVertexInputBindingDescription
Attribute description
VkVertexInputAttributeDescription
Pipeline vertex input
(VkPipelineVertexInputStateCreateInfo)
22. Vertex buffer creation
Buffer creation
VkBufferCreateInfo vkCreateBuffer() vkDestroyBuffer()
Memory requirements vkGetBufferMemoryRequirements() vkGetPhysicalDeviceMemoryProperties()
Memory allocation
VkMemoryAllocateInfo
vkAllocateMemory() vkBindBufferMemory() vkFreeMemory()
Filling the vertex buffer vkMapMemory() vkUnmapMemory()
Binding the vertex buffer vkCmdBindVertexBuffers()
23. Staging buffer
Transfer queue
Abstracting buffer creation
Using a staging buffer (Copy buffer)
VkBufferCopy vkCmdCopyBuffer() vkFreeCommandBuffers()
24. Index buffer vkCmdBindIndexBuffer() vkCmdDrawIndexed()
25. Descriptor layout and buffer (Uniform buffer)
Descriptor set layout
VkDescriptorSetLayoutBinding
VkDescriptorSetLayoutCreateInfo vkCreateDescriptorSetLayout()
(kPipelineLayoutCreateInfo) vkDestroyDescriptorSetLayout()
Uniform buffer
VkDeviceSize
Updating uniform data
UniformBufferObject
26. Descriptor pool and sets
Descriptor pool
VkDescriptorPoolCreateInfo vkCreateDescriptorPool() vkDestroyDescriptorPool()
Descriptor set
VkDescriptorSetAllocateInfo vkAllocateDescriptorSets() vkDescriptorBufferInfo
VkWriteDescriptoSet
vkUpdateDescriptorSets()
Using a descriptor set
(VkPipelineRasterizationStateCreateInfo)