Flutter Engine
The Flutter Engine
Classes | Public Member Functions | Public Attributes | List of all members
vulkan::VulkanProcTable Class Reference

#include <vulkan_proc_table.h>

Inheritance diagram for vulkan::VulkanProcTable:
fml::RefCountedThreadSafe< VulkanProcTable > fml::internal::RefCountedThreadSafeBase

Classes

class  Proc
 

Public Member Functions

 VulkanProcTable ()
 
 VulkanProcTable (const char *so_path)
 
 VulkanProcTable (PFN_vkGetInstanceProcAddr get_instance_proc_addr)
 
 ~VulkanProcTable ()
 
bool HasAcquiredMandatoryProcAddresses () const
 
bool IsValid () const
 
bool AreInstanceProcsSetup () const
 
bool AreDeviceProcsSetup () const
 
bool SetupInstanceProcAddresses (const VulkanHandle< VkInstance > &instance)
 
bool SetupDeviceProcAddresses (const VulkanHandle< VkDevice > &device)
 
 DEFINE_PROC (AcquireNextImageKHR)
 
 DEFINE_PROC (AllocateCommandBuffers)
 
 DEFINE_PROC (AllocateMemory)
 
 DEFINE_PROC (BeginCommandBuffer)
 
 DEFINE_PROC (BindImageMemory)
 
 DEFINE_PROC (CmdPipelineBarrier)
 
 DEFINE_PROC (CreateCommandPool)
 
 DEFINE_PROC (CreateDebugReportCallbackEXT)
 
 DEFINE_PROC (CreateDevice)
 
 DEFINE_PROC (CreateFence)
 
 DEFINE_PROC (CreateImage)
 
 DEFINE_PROC (CreateInstance)
 
 DEFINE_PROC (CreateSemaphore)
 
 DEFINE_PROC (CreateSwapchainKHR)
 
 DEFINE_PROC (DestroyCommandPool)
 
 DEFINE_PROC (DestroyDebugReportCallbackEXT)
 
 DEFINE_PROC (DestroyDevice)
 
 DEFINE_PROC (DestroyFence)
 
 DEFINE_PROC (DestroyImage)
 
 DEFINE_PROC (DestroyInstance)
 
 DEFINE_PROC (DestroySemaphore)
 
 DEFINE_PROC (DestroySurfaceKHR)
 
 DEFINE_PROC (DestroySwapchainKHR)
 
 DEFINE_PROC (DeviceWaitIdle)
 
 DEFINE_PROC (EndCommandBuffer)
 
 DEFINE_PROC (EnumerateDeviceLayerProperties)
 
 DEFINE_PROC (EnumerateInstanceExtensionProperties)
 
 DEFINE_PROC (EnumerateInstanceLayerProperties)
 
 DEFINE_PROC (EnumeratePhysicalDevices)
 
 DEFINE_PROC (FreeCommandBuffers)
 
 DEFINE_PROC (FreeMemory)
 
 DEFINE_PROC (GetDeviceProcAddr)
 
 DEFINE_PROC (GetDeviceQueue)
 
 DEFINE_PROC (GetImageMemoryRequirements)
 
 DEFINE_PROC (GetPhysicalDeviceFeatures)
 
 DEFINE_PROC (GetPhysicalDeviceQueueFamilyProperties)
 
 DEFINE_PROC (QueueSubmit)
 
 DEFINE_PROC (QueueWaitIdle)
 
 DEFINE_PROC (ResetCommandBuffer)
 
 DEFINE_PROC (ResetFences)
 
 DEFINE_PROC (WaitForFences)
 
 DEFINE_PROC (GetPhysicalDeviceProperties)
 
 DEFINE_PROC (GetPhysicalDeviceMemoryProperties)
 
 DEFINE_PROC (MapMemory)
 
 DEFINE_PROC (UnmapMemory)
 
 DEFINE_PROC (FlushMappedMemoryRanges)
 
 DEFINE_PROC (InvalidateMappedMemoryRanges)
 
 DEFINE_PROC (BindBufferMemory)
 
 DEFINE_PROC (GetBufferMemoryRequirements)
 
 DEFINE_PROC (CreateBuffer)
 
 DEFINE_PROC (DestroyBuffer)
 
 DEFINE_PROC (CmdCopyBuffer)
 
 DEFINE_PROC (GetPhysicalDeviceMemoryProperties2)
 
 DEFINE_PROC (GetPhysicalDeviceMemoryProperties2KHR)
 
 DEFINE_PROC (GetBufferMemoryRequirements2)
 
 DEFINE_PROC (GetBufferMemoryRequirements2KHR)
 
 DEFINE_PROC (GetImageMemoryRequirements2)
 
 DEFINE_PROC (GetImageMemoryRequirements2KHR)
 
 DEFINE_PROC (BindBufferMemory2)
 
 DEFINE_PROC (BindBufferMemory2KHR)
 
 DEFINE_PROC (BindImageMemory2)
 
 DEFINE_PROC (BindImageMemory2KHR)
 
