mirror of
https://github.com/opus-tango/IntroductionToVulkan.git
synced 2026-03-20 03:55:26 +00:00
185 lines
7.2 KiB
C++
185 lines
7.2 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
// Copyright 2017 Intel Corporation
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
// use this file except in compliance with the License. You may obtain a copy
|
|
// of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
// License for the specific language governing permissions and limitations
|
|
// under the License.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// ************************************************************ //
|
|
// Exported functions //
|
|
// //
|
|
// These functions are always exposed by vulkan libraries. //
|
|
// ************************************************************ //
|
|
|
|
#if !defined(VK_EXPORTED_FUNCTION)
|
|
#define VK_EXPORTED_FUNCTION( fun )
|
|
#endif
|
|
|
|
VK_EXPORTED_FUNCTION( vkGetInstanceProcAddr )
|
|
|
|
#undef VK_EXPORTED_FUNCTION
|
|
|
|
|
|
// ************************************************************ //
|
|
// Global level functions //
|
|
// //
|
|
// They allow checking what instance extensions are available //
|
|
// and allow creation of a Vulkan Instance. //
|
|
// ************************************************************ //
|
|
|
|
#if !defined(VK_GLOBAL_LEVEL_FUNCTION)
|
|
#define VK_GLOBAL_LEVEL_FUNCTION( fun )
|
|
#endif
|
|
|
|
// Tutorial 01
|
|
VK_GLOBAL_LEVEL_FUNCTION( vkCreateInstance )
|
|
|
|
// Tutorial 02
|
|
VK_GLOBAL_LEVEL_FUNCTION( vkEnumerateInstanceExtensionProperties )
|
|
|
|
#undef VK_GLOBAL_LEVEL_FUNCTION
|
|
|
|
|
|
// ************************************************************ //
|
|
// Instance level functions //
|
|
// //
|
|
// These functions allow for device queries and creation. //
|
|
// They help choose which device is well suited for our needs. //
|
|
// ************************************************************ //
|
|
|
|
#if !defined(VK_INSTANCE_LEVEL_FUNCTION)
|
|
#define VK_INSTANCE_LEVEL_FUNCTION( fun )
|
|
#endif
|
|
|
|
// Tutorial 01
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkEnumeratePhysicalDevices )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceProperties )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceFeatures )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceQueueFamilyProperties )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkCreateDevice )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetDeviceProcAddr )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkDestroyInstance )
|
|
|
|
// Tutorial 02
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkEnumerateDeviceExtensionProperties )
|
|
#if defined(USE_SWAPCHAIN_EXTENSIONS)
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceSurfaceSupportKHR )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceSurfaceCapabilitiesKHR )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceSurfaceFormatsKHR )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceSurfacePresentModesKHR )
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkDestroySurfaceKHR )
|
|
#if defined(VK_USE_PLATFORM_WIN32_KHR)
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkCreateWin32SurfaceKHR )
|
|
#elif defined(VK_USE_PLATFORM_XCB_KHR)
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkCreateXcbSurfaceKHR )
|
|
#elif defined(VK_USE_PLATFORM_XLIB_KHR)
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkCreateXlibSurfaceKHR )
|
|
#endif
|
|
#endif
|
|
|
|
// Tutorial 04
|
|
VK_INSTANCE_LEVEL_FUNCTION( vkGetPhysicalDeviceMemoryProperties )
|
|
|
|
#undef VK_INSTANCE_LEVEL_FUNCTION
|
|
|
|
|
|
// ************************************************************ //
|
|
// Device level functions //
|
|
// //
|
|
// These functions are used mainly for drawing //
|
|
// ************************************************************ //
|
|
|
|
#if !defined(VK_DEVICE_LEVEL_FUNCTION)
|
|
#define VK_DEVICE_LEVEL_FUNCTION( fun )
|
|
#endif
|
|
|
|
// Tutorial 01
|
|
VK_DEVICE_LEVEL_FUNCTION( vkGetDeviceQueue )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDeviceWaitIdle )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyDevice )
|
|
|
|
// Tutorial 02
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateSemaphore )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateCommandPool )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkAllocateCommandBuffers )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkBeginCommandBuffer )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdPipelineBarrier )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdClearColorImage )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkEndCommandBuffer )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkQueueSubmit )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkFreeCommandBuffers )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyCommandPool )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroySemaphore )
|
|
#if defined(USE_SWAPCHAIN_EXTENSIONS)
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateSwapchainKHR )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkGetSwapchainImagesKHR )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkAcquireNextImageKHR )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkQueuePresentKHR )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroySwapchainKHR )
|
|
#endif
|
|
|
|
// Tutorial 03
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateImageView )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateRenderPass )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateFramebuffer )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateShaderModule )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreatePipelineLayout )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateGraphicsPipelines )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdBeginRenderPass )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdBindPipeline )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdDraw )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdEndRenderPass )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyShaderModule )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyPipelineLayout )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyPipeline )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyRenderPass )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyFramebuffer )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyImageView )
|
|
|
|
// Tutorial 04
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateFence )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateBuffer )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkGetBufferMemoryRequirements )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkAllocateMemory )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkBindBufferMemory )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkMapMemory )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkFlushMappedMemoryRanges )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkUnmapMemory )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdSetViewport )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdSetScissor )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdBindVertexBuffers )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkWaitForFences )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkResetFences )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkFreeMemory )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyBuffer )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyFence )
|
|
|
|
// Tutorial 05
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdCopyBuffer )
|
|
|
|
// Tutorial 06
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateImage )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkGetImageMemoryRequirements )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkBindImageMemory )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateSampler )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdCopyBufferToImage )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateDescriptorSetLayout )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCreateDescriptorPool )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkAllocateDescriptorSets )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkUpdateDescriptorSets )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkCmdBindDescriptorSets )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyDescriptorPool )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyDescriptorSetLayout )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroySampler )
|
|
VK_DEVICE_LEVEL_FUNCTION( vkDestroyImage )
|
|
|
|
#undef VK_DEVICE_LEVEL_FUNCTION |