traits: use a MAP to define is_native

This commit is contained in:
Danny Robson 2017-09-12 14:24:21 +10:00
parent 47bcb065c5
commit 4ecac0648b
2 changed files with 283 additions and 5 deletions

278
fwd.hpp
View File

@ -96,6 +96,284 @@ namespace cruft::vk {
VK_ENUMERATED_TYPE_MAP(FUNC) \ VK_ENUMERATED_TYPE_MAP(FUNC) \
VK_DESCENDANT_TYPE_MAP(FUNC) \ VK_DESCENDANT_TYPE_MAP(FUNC) \
VK_OWNED_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 #endif

View File

@ -80,13 +80,13 @@ namespace cruft::vk {
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
#define DEFINE_IS_HANDLE(KLASS) \ #define DEFINE_IS_HANDLE(KLASS) \
template <> \ template <> \
struct is_native<native_t<KLASS>> : \ struct is_native<KLASS> : \
public std::true_type \ public std::true_type \
{ }; { };
VK_TYPE_MAP (DEFINE_IS_HANDLE) VK_NATIVE_TYPE_MAP (DEFINE_IS_HANDLE)
#undef DEFINE_IS_HANDLE #undef DEFINE_IS_HANDLE