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
|
#https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/registry/vk.xml
|
||||||
|
|
||||||
import urllib.request
|
#exclusions
|
||||||
import xmltodict
|
exclusions = [
|
||||||
|
'vkGetDeviceProcAddr',
|
||||||
with urllib.request.urlopen('https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/registry/vk.xml') as response:
|
'vkCreateDevice',
|
||||||
vk_xml_raw = response.read()
|
'vkDestroyDevice'
|
||||||
|
]
|
||||||
vk_xml = xmltodict.parse(vk_xml_raw,process_namespaces=True)
|
|
||||||
|
|
||||||
commands = vk_xml['registry']['commands']['command']
|
|
||||||
|
|
||||||
device_commands = [];
|
|
||||||
device_aliases = {};
|
|
||||||
|
|
||||||
|
#formatting functions
|
||||||
def format_header_top(header: str):
|
def format_header_top(header: str):
|
||||||
header += '\n#pragma once\n\n#include <vulkan/vulkan.h>\n\n'
|
header += '\n#pragma once\n\n#include <vulkan/vulkan.h>\n\n'
|
||||||
header += 'namespace vkb {\n\n'
|
header += 'namespace vkb {\n\n'
|
||||||
header += 'struct DispatchTable {\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;
|
return header;
|
||||||
|
|
||||||
def format_header_bottom(header: str):
|
def format_header_bottom(header: str):
|
||||||
@ -33,28 +34,66 @@ def format_declaration(header: str, name):
|
|||||||
header = format_declaration(header, device_aliases[name])
|
header = format_declaration(header, device_aliases[name])
|
||||||
return header;
|
return header;
|
||||||
|
|
||||||
for command in commands:
|
def format_load(header: str, name):
|
||||||
keys = command.keys()
|
fptr_name = 'PFN_' + name
|
||||||
if 'proto' in keys and 'param' in keys:
|
member_name = name[2].lower() + name[3:]
|
||||||
type_device = False;
|
header += '\t\t' + member_name + ' = (' + fptr_name + ')procAddr(device, "' + name + '");\n'
|
||||||
for p in command['param']:
|
return header;
|
||||||
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'];
|
|
||||||
|
|
||||||
header = ''
|
#install xmltodict
|
||||||
header = format_header_top(header)
|
import sys
|
||||||
for command in device_commands:
|
import subprocess
|
||||||
header = format_declaration(header, command);
|
import json
|
||||||
header = format_header_bottom(header)
|
|
||||||
|
|
||||||
header_file = open("../src/VkDispatchTable.h", "w")
|
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'xmltodict'])
|
||||||
header_file.write(header)
|
|
||||||
header_file.close();
|
#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_vkGetPhysicalDeviceFormatProperties2 fp_vkGetPhysicalDeviceFormatProperties2 = nullptr;
|
||||||
PFN_vkGetPhysicalDeviceMemoryProperties2 fp_vkGetPhysicalDeviceMemoryProperties2 = nullptr;
|
PFN_vkGetPhysicalDeviceMemoryProperties2 fp_vkGetPhysicalDeviceMemoryProperties2 = nullptr;
|
||||||
|
|
||||||
|
PFN_vkGetDeviceProcAddr fp_vkGetDeviceProcAddr = nullptr;
|
||||||
PFN_vkCreateDevice fp_vkCreateDevice = nullptr;
|
PFN_vkCreateDevice fp_vkCreateDevice = nullptr;
|
||||||
PFN_vkDestroyDevice fp_vkDestroyDevice = nullptr;
|
PFN_vkDestroyDevice fp_vkDestroyDevice = nullptr;
|
||||||
PFN_vkEnumerateDeviceExtensionProperties fp_vkEnumerateDeviceExtensionProperties = nullptr;
|
PFN_vkEnumerateDeviceExtensionProperties fp_vkEnumerateDeviceExtensionProperties = nullptr;
|
||||||
@ -189,6 +190,7 @@ class VulkanFunctions {
|
|||||||
get_proc_addr(fp_vkGetPhysicalDeviceFormatProperties2, "vkGetPhysicalDeviceFormatProperties2");
|
get_proc_addr(fp_vkGetPhysicalDeviceFormatProperties2, "vkGetPhysicalDeviceFormatProperties2");
|
||||||
get_proc_addr(fp_vkGetPhysicalDeviceMemoryProperties2, "vkGetPhysicalDeviceMemoryProperties2");
|
get_proc_addr(fp_vkGetPhysicalDeviceMemoryProperties2, "vkGetPhysicalDeviceMemoryProperties2");
|
||||||
|
|
||||||
|
get_proc_addr(fp_vkGetDeviceProcAddr, "vkGetDeviceProcAddr");
|
||||||
get_proc_addr(fp_vkCreateDevice, "vkCreateDevice");
|
get_proc_addr(fp_vkCreateDevice, "vkCreateDevice");
|
||||||
get_proc_addr(fp_vkDestroyDevice, "vkDestroyDevice");
|
get_proc_addr(fp_vkDestroyDevice, "vkDestroyDevice");
|
||||||
get_proc_addr(fp_vkEnumerateDeviceExtensionProperties, "vkEnumerateDeviceExtensionProperties");
|
get_proc_addr(fp_vkEnumerateDeviceExtensionProperties, "vkEnumerateDeviceExtensionProperties");
|
||||||
@ -738,6 +740,7 @@ detail::Result<Instance> InstanceBuilder::build() const {
|
|||||||
instance.allocation_callbacks = info.allocation_callbacks;
|
instance.allocation_callbacks = info.allocation_callbacks;
|
||||||
instance.instance_version = api_version;
|
instance.instance_version = api_version;
|
||||||
instance.fp_vkGetInstanceProcAddr = detail::vulkan_functions().ptr_vkGetInstanceProcAddr;
|
instance.fp_vkGetInstanceProcAddr = detail::vulkan_functions().ptr_vkGetInstanceProcAddr;
|
||||||
|
instance.fp_vkGetDeviceProcAddr = detail::vulkan_functions().fp_vkGetDeviceProcAddr;
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1305,6 +1308,12 @@ std::vector<VkQueueFamilyProperties> PhysicalDevice::get_queue_families() const
|
|||||||
return queue_families;
|
return queue_families;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- DispatchTable --- //
|
||||||
|
|
||||||
|
DispatchTable Device::get_dispatch_table() {
|
||||||
|
return DispatchTable(device, detail::vulkan_functions().fp_vkGetDeviceProcAddr);
|
||||||
|
}
|
||||||
|
|
||||||
// ---- Queues ---- //
|
// ---- Queues ---- //
|
||||||
|
|
||||||
detail::Result<uint32_t> Device::get_queue_index(QueueType type) const {
|
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.surface = physical_device.surface;
|
||||||
device.queue_families = physical_device.queue_families;
|
device.queue_families = physical_device.queue_families;
|
||||||
device.allocation_callbacks = info.allocation_callbacks;
|
device.allocation_callbacks = info.allocation_callbacks;
|
||||||
|
device.fp_vkGetDeviceProcAddr =
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
DeviceBuilder& DeviceBuilder::custom_queue_setup(std::vector<CustomQueueDescription> queue_descriptions) {
|
DeviceBuilder& DeviceBuilder::custom_queue_setup(std::vector<CustomQueueDescription> queue_descriptions) {
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include <vulkan/vulkan.h>
|
#include <vulkan/vulkan.h>
|
||||||
|
|
||||||
|
#include "VkDispatchTable.h"
|
||||||
|
|
||||||
namespace vkb {
|
namespace vkb {
|
||||||
|
|
||||||
@ -215,6 +216,7 @@ struct Instance {
|
|||||||
VkAllocationCallbacks* allocation_callbacks = VK_NULL_HANDLE;
|
VkAllocationCallbacks* allocation_callbacks = VK_NULL_HANDLE;
|
||||||
|
|
||||||
PFN_vkGetInstanceProcAddr fp_vkGetInstanceProcAddr = nullptr;
|
PFN_vkGetInstanceProcAddr fp_vkGetInstanceProcAddr = nullptr;
|
||||||
|
PFN_vkGetDeviceProcAddr fp_vkGetDeviceProcAddr = nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool headless = false;
|
bool headless = false;
|
||||||
@ -541,6 +543,9 @@ struct Device {
|
|||||||
VkSurfaceKHR surface = VK_NULL_HANDLE;
|
VkSurfaceKHR surface = VK_NULL_HANDLE;
|
||||||
std::vector<VkQueueFamilyProperties> queue_families;
|
std::vector<VkQueueFamilyProperties> queue_families;
|
||||||
VkAllocationCallbacks* allocation_callbacks = VK_NULL_HANDLE;
|
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;
|
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
|
// 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 {
|
namespace vkb {
|
||||||
|
|
||||||
struct DispatchTable {
|
struct DispatchTable {
|
||||||
PFN_vkCreateDevice createDevice = nullptr;
|
DispatchTable() = default;
|
||||||
PFN_vkDestroyDevice destroyDevice = nullptr;
|
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_vkGetDeviceQueue getDeviceQueue = nullptr;
|
||||||
PFN_vkAllocateMemory allocateMemory = nullptr;
|
PFN_vkAllocateMemory allocateMemory = nullptr;
|
||||||
PFN_vkFreeMemory freeMemory = nullptr;
|
PFN_vkFreeMemory freeMemory = nullptr;
|
||||||
|
Loading…
Reference in New Issue
Block a user