PFN_vkGetInstanceProcAddr NativeGetInstanceProcAddr () const
 
PFN_vkVoidFunction AcquireProc (const char *proc_name, const VulkanHandle< VkInstance > &instance) const
 
PFN_vkVoidFunction AcquireProc (const char *proc_name, const VulkanHandle< VkDevice > &device) const
 
- Public Member Functions inherited from fml::RefCountedThreadSafe< VulkanProcTable >
void Release () const
 
- Public Member Functions inherited from fml::internal::RefCountedThreadSafeBase
void AddRef () const
 
bool HasOneRef () const
 
void AssertHasOneRef () const
 

Public Attributes

PFN_vkGetInstanceProcAddr GetInstanceProcAddr = nullptr
 

Additional Inherited Members

- Protected Member Functions inherited from fml::RefCountedThreadSafe< VulkanProcTable >
 RefCountedThreadSafe ()
 
 ~RefCountedThreadSafe ()
 
- Protected Member Functions inherited from fml::internal::RefCountedThreadSafeBase
 RefCountedThreadSafeBase ()
 
 ~RefCountedThreadSafeBase ()
 
bool Release () const
 
void Adopt ()
 

Detailed Description

Definition at line 17 of file vulkan_proc_table.h.

Constructor & Destructor Documentation

◆ VulkanProcTable() [1/3]

vulkan::VulkanProcTable::VulkanProcTable ( )

Definition at line 24 of file vulkan_proc_table.cc.

24: VulkanProcTable("libvulkan.so"){};

◆ VulkanProcTable() [2/3]

vulkan::VulkanProcTable::VulkanProcTable ( const char *  so_path)
explicit

Definition at line 26 of file vulkan_proc_table.cc.

27 : handle_(nullptr), acquired_mandatory_proc_addresses_(false) {
28 acquired_mandatory_proc_addresses_ = OpenLibraryHandle(so_path) &&
29 SetupGetInstanceProcAddress() &&
30 SetupLoaderProcAddresses();
31}

◆ VulkanProcTable() [3/3]

vulkan::VulkanProcTable::VulkanProcTable ( PFN_vkGetInstanceProcAddr  get_instance_proc_addr)
explicit

Definition at line 33 of file vulkan_proc_table.cc.

35 : handle_(nullptr), acquired_mandatory_proc_addresses_(false) {
37 acquired_mandatory_proc_addresses_ = SetupLoaderProcAddresses();
38}
PFN_vkGetInstanceProcAddr GetInstanceProcAddr
decltype(vkGetInstanceProcAddr) * get_instance_proc_addr

◆ ~VulkanProcTable()

vulkan::VulkanProcTable::~VulkanProcTable ( )

Definition at line 40 of file vulkan_proc_table.cc.

40 {
41 CloseLibraryHandle();
42}

Member Function Documentation

◆ AcquireProc() [1/2]

PFN_vkVoidFunction vulkan::VulkanProcTable::AcquireProc ( const char *  proc_name,
const VulkanHandle< VkDevice > &  device 
) const

Definition at line 224 of file vulkan_proc_table.cc.

226 {
227 if (proc_name == nullptr || !device || !GetDeviceProcAddr) {
228 return nullptr;
229 }
230
231 return GetDeviceProcAddr(device, proc_name);
232}
VkDevice device
Definition: main.cc:53

