mirror of
https://github.com/charles-lunarg/vk-bootstrap.git
synced 2024-11-22 07:24:34 +00:00
Handling extensions + incorporating DispatchTable into main src
- which means rewriting almost the entire script..
This commit is contained in:
parent
a0a0738299
commit
d8c6fe42b8
@ -1,23 +1,24 @@
|
||||
|
||||
#https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/registry/vk.xml
|
||||
|
||||
import urllib.request
|
||||
import xmltodict
|
||||
|
||||
with urllib.request.urlopen('https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/registry/vk.xml') as response:
|
||||
vk_xml_raw = response.read()
|
||||
|
||||
vk_xml = xmltodict.parse(vk_xml_raw,process_namespaces=True)
|
||||
|
||||
commands = vk_xml['registry']['commands']['command']
|
||||
|
||||
device_commands = [];
|
||||
device_aliases = {};
|
||||
#exclusions
|
||||
exclusions = [
|
||||
'vkGetDeviceProcAddr',
|
||||
'vkCreateDevice',
|
||||
'vkDestroyDevice'
|
||||
]
|
||||
|
||||
#formatting functions
|
||||
def format_header_top(header: str):
|
||||
header += '\n#pragma once\n\n#include <vulkan/vulkan.h>\n\n'
|
||||
header += 'namespace vkb {\n\n'
|
||||
header += 'struct DispatchTable {\n'
|
||||
header += '\tDispatchTable() = default;\n'
|
||||
header += '\tDispatchTable(VkDevice const& device, PFN_vkGetDeviceProcAddr const& procAddr) {\n'
|
||||
return header;
|
||||
|
||||
def format_header_mid(header: str):
|
||||
header += '\t}\n'
|
||||
return header;
|
||||
|
||||
def format_header_bottom(header: str):
|
||||
@ -33,28 +34,66 @@ def format_declaration(header: str, name):
|
||||
header = format_declaration(header, device_aliases[name])
|
||||
return header;
|
||||
|
||||
for command in commands:
|
||||
keys = command.keys()
|
||||
if 'proto' in keys and 'param' in keys:
|
||||
type_device = False;
|
||||
for p in command['param']:
|
||||
if 'type' in p:
|
||||
for t in p:
|
||||
if t == 'type' and p[t] == 'VkDevice':
|
||||
#only check first type
|
||||
type_device = True;
|
||||
break;
|
||||
if type_device and command['proto']['name'] != 'vkGetDeviceProcAddr':
|
||||
device_commands += [command['proto']['name']]
|
||||
elif '@alias'in keys:
|
||||
device_aliases[(command['@alias'])] = command['@name'];
|
||||
def format_load(header: str, name):
|
||||
fptr_name = 'PFN_' + name
|
||||
member_name = name[2].lower() + name[3:]
|
||||
header += '\t\t' + member_name + ' = (' + fptr_name + ')procAddr(device, "' + name + '");\n'
|
||||
return header;
|
||||
|
||||
header = ''
|
||||
header = format_header_top(header)
|
||||
for command in device_commands:
|
||||
header = format_declaration(header, command);
|
||||
header = format_header_bottom(header)
|
||||
#install xmltodict
|
||||
import sys
|
||||
import subprocess
|
||||
import json
|
||||
|
||||
header_file = open("../src/VkDispatchTable.h", "w")
|
||||
header_file.write(header)
|
||||
header_file.close();
|
||||
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'xmltodict'])
|
||||
|
||||
#fetch fresh vk.xml from Khronos repo
|
||||
import urllib.request
|
||||
import xmltodict
|
||||
|
||||
with urllib.request.urlopen('https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/registry/vk.xml') as response:
|
||||
vk_xml_raw = response.read()
|
||||
|
||||
vk_xml = xmltodict.parse(vk_xml_raw,process_namespaces=True)
|
||||
|
||||
commands = vk_xml['registry']['commands']['command']
|
||||
extensions = vk_xml['registry']['extensions']['extension']
|
||||
|
||||
device_commands = {};
|
||||
|
||||
extension_commands = {};
|
||||
|
||||
for extension in extensions:
|
||||
extension_name = extension['@name']
|
||||
for key in extension.keys():
|
||||
if key == 'require':
|
||||
requires = [extension[key]]
|
||||
for required in requires:
|
||||
if type(required) is list:
|
||||
for nested_required in required:
|
||||
if '@feature' in nested_required and 'command' in nested_required:
|
||||
extension_commands[(extension_name, nested_required['@feature'])] = []
|
||||
commands = [nested_required['command']]
|
||||
for command in commands:
|
||||
if type(command) is list:
|
||||
for nested_command in command:
|
||||
extension_commands[(extension_name, nested_required['@feature'])] += [nested_command['@name']]
|
||||
else:
|
||||
extension_commands[(extension_name, nested_required['@feature'])] += [command['@name']]
|
||||
elif 'command' in required:
|
||||
commands = [required['command']]
|
||||
|
||||
print(extension_commands)
|
||||
|
||||
#header = ''
|
||||
#header = format_header_top(header)
|
||||
#for command in device_commands:
|
||||
# header = format_load(header, command);
|
||||
#header = format_header_mid(header)
|
||||
#for command in device_commands:
|
||||
# header = format_declaration(header, command);
|
||||
#header = format_header_bottom(header)
|
||||
|
||||
#header_file = open("../src/VkDispatchTable.h", "w")
|
||||
#header_file.write(header)
|
||||
#header_file.close();
|
@ -142,6 +142,7 @@ class VulkanFunctions {
|
||||
PFN_vkGetPhysicalDeviceFormatProperties2 fp_vkGetPhysicalDeviceFormatProperties2 = nullptr;
|
||||
PFN_vkGetPhysicalDeviceMemoryProperties2 fp_vkGetPhysicalDeviceMemoryProperties2 = nullptr;
|
||||
|
||||
PFN_vkGetDeviceProcAddr fp_vkGetDeviceProcAddr = nullptr;
|
||||
PFN_vkCreateDevice fp_vkCreateDevice = nullptr;
|
||||
PFN_vkDestroyDevice fp_vkDestroyDevice = nullptr;
|
||||
PFN_vkEnumerateDeviceExtensionProperties fp_vkEnumerateDeviceExtensionProperties = nullptr;
|
||||
@ -189,6 +190,7 @@ class VulkanFunctions {
|
||||
get_proc_addr(fp_vkGetPhysicalDeviceFormatProperties2, "vkGetPhysicalDeviceFormatProperties2");
|
||||
get_proc_addr(fp_vkGetPhysicalDeviceMemoryProperties2, "vkGetPhysicalDeviceMemoryProperties2");
|
||||
|
||||
get_proc_addr(fp_vkGetDeviceProcAddr, "vkGetDeviceProcAddr");
|
||||
get_proc_addr(fp_vkCreateDevice, "vkCreateDevice");
|
||||
get_proc_addr(fp_vkDestroyDevice, "vkDestroyDevice");
|
||||
get_proc_addr(fp_vkEnumerateDeviceExtensionProperties, "vkEnumerateDeviceExtensionProperties");
|
||||
@ -738,6 +740,7 @@ detail::Result<Instance> InstanceBuilder::build() const {
|
||||
instance.allocation_callbacks = info.allocation_callbacks;
|
||||
instance.instance_version = api_version;
|
||||
instance.fp_vkGetInstanceProcAddr = detail::vulkan_functions().ptr_vkGetInstanceProcAddr;
|
||||
instance.fp_vkGetDeviceProcAddr = detail::vulkan_functions().fp_vkGetDeviceProcAddr;
|
||||
return instance;
|
||||
}
|
||||
|
||||
@ -1305,6 +1308,12 @@ std::vector<VkQueueFamilyProperties> PhysicalDevice::get_queue_families() const
|
||||
return queue_families;
|
||||
}
|
||||
|
||||
// --- DispatchTable --- //
|
||||
|
||||
DispatchTable Device::get_dispatch_table() {
|
||||
return DispatchTable(device, detail::vulkan_functions().fp_vkGetDeviceProcAddr);
|
||||
}
|
||||
|
||||
// ---- Queues ---- //
|
||||
|
||||
detail::Result<uint32_t> Device::get_queue_index(QueueType type) const {
|
||||
@ -1474,6 +1483,7 @@ detail::Result<Device> DeviceBuilder::build() const {
|
||||
device.surface = physical_device.surface;
|
||||
device.queue_families = physical_device.queue_families;
|
||||
device.allocation_callbacks = info.allocation_callbacks;
|
||||
device.fp_vkGetDeviceProcAddr =
|
||||
return device;
|
||||
}
|
||||
DeviceBuilder& DeviceBuilder::custom_queue_setup(std::vector<CustomQueueDescription> queue_descriptions) {
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include "VkDispatchTable.h"
|
||||
|
||||
namespace vkb {
|
||||
|
||||
@ -215,6 +216,7 @@ struct Instance {
|
||||
VkAllocationCallbacks* allocation_callbacks = VK_NULL_HANDLE;
|
||||
|
||||
PFN_vkGetInstanceProcAddr fp_vkGetInstanceProcAddr = nullptr;
|
||||
PFN_vkGetDeviceProcAddr fp_vkGetDeviceProcAddr = nullptr;
|
||||
|
||||
private:
|
||||
bool headless = false;
|
||||
@ -541,6 +543,9 @@ struct Device {
|
||||
VkSurfaceKHR surface = VK_NULL_HANDLE;
|
||||
std::vector<VkQueueFamilyProperties> queue_families;
|
||||
VkAllocationCallbacks* allocation_callbacks = VK_NULL_HANDLE;
|
||||
PFN_vkGetDeviceProcAddr fp_vkGetDeviceProcAddr = nullptr;
|
||||
|
||||
DispatchTable get_dispatch_table();
|
||||
|
||||
detail::Result<uint32_t> get_queue_index(QueueType type) const;
|
||||
// Only a compute or transfer queue type is valid. All other queue types do not support a 'dedicated' queue index
|
||||
|
@ -6,8 +6,203 @@
|
||||
namespace vkb {
|
||||
|
||||
struct DispatchTable {
|
||||
PFN_vkCreateDevice createDevice = nullptr;
|
||||
PFN_vkDestroyDevice destroyDevice = nullptr;
|
||||
DispatchTable() = default;
|
||||
DispatchTable(VkDevice const& device, PFN_vkGetDeviceProcAddr const& procAddr) {
|
||||
getDeviceQueue = (PFN_vkGetDeviceQueue)procAddr(device, "vkGetDeviceQueue");
|
||||
allocateMemory = (PFN_vkAllocateMemory)procAddr(device, "vkAllocateMemory");
|
||||
freeMemory = (PFN_vkFreeMemory)procAddr(device, "vkFreeMemory");
|
||||
mapMemory = (PFN_vkMapMemory)procAddr(device, "vkMapMemory");
|
||||
unmapMemory = (PFN_vkUnmapMemory)procAddr(device, "vkUnmapMemory");
|
||||
flushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)procAddr(device, "vkFlushMappedMemoryRanges");
|
||||
invalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)procAddr(device, "vkInvalidateMappedMemoryRanges");
|
||||
getDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)procAddr(device, "vkGetDeviceMemoryCommitment");
|
||||
getBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)procAddr(device, "vkGetBufferMemoryRequirements");
|
||||
bindBufferMemory = (PFN_vkBindBufferMemory)procAddr(device, "vkBindBufferMemory");
|
||||
getImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)procAddr(device, "vkGetImageMemoryRequirements");
|
||||
bindImageMemory = (PFN_vkBindImageMemory)procAddr(device, "vkBindImageMemory");
|
||||
getImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)procAddr(device, "vkGetImageSparseMemoryRequirements");
|
||||
createFence = (PFN_vkCreateFence)procAddr(device, "vkCreateFence");
|
||||
destroyFence = (PFN_vkDestroyFence)procAddr(device, "vkDestroyFence");
|
||||
resetFences = (PFN_vkResetFences)procAddr(device, "vkResetFences");
|
||||
getFenceStatus = (PFN_vkGetFenceStatus)procAddr(device, "vkGetFenceStatus");
|
||||
waitForFences = (PFN_vkWaitForFences)procAddr(device, "vkWaitForFences");
|
||||
createSemaphore = (PFN_vkCreateSemaphore)procAddr(device, "vkCreateSemaphore");
|
||||
destroySemaphore = (PFN_vkDestroySemaphore)procAddr(device, "vkDestroySemaphore");
|
||||
createEvent = (PFN_vkCreateEvent)procAddr(device, "vkCreateEvent");
|
||||
destroyEvent = (PFN_vkDestroyEvent)procAddr(device, "vkDestroyEvent");
|
||||
getEventStatus = (PFN_vkGetEventStatus)procAddr(device, "vkGetEventStatus");
|
||||
setEvent = (PFN_vkSetEvent)procAddr(device, "vkSetEvent");
|
||||
resetEvent = (PFN_vkResetEvent)procAddr(device, "vkResetEvent");
|
||||
createQueryPool = (PFN_vkCreateQueryPool)procAddr(device, "vkCreateQueryPool");
|
||||
destroyQueryPool = (PFN_vkDestroyQueryPool)procAddr(device, "vkDestroyQueryPool");
|
||||
getQueryPoolResults = (PFN_vkGetQueryPoolResults)procAddr(device, "vkGetQueryPoolResults");
|
||||
resetQueryPool = (PFN_vkResetQueryPool)procAddr(device, "vkResetQueryPool");
|
||||
createBuffer = (PFN_vkCreateBuffer)procAddr(device, "vkCreateBuffer");
|
||||
destroyBuffer = (PFN_vkDestroyBuffer)procAddr(device, "vkDestroyBuffer");
|
||||
createBufferView = (PFN_vkCreateBufferView)procAddr(device, "vkCreateBufferView");
|
||||
destroyBufferView = (PFN_vkDestroyBufferView)procAddr(device, "vkDestroyBufferView");
|
||||
createImage = (PFN_vkCreateImage)procAddr(device, "vkCreateImage");
|
||||
destroyImage = (PFN_vkDestroyImage)procAddr(device, "vkDestroyImage");
|
||||
getImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)procAddr(device, "vkGetImageSubresourceLayout");
|
||||
createImageView = (PFN_vkCreateImageView)procAddr(device, "vkCreateImageView");
|
||||
destroyImageView = (PFN_vkDestroyImageView)procAddr(device, "vkDestroyImageView");
|
||||
createShaderModule = (PFN_vkCreateShaderModule)procAddr(device, "vkCreateShaderModule");
|
||||
destroyShaderModule = (PFN_vkDestroyShaderModule)procAddr(device, "vkDestroyShaderModule");
|
||||
createPipelineCache = (PFN_vkCreatePipelineCache)procAddr(device, "vkCreatePipelineCache");
|
||||
destroyPipelineCache = (PFN_vkDestroyPipelineCache)procAddr(device, "vkDestroyPipelineCache");
|
||||
getPipelineCacheData = (PFN_vkGetPipelineCacheData)procAddr(device, "vkGetPipelineCacheData");
|
||||
mergePipelineCaches = (PFN_vkMergePipelineCaches)procAddr(device, "vkMergePipelineCaches");
|
||||
createGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)procAddr(device, "vkCreateGraphicsPipelines");
|
||||
createComputePipelines = (PFN_vkCreateComputePipelines)procAddr(device, "vkCreateComputePipelines");
|
||||
destroyPipeline = (PFN_vkDestroyPipeline)procAddr(device, "vkDestroyPipeline");
|
||||
createPipelineLayout = (PFN_vkCreatePipelineLayout)procAddr(device, "vkCreatePipelineLayout");
|
||||
destroyPipelineLayout = (PFN_vkDestroyPipelineLayout)procAddr(device, "vkDestroyPipelineLayout");
|
||||
createSampler = (PFN_vkCreateSampler)procAddr(device, "vkCreateSampler");
|
||||
destroySampler = (PFN_vkDestroySampler)procAddr(device, "vkDestroySampler");
|
||||
createDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)procAddr(device, "vkCreateDescriptorSetLayout");
|
||||
destroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)procAddr(device, "vkDestroyDescriptorSetLayout");
|
||||
createDescriptorPool = (PFN_vkCreateDescriptorPool)procAddr(device, "vkCreateDescriptorPool");
|
||||
destroyDescriptorPool = (PFN_vkDestroyDescriptorPool)procAddr(device, "vkDestroyDescriptorPool");
|
||||
resetDescriptorPool = (PFN_vkResetDescriptorPool)procAddr(device, "vkResetDescriptorPool");
|
||||
allocateDescriptorSets = (PFN_vkAllocateDescriptorSets)procAddr(device, "vkAllocateDescriptorSets");
|
||||
freeDescriptorSets = (PFN_vkFreeDescriptorSets)procAddr(device, "vkFreeDescriptorSets");
|
||||
updateDescriptorSets = (PFN_vkUpdateDescriptorSets)procAddr(device, "vkUpdateDescriptorSets");
|
||||
createFramebuffer = (PFN_vkCreateFramebuffer)procAddr(device, "vkCreateFramebuffer");
|
||||
destroyFramebuffer = (PFN_vkDestroyFramebuffer)procAddr(device, "vkDestroyFramebuffer");
|
||||
createRenderPass = (PFN_vkCreateRenderPass)procAddr(device, "vkCreateRenderPass");
|
||||
destroyRenderPass = (PFN_vkDestroyRenderPass)procAddr(device, "vkDestroyRenderPass");
|
||||
getRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)procAddr(device, "vkGetRenderAreaGranularity");
|
||||
createCommandPool = (PFN_vkCreateCommandPool)procAddr(device, "vkCreateCommandPool");
|
||||
destroyCommandPool = (PFN_vkDestroyCommandPool)procAddr(device, "vkDestroyCommandPool");
|
||||
resetCommandPool = (PFN_vkResetCommandPool)procAddr(device, "vkResetCommandPool");
|
||||
allocateCommandBuffers = (PFN_vkAllocateCommandBuffers)procAddr(device, "vkAllocateCommandBuffers");
|
||||
freeCommandBuffers = (PFN_vkFreeCommandBuffers)procAddr(device, "vkFreeCommandBuffers");
|
||||
createSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)procAddr(device, "vkCreateSharedSwapchainsKHR");
|
||||
createSwapchainKHR = (PFN_vkCreateSwapchainKHR)procAddr(device, "vkCreateSwapchainKHR");
|
||||
destroySwapchainKHR = (PFN_vkDestroySwapchainKHR)procAddr(device, "vkDestroySwapchainKHR");
|
||||
getSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)procAddr(device, "vkGetSwapchainImagesKHR");
|
||||
acquireNextImageKHR = (PFN_vkAcquireNextImageKHR)procAddr(device, "vkAcquireNextImageKHR");
|
||||
debugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)procAddr(device, "vkDebugMarkerSetObjectNameEXT");
|
||||
debugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)procAddr(device, "vkDebugMarkerSetObjectTagEXT");
|
||||
getMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)procAddr(device, "vkGetMemoryWin32HandleNV");
|
||||
getGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)procAddr(device, "vkGetGeneratedCommandsMemoryRequirementsNV");
|
||||
createIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)procAddr(device, "vkCreateIndirectCommandsLayoutNV");
|
||||
destroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)procAddr(device, "vkDestroyIndirectCommandsLayoutNV");
|
||||
trimCommandPool = (PFN_vkTrimCommandPool)procAddr(device, "vkTrimCommandPool");
|
||||
getMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)procAddr(device, "vkGetMemoryWin32HandleKHR");
|
||||
getMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)procAddr(device, "vkGetMemoryWin32HandlePropertiesKHR");
|
||||
getMemoryFdKHR = (PFN_vkGetMemoryFdKHR)procAddr(device, "vkGetMemoryFdKHR");
|
||||
getMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)procAddr(device, "vkGetMemoryFdPropertiesKHR");
|
||||
getMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)procAddr(device, "vkGetMemoryZirconHandleFUCHSIA");
|
||||
getMemoryZirconHandlePropertiesFUCHSIA = (PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)procAddr(device, "vkGetMemoryZirconHandlePropertiesFUCHSIA");
|
||||
getSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)procAddr(device, "vkGetSemaphoreWin32HandleKHR");
|
||||
importSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)procAddr(device, "vkImportSemaphoreWin32HandleKHR");
|
||||
getSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)procAddr(device, "vkGetSemaphoreFdKHR");
|
||||
importSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)procAddr(device, "vkImportSemaphoreFdKHR");
|
||||
getSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)procAddr(device, "vkGetSemaphoreZirconHandleFUCHSIA");
|
||||
importSemaphoreZirconHandleFUCHSIA = (PFN_vkImportSemaphoreZirconHandleFUCHSIA)procAddr(device, "vkImportSemaphoreZirconHandleFUCHSIA");
|
||||
getFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)procAddr(device, "vkGetFenceWin32HandleKHR");
|
||||
importFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)procAddr(device, "vkImportFenceWin32HandleKHR");
|
||||
getFenceFdKHR = (PFN_vkGetFenceFdKHR)procAddr(device, "vkGetFenceFdKHR");
|
||||
importFenceFdKHR = (PFN_vkImportFenceFdKHR)procAddr(device, "vkImportFenceFdKHR");
|
||||
displayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)procAddr(device, "vkDisplayPowerControlEXT");
|
||||
registerDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)procAddr(device, "vkRegisterDeviceEventEXT");
|
||||
registerDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)procAddr(device, "vkRegisterDisplayEventEXT");
|
||||
getSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)procAddr(device, "vkGetSwapchainCounterEXT");
|
||||
getDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)procAddr(device, "vkGetDeviceGroupPeerMemoryFeatures");
|
||||
bindBufferMemory2 = (PFN_vkBindBufferMemory2)procAddr(device, "vkBindBufferMemory2");
|
||||
bindImageMemory2 = (PFN_vkBindImageMemory2)procAddr(device, "vkBindImageMemory2");
|
||||
getDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)procAddr(device, "vkGetDeviceGroupPresentCapabilitiesKHR");
|
||||
getDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)procAddr(device, "vkGetDeviceGroupSurfacePresentModesKHR");
|
||||
acquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)procAddr(device, "vkAcquireNextImage2KHR");
|
||||
createDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)procAddr(device, "vkCreateDescriptorUpdateTemplate");
|
||||
destroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)procAddr(device, "vkDestroyDescriptorUpdateTemplate");
|
||||
updateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)procAddr(device, "vkUpdateDescriptorSetWithTemplate");
|
||||
setHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)procAddr(device, "vkSetHdrMetadataEXT");
|
||||
getSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)procAddr(device, "vkGetSwapchainStatusKHR");
|
||||
getRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)procAddr(device, "vkGetRefreshCycleDurationGOOGLE");
|
||||
getPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)procAddr(device, "vkGetPastPresentationTimingGOOGLE");
|
||||
getBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)procAddr(device, "vkGetBufferMemoryRequirements2");
|
||||
getImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)procAddr(device, "vkGetImageMemoryRequirements2");
|
||||
getImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)procAddr(device, "vkGetImageSparseMemoryRequirements2");
|
||||
createSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)procAddr(device, "vkCreateSamplerYcbcrConversion");
|
||||
destroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)procAddr(device, "vkDestroySamplerYcbcrConversion");
|
||||
getDeviceQueue2 = (PFN_vkGetDeviceQueue2)procAddr(device, "vkGetDeviceQueue2");
|
||||
createValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)procAddr(device, "vkCreateValidationCacheEXT");
|
||||
destroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)procAddr(device, "vkDestroyValidationCacheEXT");
|
||||
getValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)procAddr(device, "vkGetValidationCacheDataEXT");
|
||||
mergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)procAddr(device, "vkMergeValidationCachesEXT");
|
||||
getDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)procAddr(device, "vkGetDescriptorSetLayoutSupport");
|
||||
getSwapchainGrallocUsageANDROID = (PFN_vkGetSwapchainGrallocUsageANDROID)procAddr(device, "vkGetSwapchainGrallocUsageANDROID");
|
||||
getSwapchainGrallocUsage2ANDROID = (PFN_vkGetSwapchainGrallocUsage2ANDROID)procAddr(device, "vkGetSwapchainGrallocUsage2ANDROID");
|
||||
acquireImageANDROID = (PFN_vkAcquireImageANDROID)procAddr(device, "vkAcquireImageANDROID");
|
||||
getShaderInfoAMD = (PFN_vkGetShaderInfoAMD)procAddr(device, "vkGetShaderInfoAMD");
|
||||
setLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)procAddr(device, "vkSetLocalDimmingAMD");
|
||||
getCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)procAddr(device, "vkGetCalibratedTimestampsEXT");
|
||||
setDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)procAddr(device, "vkSetDebugUtilsObjectNameEXT");
|
||||
setDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)procAddr(device, "vkSetDebugUtilsObjectTagEXT");
|
||||
getMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)procAddr(device, "vkGetMemoryHostPointerPropertiesEXT");
|
||||
createRenderPass2 = (PFN_vkCreateRenderPass2)procAddr(device, "vkCreateRenderPass2");
|
||||
getSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)procAddr(device, "vkGetSemaphoreCounterValue");
|
||||
waitSemaphores = (PFN_vkWaitSemaphores)procAddr(device, "vkWaitSemaphores");
|
||||
signalSemaphore = (PFN_vkSignalSemaphore)procAddr(device, "vkSignalSemaphore");
|
||||
getAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)procAddr(device, "vkGetAndroidHardwareBufferPropertiesANDROID");
|
||||
getMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)procAddr(device, "vkGetMemoryAndroidHardwareBufferANDROID");
|
||||
compileDeferredNV = (PFN_vkCompileDeferredNV)procAddr(device, "vkCompileDeferredNV");
|
||||
createAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)procAddr(device, "vkCreateAccelerationStructureNV");
|
||||
destroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)procAddr(device, "vkDestroyAccelerationStructureKHR");
|
||||
destroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)procAddr(device, "vkDestroyAccelerationStructureNV");
|
||||
getAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)procAddr(device, "vkGetAccelerationStructureMemoryRequirementsNV");
|
||||
bindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)procAddr(device, "vkBindAccelerationStructureMemoryNV");
|
||||
copyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)procAddr(device, "vkCopyAccelerationStructureKHR");
|
||||
copyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)procAddr(device, "vkCopyAccelerationStructureToMemoryKHR");
|
||||
copyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)procAddr(device, "vkCopyMemoryToAccelerationStructureKHR");
|
||||
writeAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)procAddr(device, "vkWriteAccelerationStructuresPropertiesKHR");
|
||||
getRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)procAddr(device, "vkGetRayTracingShaderGroupHandlesKHR");
|
||||
getRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)procAddr(device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
|
||||
getAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)procAddr(device, "vkGetAccelerationStructureHandleNV");
|
||||
createRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)procAddr(device, "vkCreateRayTracingPipelinesNV");
|
||||
createRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)procAddr(device, "vkCreateRayTracingPipelinesKHR");
|
||||
getDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)procAddr(device, "vkGetDeviceAccelerationStructureCompatibilityKHR");
|
||||
getRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)procAddr(device, "vkGetRayTracingShaderGroupStackSizeKHR");
|
||||
getImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)procAddr(device, "vkGetImageViewHandleNVX");
|
||||
getImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)procAddr(device, "vkGetImageViewAddressNVX");
|
||||
getDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)procAddr(device, "vkGetDeviceGroupSurfacePresentModes2EXT");
|
||||
acquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)procAddr(device, "vkAcquireFullScreenExclusiveModeEXT");
|
||||
releaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)procAddr(device, "vkReleaseFullScreenExclusiveModeEXT");
|
||||
acquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)procAddr(device, "vkAcquireProfilingLockKHR");
|
||||
getImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)procAddr(device, "vkGetImageDrmFormatModifierPropertiesEXT");
|
||||
getBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)procAddr(device, "vkGetBufferOpaqueCaptureAddress");
|
||||
getBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)procAddr(device, "vkGetBufferDeviceAddress");
|
||||
initializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)procAddr(device, "vkInitializePerformanceApiINTEL");
|
||||
acquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)procAddr(device, "vkAcquirePerformanceConfigurationINTEL");
|
||||
releasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)procAddr(device, "vkReleasePerformanceConfigurationINTEL");
|
||||
getPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)procAddr(device, "vkGetPerformanceParameterINTEL");
|
||||
getDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)procAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddress");
|
||||
getPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)procAddr(device, "vkGetPipelineExecutablePropertiesKHR");
|
||||
getPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)procAddr(device, "vkGetPipelineExecutableStatisticsKHR");
|
||||
getPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)procAddr(device, "vkGetPipelineExecutableInternalRepresentationsKHR");
|
||||
createAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)procAddr(device, "vkCreateAccelerationStructureKHR");
|
||||
buildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)procAddr(device, "vkBuildAccelerationStructuresKHR");
|
||||
getAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)procAddr(device, "vkGetAccelerationStructureDeviceAddressKHR");
|
||||
createDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)procAddr(device, "vkCreateDeferredOperationKHR");
|
||||
destroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)procAddr(device, "vkDestroyDeferredOperationKHR");
|
||||
getDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)procAddr(device, "vkGetDeferredOperationMaxConcurrencyKHR");
|
||||
getDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)procAddr(device, "vkGetDeferredOperationResultKHR");
|
||||
deferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)procAddr(device, "vkDeferredOperationJoinKHR");
|
||||
createPrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)procAddr(device, "vkCreatePrivateDataSlotEXT");
|
||||
destroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)procAddr(device, "vkDestroyPrivateDataSlotEXT");
|
||||
setPrivateDataEXT = (PFN_vkSetPrivateDataEXT)procAddr(device, "vkSetPrivateDataEXT");
|
||||
getPrivateDataEXT = (PFN_vkGetPrivateDataEXT)procAddr(device, "vkGetPrivateDataEXT");
|
||||
getAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)procAddr(device, "vkGetAccelerationStructureBuildSizesKHR");
|
||||
createVideoSessionKHR = (PFN_vkCreateVideoSessionKHR)procAddr(device, "vkCreateVideoSessionKHR");
|
||||
destroyVideoSessionKHR = (PFN_vkDestroyVideoSessionKHR)procAddr(device, "vkDestroyVideoSessionKHR");
|
||||
createVideoSessionParametersKHR = (PFN_vkCreateVideoSessionParametersKHR)procAddr(device, "vkCreateVideoSessionParametersKHR");
|
||||
updateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)procAddr(device, "vkUpdateVideoSessionParametersKHR");
|
||||
destroyVideoSessionParametersKHR = (PFN_vkDestroyVideoSessionParametersKHR)procAddr(device, "vkDestroyVideoSessionParametersKHR");
|
||||
getVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)procAddr(device, "vkGetVideoSessionMemoryRequirementsKHR");
|
||||
bindVideoSessionMemoryKHR = (PFN_vkBindVideoSessionMemoryKHR)procAddr(device, "vkBindVideoSessionMemoryKHR");
|
||||
}
|
||||
PFN_vkGetDeviceQueue getDeviceQueue = nullptr;
|
||||
PFN_vkAllocateMemory allocateMemory = nullptr;
|
||||
PFN_vkFreeMemory freeMemory = nullptr;
|
||||
|
Loading…
Reference in New Issue
Block a user