libcruft-vk/fwd.hpp

382 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-2017, 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 debug_report;
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, \
debug_report, \
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