◆ AcquireProc() [2/2]

PFN_vkVoidFunction vulkan::VulkanProcTable::AcquireProc ( const char *  proc_name,
const VulkanHandle< VkInstance > &  instance 
) const

Definition at line 212 of file vulkan_proc_table.cc.

214 {
215 if (proc_name == nullptr || !GetInstanceProcAddr) {
216 return nullptr;
217 }
218
219 // A VK_NULL_HANDLE as the instance is an acceptable parameter.
220 return reinterpret_cast<PFN_vkVoidFunction>(
221 GetInstanceProcAddr(instance, proc_name));
222}
VkInstance instance
Definition: main.cc:48
void(VKAPI_PTR * PFN_vkVoidFunction)(void)
Definition: vulkan_core.h:2992

◆ AreDeviceProcsSetup()

bool vulkan::VulkanProcTable::AreDeviceProcsSetup ( ) const

Definition at line 56 of file vulkan_proc_table.cc.

56 {
57 return device_;
58}

◆ AreInstanceProcsSetup()

bool vulkan::VulkanProcTable::AreInstanceProcsSetup ( ) const

Definition at line 52 of file vulkan_proc_table.cc.

52 {
53 return instance_;
54}

◆ DEFINE_PROC() [1/62]

vulkan::VulkanProcTable::DEFINE_PROC ( AcquireNextImageKHR  )

◆ DEFINE_PROC() [2/62]

vulkan::VulkanProcTable::DEFINE_PROC ( AllocateCommandBuffers  )

◆ DEFINE_PROC() [3/62]

vulkan::VulkanProcTable::DEFINE_PROC ( AllocateMemory  )

◆ DEFINE_PROC() [4/62]

vulkan::VulkanProcTable::DEFINE_PROC ( BeginCommandBuffer  )

◆ DEFINE_PROC() [5/62]

vulkan::VulkanProcTable::DEFINE_PROC ( BindBufferMemory  )

◆ DEFINE_PROC() [6/62]

vulkan::VulkanProcTable::DEFINE_PROC ( BindBufferMemory2  )

◆ DEFINE_PROC() [7/62]

vulkan::VulkanProcTable::DEFINE_PROC ( BindBufferMemory2KHR  )

◆ DEFINE_PROC() [8/62]

vulkan::VulkanProcTable::DEFINE_PROC ( BindImageMemory  )

◆ DEFINE_PROC() [9/62]

vulkan::VulkanProcTable::DEFINE_PROC ( BindImageMemory2  )

◆ DEFINE_PROC() [10/62]

vulkan::VulkanProcTable::DEFINE_PROC ( BindImageMemory2KHR  )

◆ DEFINE_PROC() [11/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CmdCopyBuffer  )

◆ DEFINE_PROC() [12/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CmdPipelineBarrier  )

◆ DEFINE_PROC() [13/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateBuffer  )

◆ DEFINE_PROC() [14/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateCommandPool  )

◆ DEFINE_PROC() [15/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateDebugReportCallbackEXT  )

◆ DEFINE_PROC() [16/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateDevice  )

◆ DEFINE_PROC() [17/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateFence  )

◆ DEFINE_PROC() [18/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateImage  )

◆ DEFINE_PROC() [19/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateInstance  )

◆ DEFINE_PROC() [20/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateSemaphore  )

◆ DEFINE_PROC() [21/62]

vulkan::VulkanProcTable::DEFINE_PROC ( CreateSwapchainKHR  )

◆ DEFINE_PROC() [22/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroyBuffer  )

◆ DEFINE_PROC() [23/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroyCommandPool  )

◆ DEFINE_PROC() [24/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroyDebugReportCallbackEXT  )

◆ DEFINE_PROC() [25/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroyDevice  )

◆ DEFINE_PROC() [26/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroyFence  )

◆ DEFINE_PROC() [27/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroyImage  )

◆ DEFINE_PROC() [28/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroyInstance  )

◆ DEFINE_PROC() [29/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroySemaphore  )

◆ DEFINE_PROC() [30/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroySurfaceKHR  )

◆ DEFINE_PROC() [31/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DestroySwapchainKHR  )

