@@ -399,6 +399,7 @@ TEST_F(NegativeSyncObject, Barriers) {
399399
400400 // DEPTH bit must be set
401401 conc_test.image_barrier_ .subresourceRange .aspectMask = VK_IMAGE_ASPECT_METADATA_BIT ;
402+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier-image-10749" );
402403 conc_test (" VUID-VkImageMemoryBarrier-subresourceRange-09601" );
403404
404405 // No bits other than DEPTH may be set
@@ -418,6 +419,7 @@ TEST_F(NegativeSyncObject, Barriers) {
418419 // Use of COLOR aspect on depth image is error
419420 conc_test.image_barrier_ .subresourceRange .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT ;
420421 // must have the VK_IMAGE_ASPECT_STENCIL_BIT set
422+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier-image-10750" );
421423 conc_test (" VUID-VkImageMemoryBarrier-subresourceRange-09601" );
422424 }
423425
@@ -912,6 +914,7 @@ TEST_F(NegativeSyncObject, Sync2Barriers) {
912914
913915 // DEPTH bit must be set
914916 conc_test.image_barrier_ .subresourceRange .aspectMask = VK_IMAGE_ASPECT_METADATA_BIT ;
917+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier2-image-10749" );
915918 conc_test (" depth-only image formats must have the VK_IMAGE_ASPECT_DEPTH_BIT set." );
916919
917920 // No bits other than DEPTH may be set
@@ -930,6 +933,7 @@ TEST_F(NegativeSyncObject, Sync2Barriers) {
930933
931934 // Use of COLOR aspect on depth image is error
932935 conc_test.image_barrier_ .subresourceRange .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT ;
936+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier2-image-10750" );
933937 conc_test (" stencil-only image formats must have the VK_IMAGE_ASPECT_STENCIL_BIT set." );
934938 }
935939
@@ -1191,6 +1195,64 @@ TEST_F(NegativeSyncObject, DepthStencilImageNonSeparateSync2) {
11911195 conc_test (" VUID-VkImageMemoryBarrier2-image-03320" );
11921196}
11931197
1198+ TEST_F (NegativeSyncObject, DepthOnlyStencilOnlyImageAspect) {
1199+ SetTargetApiVersion (VK_API_VERSION_1_3 );
1200+ AddRequiredFeature (vkt::Feature::synchronization2);
1201+ RETURN_IF_SKIP (Init ());
1202+
1203+ m_command_buffer.Begin ();
1204+
1205+ VkImageMemoryBarrier barrier = vku::InitStructHelper ();
1206+ barrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED ;
1207+ barrier.newLayout = VK_IMAGE_LAYOUT_GENERAL ;
1208+ barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED ;
1209+ barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED ;
1210+
1211+ VkImageMemoryBarrier2 barrier2 = vku::InitStructHelper ();
1212+ barrier2.srcStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT ;
1213+ barrier2.dstStageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT ;
1214+ barrier2.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED ;
1215+ barrier2.newLayout = VK_IMAGE_LAYOUT_GENERAL ;
1216+ barrier2.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED ;
1217+ barrier2.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED ;
1218+
1219+ const VkFormat depth_format = FindSupportedDepthOnlyFormat (Gpu ());
1220+ vkt::Image depth_image (*m_device, 32 , 32 , depth_format, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT );
1221+ barrier.image = depth_image;
1222+ barrier.subresourceRange = {VK_IMAGE_ASPECT_STENCIL_BIT , 0 , 1 , 0 , 1 };
1223+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier-subresourceRange-09601" );
1224+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier-image-10749" );
1225+ m_command_buffer.Barrier (barrier, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT , VK_PIPELINE_STAGE_ALL_COMMANDS_BIT );
1226+ m_errorMonitor->VerifyFound ();
1227+
1228+ barrier2.image = depth_image;
1229+ barrier2.subresourceRange = {VK_IMAGE_ASPECT_STENCIL_BIT , 0 , 1 , 0 , 1 };
1230+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier2-subresourceRange-09601" );
1231+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier2-image-10749" );
1232+ m_command_buffer.Barrier (barrier2);
1233+ m_errorMonitor->VerifyFound ();
1234+
1235+ const VkFormat stencil_format = FindSupportedStencilOnlyFormat (Gpu ());
1236+ if (stencil_format != VK_FORMAT_UNDEFINED ) {
1237+ vkt::Image stencil_image (*m_device, 32 , 32 , stencil_format, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT );
1238+ barrier.image = stencil_image;
1239+ barrier.subresourceRange = {VK_IMAGE_ASPECT_DEPTH_BIT , 0 , 1 , 0 , 1 };
1240+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier-subresourceRange-09601" );
1241+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier-image-10750" );
1242+ m_command_buffer.Barrier (barrier, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT , VK_PIPELINE_STAGE_ALL_COMMANDS_BIT );
1243+ m_errorMonitor->VerifyFound ();
1244+
1245+ barrier2.image = stencil_image;
1246+ barrier2.subresourceRange = {VK_IMAGE_ASPECT_DEPTH_BIT , 0 , 1 , 0 , 1 };
1247+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier2-subresourceRange-09601" );
1248+ m_errorMonitor->SetDesiredError (" VUID-VkImageMemoryBarrier2-image-10750" );
1249+ m_command_buffer.Barrier (barrier2);
1250+ m_errorMonitor->VerifyFound ();
1251+ }
1252+
1253+ m_command_buffer.End ();
1254+ }
1255+
11941256TEST_F (NegativeSyncObject, BarrierQueueFamily) {
11951257 TEST_DESCRIPTION (" Create and submit barriers with invalid queue families" );
11961258 SetTargetApiVersion (VK_API_VERSION_1_0 );
0 commit comments