From 4ecac0648b9f5d48d41c975921711e7dc3b31637 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Tue, 12 Sep 2017 14:24:21 +1000 Subject: [PATCH] traits: use a MAP to define is_native --- fwd.hpp | 278 +++++++++++++++++++++++++++++++++++++++++++++++++++++ traits.hpp | 10 +- 2 files changed, 283 insertions(+), 5 deletions(-) diff --git a/fwd.hpp b/fwd.hpp index aed9626..b43dd30 100644 --- a/fwd.hpp +++ b/fwd.hpp @@ -96,6 +96,284 @@ namespace cruft::vk { 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 diff --git a/traits.hpp b/traits.hpp index 534f093..cbff83e 100644 --- a/traits.hpp +++ b/traits.hpp @@ -80,13 +80,13 @@ namespace cruft::vk { //------------------------------------------------------------------------- - #define DEFINE_IS_HANDLE(KLASS) \ - template <> \ - struct is_native> : \ - public std::true_type \ + #define DEFINE_IS_HANDLE(KLASS) \ + template <> \ + struct is_native : \ + public std::true_type \ { }; - VK_TYPE_MAP (DEFINE_IS_HANDLE) + VK_NATIVE_TYPE_MAP (DEFINE_IS_HANDLE) #undef DEFINE_IS_HANDLE