◆ DEFINE_PROC() [32/62]

vulkan::VulkanProcTable::DEFINE_PROC ( DeviceWaitIdle  )

◆ DEFINE_PROC() [33/62]

vulkan::VulkanProcTable::DEFINE_PROC ( EndCommandBuffer  )

◆ DEFINE_PROC() [34/62]

vulkan::VulkanProcTable::DEFINE_PROC ( EnumerateDeviceLayerProperties  )

◆ DEFINE_PROC() [35/62]

vulkan::VulkanProcTable::DEFINE_PROC ( EnumerateInstanceExtensionProperties  )

◆ DEFINE_PROC() [36/62]

vulkan::VulkanProcTable::DEFINE_PROC ( EnumerateInstanceLayerProperties  )

◆ DEFINE_PROC() [37/62]

vulkan::VulkanProcTable::DEFINE_PROC ( EnumeratePhysicalDevices  )

◆ DEFINE_PROC() [38/62]

vulkan::VulkanProcTable::DEFINE_PROC ( FlushMappedMemoryRanges  )

◆ DEFINE_PROC() [39/62]

vulkan::VulkanProcTable::DEFINE_PROC ( FreeCommandBuffers  )

◆ DEFINE_PROC() [40/62]

vulkan::VulkanProcTable::DEFINE_PROC ( FreeMemory  )

◆ DEFINE_PROC() [41/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetBufferMemoryRequirements  )

◆ DEFINE_PROC() [42/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetBufferMemoryRequirements2  )

◆ DEFINE_PROC() [43/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetBufferMemoryRequirements2KHR  )

◆ DEFINE_PROC() [44/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetDeviceProcAddr  )

◆ DEFINE_PROC() [45/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetDeviceQueue  )

◆ DEFINE_PROC() [46/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetImageMemoryRequirements  )

◆ DEFINE_PROC() [47/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetImageMemoryRequirements2  )

◆ DEFINE_PROC() [48/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetImageMemoryRequirements2KHR  )

◆ DEFINE_PROC() [49/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetPhysicalDeviceFeatures  )

◆ DEFINE_PROC() [50/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetPhysicalDeviceMemoryProperties  )

◆ DEFINE_PROC() [51/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetPhysicalDeviceMemoryProperties2  )

◆ DEFINE_PROC() [52/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetPhysicalDeviceMemoryProperties2KHR  )

◆ DEFINE_PROC() [53/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetPhysicalDeviceProperties  )

◆ DEFINE_PROC() [54/62]

vulkan::VulkanProcTable::DEFINE_PROC ( GetPhysicalDeviceQueueFamilyProperties  )

◆ DEFINE_PROC() [55/62]

vulkan::VulkanProcTable::DEFINE_PROC ( InvalidateMappedMemoryRanges  )

◆ DEFINE_PROC() [56/62]

vulkan::VulkanProcTable::DEFINE_PROC ( MapMemory  )

◆ DEFINE_PROC() [57/62]

vulkan::VulkanProcTable::DEFINE_PROC ( QueueSubmit  )

◆ DEFINE_PROC() [58/62]

vulkan::VulkanProcTable::DEFINE_PROC ( QueueWaitIdle  )

◆ DEFINE_PROC() [59/62]

vulkan::VulkanProcTable::DEFINE_PROC ( ResetCommandBuffer  )

◆ DEFINE_PROC() [60/62]

vulkan::VulkanProcTable::DEFINE_PROC ( ResetFences  )

◆ DEFINE_PROC() [61/62]

vulkan::VulkanProcTable::DEFINE_PROC ( UnmapMemory  )

◆ DEFINE_PROC() [62/62]

vulkan::VulkanProcTable::DEFINE_PROC ( WaitForFences  )

◆ HasAcquiredMandatoryProcAddresses()

bool vulkan::VulkanProcTable::HasAcquiredMandatoryProcAddresses ( ) const

Definition at line 44 of file vulkan_proc_table.cc.

44 {
45 return acquired_mandatory_proc_addresses_;
46}

◆ IsValid()

bool vulkan::VulkanProcTable::IsValid ( ) const

