Skip to content

Commit b574017

Browse files
committed
layers: Check semaphore exportability against correct type
1 parent ca99ba5 commit b574017

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

layers/core_checks/cc_synchronization.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,8 +710,11 @@ bool CoreChecks::PreCallValidateCreateSemaphore(VkDevice device, const VkSemapho
710710
bool skip = false;
711711
auto sem_type_create_info = vku::FindStructInPNextChain<VkSemaphoreTypeCreateInfo>(pCreateInfo->pNext);
712712
const Location create_info_loc = error_obj.location.dot(Field::pCreateInfo);
713+
auto semaphoreType = VK_SEMAPHORE_TYPE_BINARY;
713714

714715
if (sem_type_create_info) {
716+
semaphoreType = sem_type_create_info->semaphoreType;
717+
715718
if (sem_type_create_info->semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE && !enabled_features.timelineSemaphore) {
716719
skip |= LogError("VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252", device,
717720
create_info_loc.dot(Field::semaphoreType),
@@ -731,7 +734,9 @@ bool CoreChecks::PreCallValidateCreateSemaphore(VkDevice device, const VkSemapho
731734
bool export_supported = true;
732735
// Check export support
733736
auto check_export_support = [&](VkExternalSemaphoreHandleTypeFlagBits flag) {
734-
VkPhysicalDeviceExternalSemaphoreInfo external_info = vku::InitStructHelper();
737+
VkSemaphoreTypeCreateInfo type_info = vku::InitStructHelper();
738+
type_info.semaphoreType = semaphoreType;
739+
VkPhysicalDeviceExternalSemaphoreInfo external_info = vku::InitStructHelper(&type_info);
735740
external_info.handleType = flag;
736741
DispatchGetPhysicalDeviceExternalSemaphorePropertiesHelper(api_version, physical_device, &external_info,
737742
&external_properties);

0 commit comments

Comments
 (0)