aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp409
1 files changed, 0 insertions, 409 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 74df2e6d2..f4a1d0880 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -5915,174 +5915,6 @@ bool CoreChecks::PreCallValidateSignalSemaphoreKHR(VkDevice device, const VkSema
return ValidateSignalSemaphore(device, pSignalInfo, "vkSignalSemaphoreKHR");
}
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-bool CoreChecks::PreCallValidateImportSemaphoreWin32HandleKHR(VkDevice device,
- const VkImportSemaphoreWin32HandleInfoKHR *info) const {
- bool skip = false;
- const char *func_name = "vkImportSemaphoreWin32HandleKHR";
- auto sem_state = Get<SEMAPHORE_STATE>(info->semaphore);
- if (sem_state) {
- skip |= ValidateObjectNotInUse(sem_state.get(), func_name, kVUIDUndefined);
-
- if ((info->flags & VK_SEMAPHORE_IMPORT_TEMPORARY_BIT) != 0 && sem_state->type == VK_SEMAPHORE_TYPE_TIMELINE) {
- skip |= LogError(
- sem_state->Handle(), "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322",
- "vkImportSemaphoreWin32HandleKHR(): VK_SEMAPHORE_IMPORT_TEMPORARY_BIT not allowed for timeline semaphores");
- }
- }
- return skip;
-}
-
-bool CoreChecks::PreCallValidateGetSemaphoreWin32HandleKHR(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR *info,
- HANDLE *pHandle) const {
- bool skip = false;
- const char *func_name = "vkGetSemaphoreWin32HandleKHR";
- auto sem_state = Get<SEMAPHORE_STATE>(info->semaphore);
- if (sem_state) {
- if ((info->handleType & sem_state->exportHandleTypes) == 0) {
- skip |= LogError(sem_state->Handle(), "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
- "%s: handleType %s was not VkExportSemaphoreCreateInfo::handleTypes (%s)", func_name,
- string_VkExternalSemaphoreHandleTypeFlagBits(info->handleType),
- string_VkExternalSemaphoreHandleTypeFlags(sem_state->exportHandleTypes).c_str());
- }
- }
- return skip;
-}
-#endif // VK_USE_PLATFORM_WIN32_KHR
-
-bool CoreChecks::PreCallValidateImportSemaphoreFdKHR(VkDevice device, const VkImportSemaphoreFdInfoKHR *info) const {
- bool skip = false;
- const char *func_name = "vkImportSemaphoreFdKHR";
- auto sem_state = Get<SEMAPHORE_STATE>(info->semaphore);
- if (sem_state) {
- skip |= ValidateObjectNotInUse(sem_state.get(), func_name, kVUIDUndefined);
-
- if ((info->flags & VK_SEMAPHORE_IMPORT_TEMPORARY_BIT) != 0 && sem_state->type == VK_SEMAPHORE_TYPE_TIMELINE) {
- skip |= LogError(sem_state->Handle(), "VUID-VkImportSemaphoreFdInfoKHR-flags-03323",
- "%s(): VK_SEMAPHORE_IMPORT_TEMPORARY_BIT not allowed for timeline semaphores", func_name);
- }
- }
- return skip;
-}
-
-bool CoreChecks::PreCallValidateGetSemaphoreFdKHR(VkDevice device, const VkSemaphoreGetFdInfoKHR *info, int *pFd) const {
- bool skip = false;
- const char *func_name = "vkGetSemaphoreFdKHR";
- auto sem_state = Get<SEMAPHORE_STATE>(info->semaphore);
- if (sem_state) {
- if ((info->handleType & sem_state->exportHandleTypes) == 0) {
- skip |= LogError(sem_state->Handle(), "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
- "%s(): handleType %s was not VkExportSemaphoreCreateInfo::handleTypes (%s)", func_name,
- string_VkExternalSemaphoreHandleTypeFlagBits(info->handleType),
- string_VkExternalSemaphoreHandleTypeFlags(sem_state->exportHandleTypes).c_str());
- }
-
- if (info->handleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT) {
- if (sem_state->type != VK_SEMAPHORE_TYPE_BINARY) {
- skip |= LogError(sem_state->Handle(), "VUID-VkSemaphoreGetFdInfoKHR-handleType-03253",
- "%s(): can only export binary semaphores to %s", func_name,
- string_VkExternalSemaphoreHandleTypeFlagBits(info->handleType));
- }
- if (!sem_state->CanBeWaited()) {
- skip |= LogError(sem_state->Handle(), "VUID-VkSemaphoreGetFdInfoKHR-handleType-03254",
- "%s(): must be signaled or have a pending signal operation", func_name);
- }
- }
- }
- return skip;
-}
-
-#ifdef VK_USE_PLATFORM_FUCHSIA
-bool CoreChecks::PreCallValidateImportSemaphoreZirconHandleFUCHSIA(VkDevice device,
- const VkImportSemaphoreZirconHandleInfoFUCHSIA *info) const {
- bool skip = false;
- const char *func_name = "vkImportSemaphoreZirconHandleFUCHSIA";
- auto sem_state = Get<SEMAPHORE_STATE>(info->semaphore);
- if (sem_state) {
- skip |= ValidateObjectNotInUse(sem_state.get(), func_name, kVUIDUndefined);
-
- if (sem_state->type == VK_SEMAPHORE_TYPE_TIMELINE) {
- skip |=
- LogError(sem_state->Handle(), "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphoreType-04768",
- "%s(): VkSemaphoreTypeCreateInfo::semaphoreType field must not be VK_SEMAPHORE_TYPE_TIMELINE", func_name);
- }
- }
- return skip;
-}
-
-void CoreChecks::PostCallRecordImportSemaphoreZirconHandleFUCHSIA(
- VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA *pImportSemaphoreZirconHandleInfo, VkResult result) {
- if (VK_SUCCESS != result) return;
- RecordImportSemaphoreState(pImportSemaphoreZirconHandleInfo->semaphore, pImportSemaphoreZirconHandleInfo->handleType,
- pImportSemaphoreZirconHandleInfo->flags);
-}
-
-void CoreChecks::PostCallRecordGetSemaphoreZirconHandleFUCHSIA(VkDevice device,
- const VkSemaphoreGetZirconHandleInfoFUCHSIA *pGetZirconHandleInfo,
- zx_handle_t *pZirconHandle, VkResult result) {
- if (VK_SUCCESS != result) return;
- RecordGetExternalSemaphoreState(pGetZirconHandleInfo->semaphore, pGetZirconHandleInfo->handleType);
-}
-#endif
-
-bool CoreChecks::ValidateImportFence(VkFence fence, const char *vuid, const char *caller_name) const {
- auto fence_node = Get<FENCE_STATE>(fence);
- bool skip = false;
- if (fence_node && fence_node->Scope() == kSyncScopeInternal && fence_node->State() == FENCE_INFLIGHT) {
- skip |=
- LogError(fence, vuid, "%s: Fence %s that is currently in use.", caller_name, report_data->FormatHandle(fence).c_str());
- }
- return skip;
-}
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-bool CoreChecks::PreCallValidateImportFenceWin32HandleKHR(
- VkDevice device, const VkImportFenceWin32HandleInfoKHR *pImportFenceWin32HandleInfo) const {
- return ValidateImportFence(pImportFenceWin32HandleInfo->fence, "VUID-vkImportFenceWin32HandleKHR-fence-04448",
- "vkImportFenceWin32HandleKHR");
-}
-
-bool CoreChecks::PreCallValidateGetFenceWin32HandleKHR(VkDevice device, const VkFenceGetWin32HandleInfoKHR *info,
- HANDLE *pHandle) const {
- bool skip = false;
- const char *func_name = "vkGetFenceWin32HandleKHR";
- auto fence_state = Get<FENCE_STATE>(info->fence);
- if (fence_state) {
- if ((info->handleType & fence_state->exportHandleTypes) == 0) {
- skip |= LogError(fence_state->Handle(), "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
- "%s: handleType %s was not VkExportFenceCreateInfo::handleTypes (%s)", func_name,
- string_VkExternalFenceHandleTypeFlagBits(info->handleType),
- string_VkExternalFenceHandleTypeFlags(fence_state->exportHandleTypes).c_str());
- }
- }
- return skip;
-}
-#endif // VK_USE_PLATFORM_WIN32_KHR
-
-bool CoreChecks::PreCallValidateImportFenceFdKHR(VkDevice device, const VkImportFenceFdInfoKHR *pImportFenceFdInfo) const {
- return ValidateImportFence(pImportFenceFdInfo->fence, "VUID-vkImportFenceFdKHR-fence-01463", "vkImportFenceFdKHR");
-}
-
-bool CoreChecks::PreCallValidateGetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR *info, int *pFd) const {
- bool skip = false;
- const char *func_name = "vkGetFenceFdKHR";
- auto fence_state = Get<FENCE_STATE>(info->fence);
- if (fence_state) {
- if ((info->handleType & fence_state->exportHandleTypes) == 0) {
- skip |= LogError(fence_state->Handle(), "VUID-VkFenceGetFdInfoKHR-handleType-01453",
- "%s: handleType %s was not VkExportFenceCreateInfo::handleTypes (%s)", func_name,
- string_VkExternalFenceHandleTypeFlagBits(info->handleType),
- string_VkExternalFenceHandleTypeFlags(fence_state->exportHandleTypes).c_str());
- }
- if (info->handleType == VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT && fence_state->State() == FENCE_UNSIGNALED) {
- skip |= LogError(fence_state->Handle(), "VUID-VkFenceGetFdInfoKHR-handleType-01454",
- "%s(): cannot export to %s unless the fence has a pending signal operation or is already signaled",
- func_name, string_VkExternalFenceHandleTypeFlagBits(info->handleType));
- }
- }
- return skip;
-}
-
bool CoreChecks::PreCallValidateCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,
const VkDebugMarkerMarkerInfoEXT *pMarkerInfo) const {
auto cb_state = GetRead<CMD_BUFFER_STATE>(commandBuffer);
@@ -6784,244 +6616,3 @@ bool CoreChecks::PreCallValidateGetImageSubresourceLayout2EXT(VkDevice device, V
return skip;
}
-
-#ifdef VK_USE_PLATFORM_METAL_EXT
-bool CoreChecks::PreCallValidateExportMetalObjectsEXT(VkDevice device, VkExportMetalObjectsInfoEXT *pMetalObjectsInfo) const {
- bool skip = false;
- const VkBaseOutStructure *metal_objects_info_ptr = reinterpret_cast<const VkBaseOutStructure *>(pMetalObjectsInfo->pNext);
- while (metal_objects_info_ptr) {
- switch (metal_objects_info_ptr->sType) {
- case VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT:
- if (std::find(instance_state->export_metal_flags.begin(), instance_state->export_metal_flags.end(),
- VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT) == instance_state->export_metal_flags.end()) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06791",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalDeviceInfoEXT structure "
- "but instance %s did not have a "
- "VkExportMetalObjectCreateInfoEXT struct with exportObjectType of "
- "VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT in the pNext chain of its VkInstanceCreateInfo structure",
- report_data->FormatHandle(instance_state->instance).c_str());
- }
- break;
-
- case VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT:
- if (std::find(instance_state->export_metal_flags.begin(), instance_state->export_metal_flags.end(),
- VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT) ==
- instance_state->export_metal_flags.end()) {
- skip |= LogError(device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06792",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalCommandQueueInfoEXT structure "
- "but instance %s did not have a "
- "VkExportMetalObjectCreateInfoEXT struct with exportObjectType of "
- "VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT in the pNext chain of its "
- "VkInstanceCreateInfo structure",
- report_data->FormatHandle(instance_state->instance).c_str());
- }
- break;
-
- case VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT: {
- auto metal_buffer_ptr = reinterpret_cast<const VkExportMetalBufferInfoEXT *>(metal_objects_info_ptr);
- auto mem_info = Get<DEVICE_MEMORY_STATE>(metal_buffer_ptr->memory);
- if (mem_info) {
- if (!mem_info->metal_buffer_export) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06793",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalBufferInfoEXT structure with memory = "
- "%s, but that memory was not allocated with a VkExportMetalObjectCreateInfoEXT whose exportObjectType "
- "member was set to VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT in the pNext chain of the "
- "VkMemoryAllocateInfo structure",
- report_data->FormatHandle(metal_buffer_ptr->memory).c_str());
- }
- }
- } break;
-
- case VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT: {
- auto metal_texture_ptr = reinterpret_cast<const VkExportMetalTextureInfoEXT *>(metal_objects_info_ptr);
- if ((metal_texture_ptr->image == VK_NULL_HANDLE && metal_texture_ptr->imageView == VK_NULL_HANDLE &&
- metal_texture_ptr->bufferView == VK_NULL_HANDLE) ||
- (metal_texture_ptr->image &&
- ((metal_texture_ptr->imageView != VK_NULL_HANDLE) || (metal_texture_ptr->bufferView != VK_NULL_HANDLE))) ||
- (metal_texture_ptr->imageView &&
- ((metal_texture_ptr->image != VK_NULL_HANDLE) || (metal_texture_ptr->bufferView != VK_NULL_HANDLE))) ||
- (metal_texture_ptr->bufferView &&
- ((metal_texture_ptr->image != VK_NULL_HANDLE) || (metal_texture_ptr->imageView != VK_NULL_HANDLE)))) {
- skip |=
- LogError(device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06794",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with image = "
- "%s, imageView = %s and bufferView = %s, but exactly one of those 3 must not be VK_NULL_HANDLE",
- report_data->FormatHandle(metal_texture_ptr->image).c_str(),
- report_data->FormatHandle(metal_texture_ptr->imageView).c_str(),
- report_data->FormatHandle(metal_texture_ptr->bufferView).c_str());
- }
- if (metal_texture_ptr->image) {
- auto image_info = Get<IMAGE_STATE>(metal_texture_ptr->image);
- if (image_info) {
- if (!image_info->metal_image_export) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06795",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with image = "
- "%s, but that image was not created with a VkExportMetalObjectCreateInfoEXT whose exportObjectType "
- "member was set to VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT in the pNext chain of the "
- "VkImageCreateInfo structure",
- report_data->FormatHandle(metal_texture_ptr->image).c_str());
- }
- auto format_plane_count = FormatPlaneCount(image_info->createInfo.format);
- auto image_plane = metal_texture_ptr->plane;
- if (!(format_plane_count > 1) && (image_plane != VK_IMAGE_ASPECT_PLANE_0_BIT)) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06799",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with image = "
- "%s, and plane = %s, but image was created with format %s, which is not multiplaner and plane is "
- "required to be VK_IMAGE_ASPECT_PLANE_0_BIT",
- report_data->FormatHandle(metal_texture_ptr->image).c_str(),
- string_VkImageAspectFlags(image_plane).c_str(), string_VkFormat(image_info->createInfo.format));
- }
- if ((format_plane_count == 2) && (image_plane == VK_IMAGE_ASPECT_PLANE_2_BIT)) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06800",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with image = "
- "%s, and plane = %s, but image was created with format %s, which has exactly 2 planes and plane "
- "cannot"
- "be VK_IMAGE_ASPECT_PLANE_2_BIT",
- report_data->FormatHandle(metal_texture_ptr->image).c_str(),
- string_VkImageAspectFlags(image_plane).c_str(), string_VkFormat(image_info->createInfo.format));
- }
- }
- }
- if (metal_texture_ptr->imageView) {
- auto image_view_info = Get<IMAGE_VIEW_STATE>(metal_texture_ptr->imageView);
- if (image_view_info) {
- if (!image_view_info->metal_imageview_export) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06796",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with "
- "imageView = "
- "%s, but that image view was not created with a VkExportMetalObjectCreateInfoEXT whose "
- "exportObjectType "
- "member was set to VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT in the pNext chain of the "
- "VkImageViewCreateInfo structure",
- report_data->FormatHandle(metal_texture_ptr->imageView).c_str());
- }
- auto format_plane_count = FormatPlaneCount(image_view_info->create_info.format);
- auto image_plane = metal_texture_ptr->plane;
- if (!(format_plane_count > 1) && (image_plane != VK_IMAGE_ASPECT_PLANE_0_BIT)) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06801",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with "
- "imageView = "
- "%s, and plane = %s, but imageView was created with format %s, which is not multiplaner and "
- "plane is "
- "required to be VK_IMAGE_ASPECT_PLANE_0_BIT",
- report_data->FormatHandle(metal_texture_ptr->imageView).c_str(),
- string_VkImageAspectFlags(image_plane).c_str(),
- string_VkFormat(image_view_info->create_info.format));
- }
- if ((format_plane_count == 2) && (image_plane == VK_IMAGE_ASPECT_PLANE_2_BIT)) {
- skip |= LogError(device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06802",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure "
- "with imageView = "
- "%s, and plane = %s, but imageView was created with format %s, which has exactly 2 "
- "planes and plane "
- "cannot"
- "be VK_IMAGE_ASPECT_PLANE_2_BIT",
- report_data->FormatHandle(metal_texture_ptr->imageView).c_str(),
- string_VkImageAspectFlags(image_plane).c_str(),
- string_VkFormat(image_view_info->create_info.format));
- }
- }
- }
- if (metal_texture_ptr->bufferView) {
- auto buffer_view_info = Get<BUFFER_VIEW_STATE>(metal_texture_ptr->bufferView);
- if (buffer_view_info) {
- if (!buffer_view_info->metal_bufferview_export) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06797",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with "
- "bufferView = "
- "%s, but that buffer view was not created with a VkExportMetalObjectCreateInfoEXT whose "
- "exportObjectType "
- "member was set to VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT in the pNext chain of the "
- "VkBufferViewCreateInfo structure",
- report_data->FormatHandle(metal_texture_ptr->bufferView).c_str());
- }
- }
- }
- if (metal_texture_ptr->image || metal_texture_ptr->imageView) {
- if ((metal_texture_ptr->plane != VK_IMAGE_ASPECT_PLANE_0_BIT) &&
- (metal_texture_ptr->plane != VK_IMAGE_ASPECT_PLANE_1_BIT) &&
- (metal_texture_ptr->plane != VK_IMAGE_ASPECT_PLANE_2_BIT)) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06798",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalTextureInfoEXT structure with "
- "image = %s and imageView = "
- "%s, but plane = %s which is not one of VK_IMAGE_ASPECT_PLANE_0_BIT, VK_IMAGE_ASPECT_PLANE_1_BIT, "
- "or VK_IMAGE_ASPECT_PLANE_2_BIT",
- report_data->FormatHandle(metal_texture_ptr->image).c_str(),
- report_data->FormatHandle(metal_texture_ptr->imageView).c_str(),
- string_VkImageAspectFlags(metal_texture_ptr->plane).c_str());
- }
- }
- } break;
-
- case VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT: {
- auto metal_io_surface_ptr = reinterpret_cast<const VkExportMetalIOSurfaceInfoEXT *>(metal_objects_info_ptr);
- auto image_info = Get<IMAGE_STATE>(metal_io_surface_ptr->image);
- if (image_info) {
- if (!image_info->metal_io_surface_export) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06803",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalIOSurfaceInfoEXT structure with image = "
- "%s, but that image was not created with a VkExportMetalObjectCreateInfoEXT whose exportObjectType "
- "member was set to VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT in the pNext chain of the "
- "VkImageCreateInfo structure",
- report_data->FormatHandle(metal_io_surface_ptr->image).c_str());
- }
- }
- } break;
-
- case VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT: {
- auto metal_shared_event_ptr = reinterpret_cast<const VkExportMetalSharedEventInfoEXT *>(metal_objects_info_ptr);
- if ((metal_shared_event_ptr->event == VK_NULL_HANDLE && metal_shared_event_ptr->semaphore == VK_NULL_HANDLE) ||
- (metal_shared_event_ptr->event != VK_NULL_HANDLE && metal_shared_event_ptr->semaphore != VK_NULL_HANDLE)) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06804",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalSharedEventInfoEXT structure with semaphore = "
- "%s, and event = %s, but exactly one of them must not be VK_NULL_HANDLE",
- report_data->FormatHandle(metal_shared_event_ptr->semaphore).c_str(),
- report_data->FormatHandle(metal_shared_event_ptr->event).c_str());
- }
-
- if (metal_shared_event_ptr->semaphore) {
- auto semaphore_info = Get<SEMAPHORE_STATE>(metal_shared_event_ptr->semaphore);
- if (semaphore_info && !(semaphore_info->metal_semaphore_export)) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06805",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalSharedEventInfoEXT structure "
- "with semaphore = "
- "%s, but that semaphore was not created with a VkExportMetalObjectCreateInfoEXT whose exportObjectType "
- "member was set to VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT in the pNext chain of the "
- "VkSemaphoreCreateInfo structure",
- report_data->FormatHandle(metal_shared_event_ptr->semaphore).c_str());
- }
- }
- if (metal_shared_event_ptr->event) {
- auto event_info = Get<EVENT_STATE>(metal_shared_event_ptr->event);
- if (event_info && !(event_info->metal_event_export)) {
- skip |= LogError(
- device, "VUID-VkExportMetalObjectsInfoEXT-pNext-06806",
- "ExportMetalObjectsEXT: pNext chain contains a VkExportMetalSharedEventInfoEXT structure "
- "with event = "
- "%s, but that event was not created with a VkExportMetalObjectCreateInfoEXT whose exportObjectType "
- "member was set to VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT in the pNext chain of the "
- "VkEventCreateInfo structure",
- report_data->FormatHandle(metal_shared_event_ptr->event).c_str());
- }
- }
- } break;
- default:
- break;
- }
- metal_objects_info_ptr = metal_objects_info_ptr->pNext;
- }
- return skip;
-}
-#endif // VK_USE_PLATFORM_METAL_EXT