Definition at line 48 of file vulkan_proc_table.cc.

48 {
49 return instance_ && device_;
50}

◆ NativeGetInstanceProcAddr()

PFN_vkGetInstanceProcAddr vulkan::VulkanProcTable::NativeGetInstanceProcAddr ( ) const

Definition at line 74 of file vulkan_proc_table.cc.

74 {
77 }
78
79 auto instance_proc =
80 const_cast<uint8_t*>(handle_->ResolveSymbol("vkGetInstanceProcAddr"));
81 return reinterpret_cast<PFN_vkGetInstanceProcAddr>(instance_proc);
82}
const uint8_t * ResolveSymbol(const char *symbol)
PFN_vkVoidFunction(VKAPI_PTR * PFN_vkGetInstanceProcAddr)(VkInstance instance, const char *pName)
Definition: vulkan_core.h:3989

◆ SetupDeviceProcAddresses()

bool vulkan::VulkanProcTable::SetupDeviceProcAddresses ( const VulkanHandle< VkDevice > &  device)

Definition at line 133 of file vulkan_proc_table.cc.

134 {
135 ACQUIRE_PROC(AllocateCommandBuffers, handle);
136 ACQUIRE_PROC(AllocateMemory, handle);
137 ACQUIRE_PROC(BeginCommandBuffer, handle);
138 ACQUIRE_PROC(BindImageMemory, handle);
139 ACQUIRE_PROC(CmdPipelineBarrier, handle);
140 ACQUIRE_PROC(CreateCommandPool, handle);
141 ACQUIRE_PROC(CreateFence, handle);
142 ACQUIRE_PROC(CreateImage, handle);
143 ACQUIRE_PROC(CreateSemaphore, handle);
144 ACQUIRE_PROC(DestroyCommandPool, handle);
145 ACQUIRE_PROC(DestroyFence, handle);
146 ACQUIRE_PROC(DestroyImage, handle);
147 ACQUIRE_PROC(DestroySemaphore, handle);
148 ACQUIRE_PROC(DeviceWaitIdle, handle);
149 ACQUIRE_PROC(EndCommandBuffer, handle);
150 ACQUIRE_PROC(FreeCommandBuffers, handle);
151 ACQUIRE_PROC(FreeMemory, handle);
152 ACQUIRE_PROC(GetDeviceQueue, handle);
153 ACQUIRE_PROC(GetImageMemoryRequirements, handle);
154 ACQUIRE_PROC(QueueSubmit, handle);
155 ACQUIRE_PROC(QueueWaitIdle, handle);
156 ACQUIRE_PROC(ResetCommandBuffer, handle);
157 ACQUIRE_PROC(ResetFences, handle);
158 ACQUIRE_PROC(WaitForFences, handle);
159 ACQUIRE_PROC(MapMemory, handle);
160 ACQUIRE_PROC(UnmapMemory, handle);
161 ACQUIRE_PROC(FlushMappedMemoryRanges, handle);
162 ACQUIRE_PROC(InvalidateMappedMemoryRanges, handle);
163 ACQUIRE_PROC(BindBufferMemory, handle);
164 ACQUIRE_PROC(GetBufferMemoryRequirements, handle);
165 ACQUIRE_PROC(CreateBuffer, handle);
166 ACQUIRE_PROC(DestroyBuffer, handle);
167 ACQUIRE_PROC(CmdCopyBuffer, handle);
168
169 ACQUIRE_PROC_EITHER(GetBufferMemoryRequirements2,
170 GetBufferMemoryRequirements2KHR, handle);
171 ACQUIRE_PROC_EITHER(GetImageMemoryRequirements2,
172 GetImageMemoryRequirements2KHR, handle);
173 ACQUIRE_PROC_EITHER(BindBufferMemory2, BindBufferMemory2KHR, handle);
174 ACQUIRE_PROC_EITHER(BindImageMemory2, BindImageMemory2KHR, handle);
175
176#ifndef TEST_VULKAN_PROCS
177#if FML_OS_ANDROID
178 ACQUIRE_PROC(AcquireNextImageKHR, handle);
179 ACQUIRE_PROC(CreateSwapchainKHR, handle);
180 ACQUIRE_PROC(DestroySwapchainKHR, handle);
181 ACQUIRE_PROC(GetSwapchainImagesKHR, handle);
182 ACQUIRE_PROC(QueuePresentKHR, handle);
183#endif // FML_OS_ANDROID
184#if OS_FUCHSIA
185 ACQUIRE_PROC(ImportSemaphoreZirconHandleFUCHSIA, handle);
186 ACQUIRE_PROC(GetSemaphoreZirconHandleFUCHSIA, handle);
187 ACQUIRE_PROC(GetMemoryZirconHandleFUCHSIA, handle);
188 ACQUIRE_PROC(CreateBufferCollectionFUCHSIA, handle);
189 ACQUIRE_PROC(DestroyBufferCollectionFUCHSIA, handle);
190 ACQUIRE_PROC(SetBufferCollectionImageConstraintsFUCHSIA, handle);
191 ACQUIRE_PROC(GetBufferCollectionPropertiesFUCHSIA, handle);
192#endif // OS_FUCHSIA
193#endif // TEST_VULKAN_PROCS
194 device_ = VulkanHandle<VkDevice>{handle, nullptr};
195 return true;
196}
#define ACQUIRE_PROC(name, context)
#define ACQUIRE_PROC_EITHER(name, name2, context)

