+dEQP-VK.wsi.android.swapchain.create.exclusive_nonzero_queues
+dEQP-VK.wsi.android.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.android.swapchain.destroy.old_swapchain
dEQP-VK.wsi.android.swapchain.acquire.too_many
dEQP-VK.wsi.android.swapchain.acquire.too_many_timeout
dEQP-VK.wsi.android.swapchain.private_data.composite_alpha
dEQP-VK.wsi.android.swapchain.private_data.present_mode
dEQP-VK.wsi.android.swapchain.private_data.clipped
+dEQP-VK.wsi.android.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.android.colorspace_compare.b8g8r8a8_unorm
dEQP-VK.wsi.android.colorspace_compare.r8g8b8a8_unorm
dEQP-VK.wsi.android.colorspace_compare.r8g8b8a8_srgb
dEQP-VK.wsi.android.present_id_wait.wait.no_frame_id
dEQP-VK.wsi.android.present_id_wait.wait.future_frame
dEQP-VK.wsi.android.present_id_wait.wait.two_swapchains
+dEQP-VK.wsi.macos.swapchain.create.exclusive_nonzero_queues
+dEQP-VK.wsi.macos.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.macos.swapchain.destroy.old_swapchain
dEQP-VK.wsi.macos.swapchain.acquire.too_many
dEQP-VK.wsi.macos.swapchain.acquire.too_many_timeout
dEQP-VK.wsi.macos.swapchain.private_data.composite_alpha
dEQP-VK.wsi.macos.swapchain.private_data.present_mode
dEQP-VK.wsi.macos.swapchain.private_data.clipped
+dEQP-VK.wsi.macos.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.macos.colorspace_compare.b8g8r8a8_unorm
dEQP-VK.wsi.macos.colorspace_compare.r8g8b8a8_unorm
dEQP-VK.wsi.macos.colorspace_compare.r8g8b8a8_srgb
dEQP-VK.wsi.headless.swapchain.create.composite_alpha
dEQP-VK.wsi.headless.swapchain.create.present_mode
dEQP-VK.wsi.headless.swapchain.create.clipped
+dEQP-VK.wsi.headless.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.headless.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.headless.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.headless.swapchain.simulate_oom.image_format
dEQP-VK.wsi.headless.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.headless.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.headless.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.headless.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.headless.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.headless.swapchain.render.basic
dEQP-VK.wsi.headless.swapchain.render.basic2
dEQP-VK.wsi.headless.swapchain.private_data.composite_alpha
dEQP-VK.wsi.headless.swapchain.private_data.present_mode
dEQP-VK.wsi.headless.swapchain.private_data.clipped
+dEQP-VK.wsi.headless.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.android.swapchain.create.composite_alpha
dEQP-VK.wsi.android.swapchain.create.present_mode
dEQP-VK.wsi.android.swapchain.create.clipped
+dEQP-VK.wsi.android.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.android.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.android.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.android.swapchain.simulate_oom.image_format
dEQP-VK.wsi.android.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.android.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.android.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.android.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.android.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.android.swapchain.render.basic
dEQP-VK.wsi.android.swapchain.render.basic2
dEQP-VK.wsi.android.swapchain.private_data.composite_alpha
dEQP-VK.wsi.android.swapchain.private_data.present_mode
dEQP-VK.wsi.android.swapchain.private_data.clipped
+dEQP-VK.wsi.android.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.android.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.android.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.android.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.macos.swapchain.create.composite_alpha
dEQP-VK.wsi.macos.swapchain.create.present_mode
dEQP-VK.wsi.macos.swapchain.create.clipped
+dEQP-VK.wsi.macos.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.macos.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.macos.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.macos.swapchain.simulate_oom.image_format
dEQP-VK.wsi.macos.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.macos.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.macos.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.macos.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.macos.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.macos.swapchain.render.basic
dEQP-VK.wsi.macos.swapchain.render.basic2
dEQP-VK.wsi.macos.swapchain.private_data.composite_alpha
dEQP-VK.wsi.macos.swapchain.private_data.present_mode
dEQP-VK.wsi.macos.swapchain.private_data.clipped
+dEQP-VK.wsi.macos.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.headless.swapchain.create.composite_alpha
dEQP-VK.wsi.headless.swapchain.create.present_mode
dEQP-VK.wsi.headless.swapchain.create.clipped
+dEQP-VK.wsi.headless.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.headless.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.headless.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.headless.swapchain.simulate_oom.image_format
dEQP-VK.wsi.headless.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.headless.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.headless.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.headless.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.headless.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.headless.swapchain.render.basic
dEQP-VK.wsi.headless.swapchain.render.basic2
dEQP-VK.wsi.headless.swapchain.private_data.composite_alpha
dEQP-VK.wsi.headless.swapchain.private_data.present_mode
dEQP-VK.wsi.headless.swapchain.private_data.clipped
+dEQP-VK.wsi.headless.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
TEST_DIMENSION_COMPOSITE_ALPHA,
TEST_DIMENSION_PRESENT_MODE,
TEST_DIMENSION_CLIPPED,
+ TEST_DIMENSION_EXCLUSIVE_NONZERO, //!< Test VK_SHARING_MODE_EXCLUSIVE and a nonzero queue count.
TEST_DIMENSION_LAST
};
"pre_transform",
"composite_alpha",
"present_mode",
- "clipped"
+ "clipped",
+ "exclusive_nonzero_queues",
};
+ static_assert(static_cast<int>(de::arrayLength(s_names)) == TEST_DIMENSION_LAST,
+ "Array of names does not provide a 1:1 mapping to TestDimension");
return de::getSizedArrayElement<TEST_DIMENSION_LAST>(s_names, dimension);
}
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
VK_SHARING_MODE_EXCLUSIVE,
0u,
- (const deUint32*)DE_NULL,
+ nullptr,
defaultTransform,
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
VK_PRESENT_MODE_FIFO_KHR,
break;
}
+ case TEST_DIMENSION_EXCLUSIVE_NONZERO:
+ {
+ // Test the implementation doesn't attempt to do anything with the queue index array in exclusive sharing mode.
+ cases.push_back(baseParameters);
+ cases.back().queueFamilyIndexCount = 2u;
+
+ break;
+ }
+
default:
DE_FATAL("Impossible");
}
if (curParams.imageSharingMode == VK_SHARING_MODE_CONCURRENT)
{
- const deUint32 numFamilies = static_cast<deUint32>(devHelper.queueFamilyIndices.size());
+ const auto numFamilies = static_cast<deUint32>(devHelper.queueFamilyIndices.size());
if (numFamilies < 2u)
TCU_THROW(NotSupportedError, "Only " + de::toString(numFamilies) + " queue families available for VK_SHARING_MODE_CONCURRENT");
+
curParams.queueFamilyIndexCount = numFamilies;
+ curParams.pQueueFamilyIndices = devHelper.queueFamilyIndices.data();
}
- else
- {
- // Take only the first queue.
- if (devHelper.queueFamilyIndices.empty())
- TCU_THROW(NotSupportedError, "No queue families compatible with the given surface");
- curParams.queueFamilyIndexCount = 1u;
- }
- curParams.pQueueFamilyIndices = devHelper.queueFamilyIndices.data();
- curParams.surface = *surface;
+
+ // Overwrite surface.
+ curParams.surface = *surface;
log << TestLog::Message << subcase.str() << curParams << TestLog::EndMessage;
dEQP-VK.wsi.xlib.swapchain.create.composite_alpha
dEQP-VK.wsi.xlib.swapchain.create.present_mode
dEQP-VK.wsi.xlib.swapchain.create.clipped
+dEQP-VK.wsi.xlib.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.xlib.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.xlib.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.xlib.swapchain.simulate_oom.image_format
dEQP-VK.wsi.xlib.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.xlib.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.xlib.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.xlib.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.xlib.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.xlib.swapchain.render.basic
dEQP-VK.wsi.xlib.swapchain.render.basic2
dEQP-VK.wsi.xlib.swapchain.private_data.composite_alpha
dEQP-VK.wsi.xlib.swapchain.private_data.present_mode
dEQP-VK.wsi.xlib.swapchain.private_data.clipped
+dEQP-VK.wsi.xlib.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.xlib.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.xlib.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.xlib.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.xcb.swapchain.create.composite_alpha
dEQP-VK.wsi.xcb.swapchain.create.present_mode
dEQP-VK.wsi.xcb.swapchain.create.clipped
+dEQP-VK.wsi.xcb.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.xcb.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.xcb.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.xcb.swapchain.simulate_oom.image_format
dEQP-VK.wsi.xcb.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.xcb.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.xcb.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.xcb.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.xcb.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.xcb.swapchain.render.basic
dEQP-VK.wsi.xcb.swapchain.render.basic2
dEQP-VK.wsi.xcb.swapchain.private_data.composite_alpha
dEQP-VK.wsi.xcb.swapchain.private_data.present_mode
dEQP-VK.wsi.xcb.swapchain.private_data.clipped
+dEQP-VK.wsi.xcb.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.xcb.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.xcb.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.xcb.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.wayland.swapchain.create.composite_alpha
dEQP-VK.wsi.wayland.swapchain.create.present_mode
dEQP-VK.wsi.wayland.swapchain.create.clipped
+dEQP-VK.wsi.wayland.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.wayland.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.wayland.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.wayland.swapchain.simulate_oom.image_format
dEQP-VK.wsi.wayland.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.wayland.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.wayland.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.wayland.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.wayland.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.wayland.swapchain.render.basic
dEQP-VK.wsi.wayland.swapchain.render.basic2
dEQP-VK.wsi.wayland.swapchain.private_data.composite_alpha
dEQP-VK.wsi.wayland.swapchain.private_data.present_mode
dEQP-VK.wsi.wayland.swapchain.private_data.clipped
+dEQP-VK.wsi.wayland.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.wayland.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.wayland.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.wayland.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.android.swapchain.create.composite_alpha
dEQP-VK.wsi.android.swapchain.create.present_mode
dEQP-VK.wsi.android.swapchain.create.clipped
+dEQP-VK.wsi.android.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.android.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.android.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.android.swapchain.simulate_oom.image_format
dEQP-VK.wsi.android.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.android.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.android.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.android.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.android.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.android.swapchain.render.basic
dEQP-VK.wsi.android.swapchain.render.basic2
dEQP-VK.wsi.android.swapchain.private_data.composite_alpha
dEQP-VK.wsi.android.swapchain.private_data.present_mode
dEQP-VK.wsi.android.swapchain.private_data.clipped
+dEQP-VK.wsi.android.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.android.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.android.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.android.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.win32.swapchain.create.composite_alpha
dEQP-VK.wsi.win32.swapchain.create.present_mode
dEQP-VK.wsi.win32.swapchain.create.clipped
+dEQP-VK.wsi.win32.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.win32.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.win32.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.win32.swapchain.simulate_oom.image_format
dEQP-VK.wsi.win32.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.win32.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.win32.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.win32.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.win32.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.win32.swapchain.render.basic
dEQP-VK.wsi.win32.swapchain.render.basic2
dEQP-VK.wsi.win32.swapchain.private_data.composite_alpha
dEQP-VK.wsi.win32.swapchain.private_data.present_mode
dEQP-VK.wsi.win32.swapchain.private_data.clipped
+dEQP-VK.wsi.win32.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.win32.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.win32.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.win32.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.macos.swapchain.create.composite_alpha
dEQP-VK.wsi.macos.swapchain.create.present_mode
dEQP-VK.wsi.macos.swapchain.create.clipped
+dEQP-VK.wsi.macos.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.macos.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.macos.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.macos.swapchain.simulate_oom.image_format
dEQP-VK.wsi.macos.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.macos.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.macos.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.macos.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.macos.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.macos.swapchain.render.basic
dEQP-VK.wsi.macos.swapchain.render.basic2
dEQP-VK.wsi.macos.swapchain.private_data.composite_alpha
dEQP-VK.wsi.macos.swapchain.private_data.present_mode
dEQP-VK.wsi.macos.swapchain.private_data.clipped
+dEQP-VK.wsi.macos.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
dEQP-VK.wsi.headless.swapchain.create.composite_alpha
dEQP-VK.wsi.headless.swapchain.create.present_mode
dEQP-VK.wsi.headless.swapchain.create.clipped
+dEQP-VK.wsi.headless.swapchain.create.exclusive_nonzero_queues
dEQP-VK.wsi.headless.swapchain.create.image_swapchain_create_info
dEQP-VK.wsi.headless.swapchain.simulate_oom.min_image_count
dEQP-VK.wsi.headless.swapchain.simulate_oom.image_format
dEQP-VK.wsi.headless.swapchain.simulate_oom.composite_alpha
dEQP-VK.wsi.headless.swapchain.simulate_oom.present_mode
dEQP-VK.wsi.headless.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.headless.swapchain.simulate_oom.exclusive_nonzero_queues
dEQP-VK.wsi.headless.swapchain.simulate_oom.image_swapchain_create_info
dEQP-VK.wsi.headless.swapchain.render.basic
dEQP-VK.wsi.headless.swapchain.render.basic2
dEQP-VK.wsi.headless.swapchain.private_data.composite_alpha
dEQP-VK.wsi.headless.swapchain.private_data.present_mode
dEQP-VK.wsi.headless.swapchain.private_data.clipped
+dEQP-VK.wsi.headless.swapchain.private_data.exclusive_nonzero_queues
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.opaque.reference
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.opaque.incremental_present
dEQP-VK.wsi.headless.incremental_present.scale_none.immediate.identity.pre_multiplied.reference
return (size_t)DE_OFFSET_OF(PaddingCheck, t);
}
+//! Similar to DE_LENGTH_OF_ARRAY but constexpr and without auxiliar helpers.
+template <typename T, size_t N>
+constexpr size_t arrayLength (const T (&)[N]) { return N; }
+
} // de
/*--------------------------------------------------------------------*//*!