Add basic support for VK_KHR_external_semaphore{,_capabilities}.
Also a non-functional base for future extensions. We can't implement it anyway until all remaining bugs in `MTLEvent`-based semaphores are fixed. This is the last of the extensions that was promoted to core for Vulkan 1.1. We're almost there!
This commit is contained in:
parent
697e8627cf
commit
09bcd534d9
@ -23,6 +23,10 @@ Released TBD
|
|||||||
including support for GCD and Mach semaphores)
|
including support for GCD and Mach semaphores)
|
||||||
- `VK_KHR_external_fence_capabilities` (non-functional groundwork for future
|
- `VK_KHR_external_fence_capabilities` (non-functional groundwork for future
|
||||||
extensions, including support for GCD and Mach semaphores)
|
extensions, including support for GCD and Mach semaphores)
|
||||||
|
- `VK_KHR_external_semaphore` (non-functional groundwork for future
|
||||||
|
`MTLSharedEvent` Vulkan extension)
|
||||||
|
- `VK_KHR_external_semaphore_capabilities` (non-functional groundwork for
|
||||||
|
future `MTLSharedEvent` Vulkan extension)
|
||||||
- `VK_KHR_multiview`
|
- `VK_KHR_multiview`
|
||||||
- Improve performance of tessellation control pipeline stage by processing multiple
|
- Improve performance of tessellation control pipeline stage by processing multiple
|
||||||
patches per workgroup.
|
patches per workgroup.
|
||||||
|
@ -141,6 +141,10 @@ public:
|
|||||||
void getExternalFenceProperties(const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
|
void getExternalFenceProperties(const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
|
||||||
VkExternalFenceProperties* pExternalFenceProperties);
|
VkExternalFenceProperties* pExternalFenceProperties);
|
||||||
|
|
||||||
|
/** Populates the external semaphore properties supported on this device. */
|
||||||
|
void getExternalSemaphoreProperties(const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
|
||||||
|
VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
|
||||||
|
|
||||||
#pragma mark Surfaces
|
#pragma mark Surfaces
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -603,6 +603,15 @@ void MVKPhysicalDevice::getExternalFenceProperties(const VkPhysicalDeviceExterna
|
|||||||
pExternalFenceProperties->pNext = next;
|
pExternalFenceProperties->pNext = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const VkExternalSemaphoreProperties _emptyExtSemProps = {VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, nullptr, 0, 0, 0};
|
||||||
|
|
||||||
|
void MVKPhysicalDevice::getExternalSemaphoreProperties(const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
|
||||||
|
VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
|
||||||
|
void* next = pExternalSemaphoreProperties->pNext;
|
||||||
|
*pExternalSemaphoreProperties = _emptyExtSemProps;
|
||||||
|
pExternalSemaphoreProperties->pNext = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark Surfaces
|
#pragma mark Surfaces
|
||||||
|
|
||||||
|
@ -559,6 +559,7 @@ void MVKInstance::initProcAddrs() {
|
|||||||
ADD_INST_EXT_ENTRY_POINT(vkEnumeratePhysicalDeviceGroupsKHR, KHR_DEVICE_GROUP_CREATION);
|
ADD_INST_EXT_ENTRY_POINT(vkEnumeratePhysicalDeviceGroupsKHR, KHR_DEVICE_GROUP_CREATION);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalFencePropertiesKHR, KHR_EXTERNAL_FENCE_CAPABILITIES);
|
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalFencePropertiesKHR, KHR_EXTERNAL_FENCE_CAPABILITIES);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalBufferPropertiesKHR, KHR_EXTERNAL_MEMORY_CAPABILITIES);
|
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalBufferPropertiesKHR, KHR_EXTERNAL_MEMORY_CAPABILITIES);
|
||||||
|
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, KHR_EXTERNAL_SEMAPHORE_CAPABILITIES);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceFeatures2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
|
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceFeatures2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
|
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
|
||||||
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceFormatProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
|
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceFormatProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
|
||||||
|
@ -51,6 +51,8 @@ MVK_EXTENSION(KHR_external_fence, KHR_EXTERNAL_FENCE, DEVICE)
|
|||||||
MVK_EXTENSION(KHR_external_fence_capabilities, KHR_EXTERNAL_FENCE_CAPABILITIES, INSTANCE)
|
MVK_EXTENSION(KHR_external_fence_capabilities, KHR_EXTERNAL_FENCE_CAPABILITIES, INSTANCE)
|
||||||
MVK_EXTENSION(KHR_external_memory, KHR_EXTERNAL_MEMORY, DEVICE)
|
MVK_EXTENSION(KHR_external_memory, KHR_EXTERNAL_MEMORY, DEVICE)
|
||||||
MVK_EXTENSION(KHR_external_memory_capabilities, KHR_EXTERNAL_MEMORY_CAPABILITIES, INSTANCE)
|
MVK_EXTENSION(KHR_external_memory_capabilities, KHR_EXTERNAL_MEMORY_CAPABILITIES, INSTANCE)
|
||||||
|
MVK_EXTENSION(KHR_external_semaphore, KHR_EXTERNAL_SEMAPHORE, DEVICE)
|
||||||
|
MVK_EXTENSION(KHR_external_semaphore_capabilities, KHR_EXTERNAL_SEMAPHORE_CAPABILITIES, INSTANCE)
|
||||||
MVK_EXTENSION(KHR_get_memory_requirements2, KHR_GET_MEMORY_REQUIREMENTS_2, DEVICE)
|
MVK_EXTENSION(KHR_get_memory_requirements2, KHR_GET_MEMORY_REQUIREMENTS_2, DEVICE)
|
||||||
MVK_EXTENSION(KHR_get_physical_device_properties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2, INSTANCE)
|
MVK_EXTENSION(KHR_get_physical_device_properties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2, INSTANCE)
|
||||||
MVK_EXTENSION(KHR_get_surface_capabilities2, KHR_GET_SURFACE_CAPABILITIES_2, INSTANCE)
|
MVK_EXTENSION(KHR_get_surface_capabilities2, KHR_GET_SURFACE_CAPABILITIES_2, INSTANCE)
|
||||||
|
@ -2063,6 +2063,21 @@ MVK_PUBLIC_SYMBOL void vkGetPhysicalDeviceExternalBufferPropertiesKHR(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark VK_KHR_external_semaphore_capabilities extension
|
||||||
|
|
||||||
|
MVK_PUBLIC_SYMBOL void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
|
||||||
|
VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
|
||||||
|
|
||||||
|
MVKTraceVulkanCallStart();
|
||||||
|
MVKPhysicalDevice* mvkPD = MVKPhysicalDevice::getMVKPhysicalDevice(physicalDevice);
|
||||||
|
mvkPD->getExternalSemaphoreProperties(pExternalSemaphoreInfo, pExternalSemaphoreProperties);
|
||||||
|
MVKTraceVulkanCallEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark VK_KHR_get_memory_requirements2 extension
|
#pragma mark VK_KHR_get_memory_requirements2 extension
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user