◆ SetupInstanceProcAddresses()

bool vulkan::VulkanProcTable::SetupInstanceProcAddresses ( const VulkanHandle< VkInstance > &  instance)

Definition at line 94 of file vulkan_proc_table.cc.

95 {
96 ACQUIRE_PROC(CreateDevice, handle);
97 ACQUIRE_PROC(DestroyDevice, handle);
98 ACQUIRE_PROC(DestroyInstance, handle);
99 ACQUIRE_PROC(EnumerateDeviceLayerProperties, handle);
100 ACQUIRE_PROC(EnumeratePhysicalDevices, handle);
101 ACQUIRE_PROC(GetDeviceProcAddr, handle);
102 ACQUIRE_PROC(GetPhysicalDeviceFeatures, handle);
103 ACQUIRE_PROC(GetPhysicalDeviceQueueFamilyProperties, handle);
104 ACQUIRE_PROC(GetPhysicalDeviceProperties, handle);
105 ACQUIRE_PROC(GetPhysicalDeviceMemoryProperties, handle);
106 ACQUIRE_PROC_EITHER(GetPhysicalDeviceMemoryProperties2,
107 GetPhysicalDeviceMemoryProperties2KHR, handle);
108
109#if FML_OS_ANDROID
110 ACQUIRE_PROC(GetPhysicalDeviceSurfaceCapabilitiesKHR, handle);
111 ACQUIRE_PROC(GetPhysicalDeviceSurfaceFormatsKHR, handle);
112 ACQUIRE_PROC(GetPhysicalDeviceSurfacePresentModesKHR, handle);
113 ACQUIRE_PROC(GetPhysicalDeviceSurfaceSupportKHR, handle);
114 ACQUIRE_PROC(DestroySurfaceKHR, handle);
115 ACQUIRE_PROC(CreateAndroidSurfaceKHR, handle);
116#endif // FML_OS_ANDROID
117
118 // The debug report functions are optional. We don't want proc acquisition to
119 // fail here because the optional methods were not present (since ACQUIRE_PROC
120 // returns false on failure). Wrap the optional proc acquisitions in an
121 // anonymous lambda and invoke it. We don't really care about the result since
122 // users of Debug reporting functions check for their presence explicitly.
123 [this, &handle]() -> bool {
124 ACQUIRE_PROC(CreateDebugReportCallbackEXT, handle);
125 ACQUIRE_PROC(DestroyDebugReportCallbackEXT, handle);
126 return true;
127 }();
128
129 instance_ = VulkanHandle<VkInstance>{handle, nullptr};
130 return true;
131}

Member Data Documentation

◆ GetInstanceProcAddr

PFN_vkGetInstanceProcAddr vulkan::VulkanProcTable::GetInstanceProcAddr = nullptr

Definition at line 66 of file vulkan_proc_table.h.


The documentation for this class was generated from the following files: