Blender V4.5
vk_common.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include <typeinfo>
12
13#ifdef _WIN32
14# include "BLI_winstuff.h"
15#endif
16
17#ifdef __APPLE__
18# include <MoltenVK/vk_mvk_moltenvk.h>
19#else
20# include <vulkan/vulkan.h>
21# ifdef _WIN32
22# include <vulkan/vulkan_win32.h>
23# endif
24#endif
25
26#include "vk_mem_alloc.h"
27
28#include "GPU_index_buffer.hh"
29#include "GPU_state.hh"
30#include "gpu_query.hh"
33
34namespace blender::gpu {
35
37
51
57
62VkFormat to_vk_format(const GPUVertCompType type,
63 const uint32_t size,
64 const GPUVertFetchMode fetch_mode);
65VkFormat to_vk_format(const shader::Type type);
66VkQueryType to_vk_query_type(const GPUQueryType query_type);
67
68VkComponentSwizzle to_vk_component_swizzle(const char swizzle);
69VkImageViewType to_vk_image_view_type(const eGPUTextureType type,
70 eImageViewUsage view_type,
71 VKImageViewArrayed arrayed);
72VkImageType to_vk_image_type(const eGPUTextureType type);
73VkClearColorValue to_vk_clear_color_value(const eGPUDataFormat format, const void *data);
74VkIndexType to_vk_index_type(const GPUIndexBufType index_type);
75VkPrimitiveTopology to_vk_primitive_topology(const GPUPrimType prim_type);
76VkCullModeFlags to_vk_cull_mode_flags(const eGPUFaceCullTest cull_test);
77VkSamplerAddressMode to_vk_sampler_address_mode(const GPUSamplerExtendMode extend_mode);
78VkDescriptorType to_vk_descriptor_type(const shader::ShaderCreateInfo::Resource &resource);
79
80template<typename T> VkObjectType to_vk_object_type(T /*vk_obj*/)
81{
82 const std::type_info &tid = typeid(T);
83#define VK_EQ_TYPEID(name, name2) \
84 if (tid == typeid(name)) { \
85 return VK_OBJECT_TYPE_##name2; \
86 }
87
88 VK_EQ_TYPEID(VkInstance, INSTANCE);
89 VK_EQ_TYPEID(VkPhysicalDevice, PHYSICAL_DEVICE);
90 VK_EQ_TYPEID(VkDevice, DEVICE);
91 VK_EQ_TYPEID(VkQueue, QUEUE);
92 VK_EQ_TYPEID(VkSemaphore, SEMAPHORE);
93 VK_EQ_TYPEID(VkCommandBuffer, COMMAND_BUFFER);
94 VK_EQ_TYPEID(VkFence, FENCE);
95 VK_EQ_TYPEID(VkDeviceMemory, DEVICE_MEMORY);
96 VK_EQ_TYPEID(VkBuffer, BUFFER);
97 VK_EQ_TYPEID(VkImage, IMAGE);
98 VK_EQ_TYPEID(VkEvent, EVENT);
99 VK_EQ_TYPEID(VkQueryPool, QUERY_POOL);
100 VK_EQ_TYPEID(VkBufferView, BUFFER_VIEW);
101 VK_EQ_TYPEID(VkImageView, IMAGE_VIEW);
102 VK_EQ_TYPEID(VkShaderModule, SHADER_MODULE);
103 VK_EQ_TYPEID(VkPipelineCache, PIPELINE_CACHE);
104 VK_EQ_TYPEID(VkPipelineLayout, PIPELINE_LAYOUT);
105 VK_EQ_TYPEID(VkRenderPass, RENDER_PASS);
106 VK_EQ_TYPEID(VkPipeline, PIPELINE);
107 VK_EQ_TYPEID(VkDescriptorSetLayout, DESCRIPTOR_SET_LAYOUT);
108 VK_EQ_TYPEID(VkSampler, SAMPLER);
109 VK_EQ_TYPEID(VkDescriptorPool, DESCRIPTOR_POOL);
110 VK_EQ_TYPEID(VkDescriptorSet, DESCRIPTOR_SET);
111 VK_EQ_TYPEID(VkFramebuffer, FRAMEBUFFER);
112 VK_EQ_TYPEID(VkCommandPool, COMMAND_POOL);
113 VK_EQ_TYPEID(VkSamplerYcbcrConversion, SAMPLER_YCBCR_CONVERSION);
114 VK_EQ_TYPEID(VkDescriptorUpdateTemplate, DESCRIPTOR_UPDATE_TEMPLATE);
115 VK_EQ_TYPEID(VkSurfaceKHR, SURFACE_KHR);
116 VK_EQ_TYPEID(VkSwapchainKHR, SWAPCHAIN_KHR);
117 VK_EQ_TYPEID(VkDisplayKHR, DISPLAY_KHR);
118 VK_EQ_TYPEID(VkDisplayModeKHR, DISPLAY_MODE_KHR);
119 VK_EQ_TYPEID(VkDebugReportCallbackEXT, DEBUG_REPORT_CALLBACK_EXT);
120#ifdef VK_ENABLE_BETA_EXTENSIONS
121 VK_EQ_TYPEID(VkVideoSessionKHR, VIDEO_SESSION_KHR);
122#endif
123#ifdef VK_ENABLE_BETA_EXTENSIONS
124 VK_EQ_TYPEID(VkVideoSessionParametersKHR, VIDEO_SESSION_PARAMETERS_KHR);
125#endif
126 VK_EQ_TYPEID(VkCuModuleNVX, CU_MODULE_NVX);
127 VK_EQ_TYPEID(VkCuFunctionNVX, CU_FUNCTION_NVX);
128 VK_EQ_TYPEID(VkDebugUtilsMessengerEXT, DEBUG_UTILS_MESSENGER_EXT);
129 VK_EQ_TYPEID(VkAccelerationStructureKHR, ACCELERATION_STRUCTURE_KHR);
130 VK_EQ_TYPEID(VkValidationCacheEXT, VALIDATION_CACHE_EXT);
131 VK_EQ_TYPEID(VkAccelerationStructureNV, ACCELERATION_STRUCTURE_NV);
132 VK_EQ_TYPEID(VkPerformanceConfigurationINTEL, PERFORMANCE_CONFIGURATION_INTEL);
133 VK_EQ_TYPEID(VkDeferredOperationKHR, DEFERRED_OPERATION_KHR);
134 VK_EQ_TYPEID(VkIndirectCommandsLayoutNV, INDIRECT_COMMANDS_LAYOUT_NV);
135 VK_EQ_TYPEID(VkPrivateDataSlotEXT, PRIVATE_DATA_SLOT_EXT);
136
138#undef VK_EQ_TYPEID
139 return VK_OBJECT_TYPE_UNKNOWN;
140}
141
142#define NOT_YET_IMPLEMENTED \
143 printf("%s:%d `%s` not implemented yet\n", __FILE__, __LINE__, __func__);
144
145} // namespace blender::gpu
#define BLI_assert_unreachable()
Definition BLI_assert.h:93
Compatibility-like things for windows.
eGPUFrameBufferBits
GPUPrimType
eGPUFaceCullTest
Definition GPU_state.hh:135
eGPUDataFormat
GPUSamplerExtendMode
eGPUTextureFormat
GPUVertFetchMode
GPUVertCompType
BMesh const char void * data
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
#define resource
format
#define T
VkQueryType to_vk_query_type(const GPUQueryType query_type)
Definition vk_common.cc:591
uint64_t TimelineValue
Definition vk_common.hh:36
VkIndexType to_vk_index_type(const GPUIndexBufType index_type)
Definition vk_common.cc:759
VkObjectType to_vk_object_type(T)
Definition vk_common.hh:80
VkComponentSwizzle to_vk_component_swizzle(const char swizzle)
Definition vk_common.cc:693
VkDescriptorType to_vk_descriptor_type(const shader::ShaderCreateInfo::Resource &resource)
Definition vk_common.cc:930
VkSamplerAddressMode to_vk_sampler_address_mode(const GPUSamplerExtendMode extend_mode)
Definition vk_common.cc:819
eGPUTextureFormat to_gpu_format(const VkFormat format)
Definition vk_common.cc:118
VkPrimitiveTopology to_vk_primitive_topology(const GPUPrimType prim_type)
Definition vk_common.cc:773
VkImageType to_vk_image_type(const eGPUTextureType type)
Definition vk_common.cc:601
VkFormat to_vk_format(const eGPUTextureFormat format)
Definition vk_common.cc:131
VkClearColorValue to_vk_clear_color_value(const eGPUDataFormat format, const void *data)
Definition vk_common.cc:724
VkImageAspectFlags to_vk_image_aspect_flag_bits(const eGPUTextureFormat format)
Definition vk_common.cc:14
VkImageViewType to_vk_image_view_type(const eGPUTextureType type, const eImageViewUsage view_type, VKImageViewArrayed arrayed)
Definition vk_common.cc:630
VkCullModeFlags to_vk_cull_mode_flags(const eGPUFaceCullTest cull_test)
Definition vk_common.cc:805
#define VK_EQ_TYPEID(name, name2)
char * buffers[2]