380 lines
15 KiB
C++
380 lines
15 KiB
C++
/*
|
|
* 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.
|
|
*
|
|
* Copyright:
|
|
* 2016, Danny Robson <danny@nerdcruft.net>
|
|
*/
|
|
|
|
#ifndef CRUFT_VK_FWD_HPP
|
|
#define CRUFT_VK_FWD_HPP
|
|
|
|
#include "./vk.hpp"
|
|
|
|
#include <cruft/util/preprocessor.hpp>
|
|
|
|
|
|
namespace cruft::vk {
|
|
template <typename SelfT> struct descendant;
|
|
template <typename SelfT, typename ParentT> struct enumerated;
|
|
template <typename SelfT, typename OwnerT> struct owned;
|
|
|
|
enum class bindpoint {
|
|
GRAPHICS = VK_PIPELINE_BIND_POINT_GRAPHICS,
|
|
COMPUTE = VK_PIPELINE_BIND_POINT_COMPUTE,
|
|
};
|
|
|
|
struct buffer;
|
|
struct buffer_view;
|
|
struct command_buffer;
|
|
struct command_pool;
|
|
struct device;
|
|
struct device_memory;
|
|
struct event;
|
|
struct fence;
|
|
struct framebuffer;
|
|
struct instance;
|
|
struct image;
|
|
struct image_view;
|
|
struct physical_device;
|
|
template <bindpoint> struct pipeline;
|
|
struct pipeline_cache;
|
|
struct pipeline_layout;
|
|
struct queue;
|
|
struct render_pass;
|
|
struct semaphore;
|
|
struct shader_module;
|
|
struct surface;
|
|
struct swapchain;
|
|
|
|
class error;
|
|
template <VkResult> class error_code;
|
|
|
|
#define VK_BINDPOINT_MAP(FUNC) MAP0(FUNC, bindpoint::GRAPHICS, bindpoint::COMPUTE)
|
|
|
|
#define VK_ENUMERATED_TYPE_MAP(FUNC) \
|
|
MAP0(FUNC, \
|
|
physical_device)
|
|
|
|
#define VK_DESCENDANT_TYPE_MAP(FUNC) \
|
|
MAP0(FUNC, \
|
|
device)
|
|
|
|
#define VK_ARRAY_TYPE_MAP(FUNC) \
|
|
MAP0(FUNC, \
|
|
pipeline<::cruft::vk::bindpoint::GRAPHICS>, \
|
|
pipeline<::cruft::vk::bindpoint::COMPUTE> \
|
|
)
|
|
|
|
#define VK_OWNED_TYPE_MAP(FUNC) \
|
|
MAP0(FUNC, \
|
|
buffer, \
|
|
command_pool, \
|
|
device_memory, \
|
|
framebuffer, \
|
|
image_view, \
|
|
pipeline_layout, \
|
|
queue, \
|
|
render_pass, \
|
|
semaphore, \
|
|
shader_module, \
|
|
surface, \
|
|
swapchain) \
|
|
VK_ARRAY_TYPE_MAP(FUNC)
|
|
|
|
#define VK_TYPE_MAP(FUNC) \
|
|
MAP0(FUNC,instance) \
|
|
VK_ENUMERATED_TYPE_MAP(FUNC) \
|
|
VK_DESCENDANT_TYPE_MAP(FUNC) \
|
|
VK_OWNED_TYPE_MAP(FUNC)
|
|
|
|
#define VK_NATIVE_TYPE_MAP(FUNC) \
|
|
MAP0(FUNC, \
|
|
VkClearColorValue, \
|
|
VkClearValue, \
|
|
VkOffset2D, \
|
|
VkOffset3D, \
|
|
VkExtent2D, \
|
|
VkExtent3D, \
|
|
VkViewport, \
|
|
VkRect2D, \
|
|
VkRect3D, \
|
|
VkClearRect, \
|
|
VkComponentMapping, \
|
|
VkPhysicalDeviceProperties, \
|
|
VkExtensionProperties, \
|
|
VkLayerProperties, \
|
|
VkApplicationInfo, \
|
|
VkAllocationCallbacks, \
|
|
VkDeviceQueueCreateInfo, \
|
|
VkDeviceCreateInfo, \
|
|
VkInstanceCreateInfo, \
|
|
VkQueueFamilyProperties, \
|
|
VkPhysicalDeviceMemoryProperties, \
|
|
VkMemoryAllocateInfo, \
|
|
VkMemoryRequirements, \
|
|
VkSparseImageFormatProperties, \
|
|
VkSparseImageMemoryRequirements, \
|
|
VkMemoryType, \
|
|
VkMemoryHeap, \
|
|
VkMappedMemoryRange, \
|
|
VkFormatProperties, \
|
|
VkImageFormatProperties, \
|
|
VkDescriptorBufferInfo, \
|
|
VkDescriptorImageInfo, \
|
|
VkWriteDescriptorSet, \
|
|
VkCopyDescriptorSet, \
|
|
VkBufferCreateInfo, \
|
|
VkBufferViewCreateInfo, \
|
|
VkImageSubresource, \
|
|
VkImageSubresourceLayers, \
|
|
VkImageSubresourceRange, \
|
|
VkMemoryBarrier, \
|
|
VkBufferMemoryBarrier, \
|
|
VkImageMemoryBarrier, \
|
|
VkImageCreateInfo, \
|
|
VkSubresourceLayout, \
|
|
VkImageViewCreateInfo, \
|
|
VkBufferCopy, \
|
|
VkSparseMemoryBind, \
|
|
VkSparseImageMemoryBind, \
|
|
VkSparseBufferMemoryBindInfo, \
|
|
VkSparseImageOpaqueMemoryBindInfo, \
|
|
VkSparseImageMemoryBindInfo, \
|
|
VkBindSparseInfo, \
|
|
VkImageCopy, \
|
|
VkImageBlit, \
|
|
VkBufferImageCopy, \
|
|
VkImageResolve, \
|
|
VkShaderModuleCreateInfo, \
|
|
VkDescriptorSetLayoutBinding, \
|
|
VkDescriptorSetLayoutCreateInfo, \
|
|
VkDescriptorPoolSize, \
|
|
VkDescriptorPoolCreateInfo, \
|
|
VkDescriptorSetAllocateInfo, \
|
|
VkSpecializationMapEntry, \
|
|
VkSpecializationInfo, \
|
|
VkPipelineShaderStageCreateInfo, \
|
|
VkComputePipelineCreateInfo, \
|
|
VkVertexInputBindingDescription, \
|
|
VkVertexInputAttributeDescription, \
|
|
VkPipelineVertexInputStateCreateInfo, \
|
|
VkPipelineInputAssemblyStateCreateInfo, \
|
|
VkPipelineTessellationStateCreateInfo, \
|
|
VkPipelineViewportStateCreateInfo, \
|
|
VkPipelineRasterizationStateCreateInfo, \
|
|
VkPipelineMultisampleStateCreateInfo, \
|
|
VkPipelineColorBlendAttachmentState, \
|
|
VkPipelineColorBlendStateCreateInfo, \
|
|
VkPipelineDynamicStateCreateInfo, \
|
|
VkStencilOpState, \
|
|
VkPipelineDepthStencilStateCreateInfo, \
|
|
VkGraphicsPipelineCreateInfo, \
|
|
VkPipelineCacheCreateInfo, \
|
|
VkPushConstantRange, \
|
|
VkPipelineLayoutCreateInfo, \
|
|
VkSamplerCreateInfo, \
|
|
VkCommandPoolCreateInfo, \
|
|
VkCommandBufferAllocateInfo, \
|
|
VkCommandBufferInheritanceInfo, \
|
|
VkCommandBufferBeginInfo, \
|
|
VkRenderPassBeginInfo, \
|
|
VkClearDepthStencilValue, \
|
|
VkClearAttachment, \
|
|
VkAttachmentDescription, \
|
|
VkAttachmentReference, \
|
|
VkSubpassDescription, \
|
|
VkSubpassDependency, \
|
|
VkRenderPassCreateInfo, \
|
|
VkEventCreateInfo, \
|
|
VkFenceCreateInfo, \
|
|
VkPhysicalDeviceFeatures, \
|
|
VkPhysicalDeviceSparseProperties, \
|
|
VkPhysicalDeviceLimits, \
|
|
VkSemaphoreCreateInfo, \
|
|
VkQueryPoolCreateInfo, \
|
|
VkFramebufferCreateInfo, \
|
|
VkDrawIndirectCommand, \
|
|
VkDrawIndexedIndirectCommand, \
|
|
VkDispatchIndirectCommand, \
|
|
VkSubmitInfo, \
|
|
VkDisplayPropertiesKHR, \
|
|
VkDisplayPlanePropertiesKHR, \
|
|
VkDisplayModeParametersKHR, \
|
|
VkDisplayModePropertiesKHR, \
|
|
VkDisplayModeCreateInfoKHR, \
|
|
VkDisplayPlaneCapabilitiesKHR, \
|
|
VkDisplaySurfaceCreateInfoKHR, \
|
|
VkDisplayPresentInfoKHR, \
|
|
VkSurfaceCapabilitiesKHR, \
|
|
VkAndroidSurfaceCreateInfoKHR, \
|
|
VkMirSurfaceCreateInfoKHR, \
|
|
VkViSurfaceCreateInfoNN, \
|
|
VkWaylandSurfaceCreateInfoKHR, \
|
|
VkWin32SurfaceCreateInfoKHR, \
|
|
VkXlibSurfaceCreateInfoKHR, \
|
|
VkXcbSurfaceCreateInfoKHR, \
|
|
VkSurfaceFormatKHR, \
|
|
VkSwapchainCreateInfoKHR, \
|
|
VkPresentInfoKHR, \
|
|
VkDebugReportCallbackCreateInfoEXT, \
|
|
VkValidationFlagsEXT, \
|
|
VkPipelineRasterizationStateRasterizationOrderAMD, \
|
|
VkDebugMarkerObjectNameInfoEXT, \
|
|
VkDebugMarkerObjectTagInfoEXT, \
|
|
VkDebugMarkerMarkerInfoEXT, \
|
|
VkDedicatedAllocationImageCreateInfoNV, \
|
|
VkDedicatedAllocationBufferCreateInfoNV, \
|
|
VkDedicatedAllocationMemoryAllocateInfoNV, \
|
|
VkExternalImageFormatPropertiesNV, \
|
|
VkExternalMemoryImageCreateInfoNV, \
|
|
VkExportMemoryAllocateInfoNV, \
|
|
VkImportMemoryWin32HandleInfoNV, \
|
|
VkExportMemoryWin32HandleInfoNV, \
|
|
VkWin32KeyedMutexAcquireReleaseInfoNV, \
|
|
VkDeviceGeneratedCommandsFeaturesNVX, \
|
|
VkDeviceGeneratedCommandsLimitsNVX, \
|
|
VkIndirectCommandsTokenNVX, \
|
|
VkIndirectCommandsLayoutTokenNVX, \
|
|
VkIndirectCommandsLayoutCreateInfoNVX, \
|
|
VkCmdProcessCommandsInfoNVX, \
|
|
VkCmdReserveSpaceForCommandsInfoNVX, \
|
|
VkObjectTableCreateInfoNVX, \
|
|
VkObjectTableEntryNVX, \
|
|
VkObjectTablePipelineEntryNVX, \
|
|
VkObjectTableDescriptorSetEntryNVX, \
|
|
VkObjectTableVertexBufferEntryNVX, \
|
|
VkObjectTableIndexBufferEntryNVX, \
|
|
VkObjectTablePushConstantEntryNVX, \
|
|
VkPhysicalDeviceFeatures2KHR, \
|
|
VkPhysicalDeviceProperties2KHR, \
|
|
VkFormatProperties2KHR, \
|
|
VkImageFormatProperties2KHR, \
|
|
VkPhysicalDeviceImageFormatInfo2KHR, \
|
|
VkQueueFamilyProperties2KHR, \
|
|
VkPhysicalDeviceMemoryProperties2KHR, \
|
|
VkSparseImageFormatProperties2KHR, \
|
|
VkPhysicalDeviceSparseImageFormatInfo2KHR, \
|
|
VkPhysicalDevicePushDescriptorPropertiesKHR, \
|
|
VkPresentRegionsKHR, \
|
|
VkPresentRegionKHR, \
|
|
VkRectLayerKHR, \
|
|
VkPhysicalDeviceVariablePointerFeaturesKHR, \
|
|
VkExternalMemoryPropertiesKHR, \
|
|
VkPhysicalDeviceExternalImageFormatInfoKHR, \
|
|
VkExternalImageFormatPropertiesKHR, \
|
|
VkPhysicalDeviceExternalBufferInfoKHR, \
|
|
VkExternalBufferPropertiesKHR, \
|
|
VkPhysicalDeviceIDPropertiesKHR, \
|
|
VkExternalMemoryImageCreateInfoKHR, \
|
|
VkExternalMemoryBufferCreateInfoKHR, \
|
|
VkExportMemoryAllocateInfoKHR, \
|
|
VkImportMemoryWin32HandleInfoKHR, \
|
|
VkExportMemoryWin32HandleInfoKHR, \
|
|
VkMemoryWin32HandlePropertiesKHR, \
|
|
VkMemoryGetWin32HandleInfoKHR, \
|
|
VkImportMemoryFdInfoKHR, \
|
|
VkMemoryFdPropertiesKHR, \
|
|
VkMemoryGetFdInfoKHR, \
|
|
VkWin32KeyedMutexAcquireReleaseInfoKHR, \
|
|
VkPhysicalDeviceExternalSemaphoreInfoKHR, \
|
|
VkExternalSemaphorePropertiesKHR, \
|
|
VkExportSemaphoreCreateInfoKHR, \
|
|
VkImportSemaphoreWin32HandleInfoKHR, \
|
|
VkExportSemaphoreWin32HandleInfoKHR, \
|
|
VkD3D12FenceSubmitInfoKHR, \
|
|
VkSemaphoreGetWin32HandleInfoKHR, \
|
|
VkImportSemaphoreFdInfoKHR, \
|
|
VkSemaphoreGetFdInfoKHR, \
|
|
VkPhysicalDeviceExternalFenceInfoKHR, \
|
|
VkExternalFencePropertiesKHR, \
|
|
VkExportFenceCreateInfoKHR, \
|
|
VkImportFenceWin32HandleInfoKHR, \
|
|
VkExportFenceWin32HandleInfoKHR, \
|
|
VkFenceGetWin32HandleInfoKHR, \
|
|
VkImportFenceFdInfoKHR, \
|
|
VkFenceGetFdInfoKHR, \
|
|
VkPhysicalDeviceMultiviewFeaturesKHX, \
|
|
VkPhysicalDeviceMultiviewPropertiesKHX, \
|
|
VkRenderPassMultiviewCreateInfoKHX, \
|
|
VkSurfaceCapabilities2EXT, \
|
|
VkDisplayPowerInfoEXT, \
|
|
VkDeviceEventInfoEXT, \
|
|
VkDisplayEventInfoEXT, \
|
|
VkSwapchainCounterCreateInfoEXT, \
|
|
VkPhysicalDeviceGroupPropertiesKHX, \
|
|
VkMemoryAllocateFlagsInfoKHX, \
|
|
VkBindBufferMemoryInfoKHX, \
|
|
VkBindImageMemoryInfoKHX, \
|
|
VkDeviceGroupRenderPassBeginInfoKHX, \
|
|
VkDeviceGroupCommandBufferBeginInfoKHX, \
|
|
VkDeviceGroupSubmitInfoKHX, \
|
|
VkDeviceGroupBindSparseInfoKHX, \
|
|
VkDeviceGroupPresentCapabilitiesKHX, \
|
|
VkImageSwapchainCreateInfoKHX, \
|
|
VkBindImageMemorySwapchainInfoKHX, \
|
|
VkAcquireNextImageInfoKHX, \
|
|
VkDeviceGroupPresentInfoKHX, \
|
|
VkDeviceGroupDeviceCreateInfoKHX, \
|
|
VkDeviceGroupSwapchainCreateInfoKHX, \
|
|
VkDescriptorUpdateTemplateEntryKHR, \
|
|
VkDescriptorUpdateTemplateCreateInfoKHR, \
|
|
VkXYColorEXT, \
|
|
VkHdrMetadataEXT, \
|
|
VkRefreshCycleDurationGOOGLE, \
|
|
VkPastPresentationTimingGOOGLE, \
|
|
VkPresentTimesInfoGOOGLE, \
|
|
VkPresentTimeGOOGLE, \
|
|
VkIOSSurfaceCreateInfoMVK, \
|
|
VkMacOSSurfaceCreateInfoMVK, \
|
|
VkViewportWScalingNV, \
|
|
VkPipelineViewportWScalingStateCreateInfoNV, \
|
|
VkViewportSwizzleNV, \
|
|
VkPipelineViewportSwizzleStateCreateInfoNV, \
|
|
VkPhysicalDeviceDiscardRectanglePropertiesEXT, \
|
|
VkPipelineDiscardRectangleStateCreateInfoEXT, \
|
|
VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, \
|
|
VkPhysicalDeviceSurfaceInfo2KHR, \
|
|
VkSurfaceCapabilities2KHR, \
|
|
VkSurfaceFormat2KHR, \
|
|
VkSharedPresentSurfaceCapabilitiesKHR, \
|
|
VkPhysicalDevice16BitStorageFeaturesKHR, \
|
|
VkBufferMemoryRequirementsInfo2KHR, \
|
|
VkImageMemoryRequirementsInfo2KHR, \
|
|
VkImageSparseMemoryRequirementsInfo2KHR, \
|
|
VkMemoryRequirements2KHR, \
|
|
VkSparseImageMemoryRequirements2KHR, \
|
|
VkMemoryDedicatedRequirementsKHR, \
|
|
VkMemoryDedicatedAllocateInfoKHR, \
|
|
VkTextureLODGatherFormatPropertiesAMD, \
|
|
VkPipelineCoverageToColorStateCreateInfoNV, \
|
|
VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, \
|
|
VkSampleLocationEXT, \
|
|
VkSampleLocationsInfoEXT, \
|
|
VkAttachmentSampleLocationsEXT, \
|
|
VkSubpassSampleLocationsEXT, \
|
|
VkRenderPassSampleLocationsBeginInfoEXT, \
|
|
VkPipelineSampleLocationsStateCreateInfoEXT, \
|
|
VkPhysicalDeviceSampleLocationsPropertiesEXT, \
|
|
VkMultisamplePropertiesEXT, \
|
|
VkSamplerReductionModeCreateInfoEXT, \
|
|
VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, \
|
|
VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, \
|
|
VkPipelineColorBlendAdvancedStateCreateInfoEXT, \
|
|
VkPipelineCoverageModulationStateCreateInfoNV, \
|
|
VkValidationCacheCreateInfoEXT, \
|
|
VkShaderModuleValidationCacheCreateInfoEXT)
|
|
|
|
}
|
|
|
|
#endif
|