Skip to content

Commit

Permalink
tests: Test robustness supported VUIDs
Browse files Browse the repository at this point in the history
  • Loading branch information
ziga-lunarg authored and spencer-lunarg committed Jan 8, 2025
1 parent c9e58e3 commit 233d581
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 6 deletions.
17 changes: 11 additions & 6 deletions tests/unit/robustness.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ TEST_F(NegativeRobustness, PipelineRobustnessDisabled) {

SetTargetApiVersion(VK_API_VERSION_1_1);
AddRequiredExtensions(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME);
AddRequiredExtensions(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
AddRequiredFeature(vkt::Feature::robustBufferAccess);
AddRequiredFeature(vkt::Feature::robustBufferAccess2);
RETURN_IF_SKIP(Init());

{
Expand Down Expand Up @@ -68,6 +71,9 @@ TEST_F(NegativeRobustness, PipelineRobustnessDisabledShaderStage) {

SetTargetApiVersion(VK_API_VERSION_1_1);
AddRequiredExtensions(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME);
AddRequiredExtensions(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
AddRequiredFeature(vkt::Feature::robustBufferAccess);
AddRequiredFeature(vkt::Feature::robustBufferAccess2);
RETURN_IF_SKIP(Init());

CreateComputePipelineHelper pipe(*this);
Expand All @@ -89,8 +95,11 @@ TEST_F(NegativeRobustness, PipelineRobustnessDisabledShaderStageWithIdentifier)
SetTargetApiVersion(VK_API_VERSION_1_1);
AddRequiredExtensions(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME);
AddRequiredExtensions(VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME);
AddRequiredExtensions(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
AddRequiredFeature(vkt::Feature::pipelineCreationCacheControl);
AddRequiredFeature(vkt::Feature::shaderModuleIdentifier);
AddRequiredFeature(vkt::Feature::robustBufferAccess);
AddRequiredFeature(vkt::Feature::robustBufferAccess2);
RETURN_IF_SKIP(Init());

CreateComputePipelineHelper pipe(*this);
Expand All @@ -116,9 +125,7 @@ TEST_F(NegativeRobustness, PipelineRobustnessDisabledShaderStageWithIdentifier)
m_errorMonitor->VerifyFound();
}

// Need to fix check to check if feature is exposed
// TODO - https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5657
TEST_F(NegativeRobustness, DISABLED_PipelineRobustnessRobustBufferAccess2Unsupported) {
TEST_F(NegativeRobustness, PipelineRobustnessRobustBufferAccess2Unsupported) {
TEST_DESCRIPTION("Create a pipeline using VK_EXT_pipeline_robustness with robustBufferAccess2 being unsupported");

SetTargetApiVersion(VK_API_VERSION_1_1);
Expand Down Expand Up @@ -176,9 +183,7 @@ TEST_F(NegativeRobustness, DISABLED_PipelineRobustnessRobustBufferAccess2Unsuppo
}
}

// Need to fix check to check if feature is exposed
// TODO - https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5657
TEST_F(NegativeRobustness, DISABLED_PipelineRobustnessRobustImageAccess2Unsupported) {
TEST_F(NegativeRobustness, PipelineRobustnessRobustImageAccess2Unsupported) {
TEST_DESCRIPTION("Create a pipeline using VK_EXT_pipeline_robustness with robustImageAccess2 being unsupported");

AddRequiredExtensions(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME);
Expand Down
60 changes: 60 additions & 0 deletions tests/unit/robustness_positive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,63 @@ TEST_F(PositiveRobustness, PipelineRobustnessRobustImageAccessExposed) {
pipeline_robustness_info.images = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS;
pipe.CreateComputePipeline();
}

TEST_F(PositiveRobustness, PipelineRobustnessRobustBufferAccess2Supported) {
TEST_DESCRIPTION("Create a pipeline using VK_EXT_pipeline_robustness with robustBufferAccess2 being supported");

SetTargetApiVersion(VK_API_VERSION_1_1);
AddRequiredExtensions(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME);
AddRequiredExtensions(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
AddRequiredFeature(vkt::Feature::pipelineRobustness);
RETURN_IF_SKIP(Init());

VkPhysicalDeviceRobustness2FeaturesEXT robustness2_features = vku::InitStructHelper();
GetPhysicalDeviceFeatures2(robustness2_features);

if (!robustness2_features.robustBufferAccess2) {
GTEST_SKIP() << "robustBufferAccess2 is not supported";
}

{
VkPipelineRobustnessCreateInfo pipeline_robustness_info = vku::InitStructHelper();
CreateComputePipelineHelper pipe(*this, &pipeline_robustness_info);
pipeline_robustness_info.storageBuffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2;
pipe.CreateComputePipeline();
}

{
VkPipelineRobustnessCreateInfo pipeline_robustness_info = vku::InitStructHelper();
CreateComputePipelineHelper pipe(*this, &pipeline_robustness_info);
pipeline_robustness_info.uniformBuffers = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2;
pipe.CreateComputePipeline();
}

{
VkPipelineRobustnessCreateInfo pipeline_robustness_info = vku::InitStructHelper();
CreateComputePipelineHelper pipe(*this, &pipeline_robustness_info);
pipeline_robustness_info.vertexInputs = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2;
pipe.CreateComputePipeline();
}
}

TEST_F(PositiveRobustness, PipelineRobustnessRobustImageAccess2Supported) {
TEST_DESCRIPTION("Create a pipeline using VK_EXT_pipeline_robustness with robustImageAccess2 being supported");

SetTargetApiVersion(VK_API_VERSION_1_1);
AddRequiredExtensions(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME);
AddRequiredExtensions(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
AddRequiredFeature(vkt::Feature::pipelineRobustness);
RETURN_IF_SKIP(Init());

VkPhysicalDeviceRobustness2FeaturesEXT robustness2_features = vku::InitStructHelper();
GetPhysicalDeviceFeatures2(robustness2_features);

if (!robustness2_features.robustBufferAccess2) {
GTEST_SKIP() << "robustBufferAccess2 is not supported";
}

VkPipelineRobustnessCreateInfo pipeline_robustness_info = vku::InitStructHelper();
CreateComputePipelineHelper pipe(*this, &pipeline_robustness_info);
pipeline_robustness_info.images = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2;
pipe.CreateComputePipeline();
}

0 comments on commit 233d581

Please sign in to comment.