{
const VkFormatFeatureFlags required = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
| VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
- | VK_FORMAT_FEATURE_TRANSFER_DST_BIT
- | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT;
+ | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
if ((supported & required) != required)
{
tcu::TestStatus deviceFeatures2 (Context& context)
{
const PlatformInterface& vkp = context.getPlatformInterface();
- const VkInstance instance (context.getInstance());
- const InstanceDriver vki (vkp, instance);
- const vector<VkPhysicalDevice> devices = enumeratePhysicalDevices(vki, instance);
+ const Unique<VkInstance> instance (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2", context));
+ const InstanceDriver vki (vkp, *instance);
+ const vector<VkPhysicalDevice> devices = enumeratePhysicalDevices(vki, *instance);
TestLog& log = context.getTestContext().getLog();
for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
const VkClearRect clearRect =
{
rect,
- 1u, // baseArrayLayer
+ 0u, // baseArrayLayer
1u // layerCount
};
{
0u, // deUint32 srcSubpass
1u + static_cast<deUint32>(i), // deUint32 dstSubpass
- VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, // VkPipelineStageFlags srcStageMask
+ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, // VkPipelineStageFlags srcStageMask
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, // VkPipelineStageFlags dstStageMask
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // VkAccessFlags srcAccessMask
VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, // VkAccessFlags dstAccessMask
{
de::MovePtr<tcu::TestCaseGroup> updateTests (new tcu::TestCaseGroup(testCtx, "update", "Update Buffer Tests"));
- updateTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, FILL_BUFFER));
- updateTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, FILL_BUFFER));
- updateTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, FILL_BUFFER));
+ updateTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, UPDATE_BUFFER));
+ updateTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, UPDATE_BUFFER));
+ updateTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, UPDATE_BUFFER));
return updateTests.release();
}
{
de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, "copy", "Copy Buffer Tests"));
- copyTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, FILL_BUFFER));
- copyTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, FILL_BUFFER));
- copyTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, FILL_BUFFER));
+ copyTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, COPY_BUFFER));
+ copyTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, COPY_BUFFER));
+ copyTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, COPY_BUFFER));
return copyTests.release();
}
}
// If the implementation doesn't have a max image count, min+16 means we won't clamp.
- // Limit it to how many protected images we estimate can be allocated, with one image
+ // Limit it to how many protected images we estimate can be allocated, with two images
// worth of slack for alignment, swapchain-specific constraints, etc.
const deUint32 maxImageCount = de::min((capabilities.maxImageCount > 0) ? capabilities.maxImageCount : capabilities.minImageCount + 16u,
- deUint32(protectedHeapSize / memoryRequirements.size) - 1);
+ deUint32(protectedHeapSize / memoryRequirements.size) - 2);
const deUint32 maxImageCountToTest = de::clamp(16u, capabilities.minImageCount, maxImageCount);
for (deUint32 imageCount = capabilities.minImageCount; imageCount <= maxImageCountToTest; ++imageCount)
{