Test new pipeline stages from synchronization2
authorPiotr Byszewski <piotr.byszewski@mobica.com>
Fri, 27 Nov 2020 10:44:40 +0000 (11:44 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 16 Feb 2021 08:21:42 +0000 (08:21 +0000)
With this change some of SynchronizationOperations
will use new pipeline stages when they are executed
for synchronization2. Additionaly few new operations
were added to cover new stages.

Components: Vulkan

VK-GL-CTS issue: 2663

Affects:
dEQP-VK.synchronization.*
dEQP-VK.synchronization2.*

Change-Id: I6ccfbc9ec28d70035369c6f064a786c408c3afdd

14 files changed:
android/cts/master/vk-master-2020-03-01.txt
android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperation.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperation.hpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationResources.hpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationSingleQueueTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationTestData.hpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationSignalOrderTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.hpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationWin32KeyedMutexTests.cpp
external/vulkancts/mustpass/master/vk-default.txt

index e558e30..2056514 100644 (file)
@@ -214302,6 +214302,10 @@ dEQP-VK.synchronization.basic.binary_semaphore.multi_queue_typed
 dEQP-VK.synchronization.basic.timeline_semaphore.one_queue
 dEQP-VK.synchronization.basic.timeline_semaphore.multi_queue
 dEQP-VK.synchronization.basic.timeline_semaphore.chain
+dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
+dEQP-VK.synchronization.op.single_queue.fence.write_update_index_buffer_read_index_input.buffer_20
+dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
+dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -215301,6 +215305,7 @@ dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_i
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -215646,6 +215651,19 @@ dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_attachmen
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20
+dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
+dEQP-VK.synchronization.op.single_queue.barrier.write_update_index_buffer_read_index_input.buffer_20
+dEQP-VK.synchronization.op.single_queue.event.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
+dEQP-VK.synchronization.op.single_queue.event.write_update_index_buffer_read_index_input.buffer_20
+dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
+dEQP-VK.synchronization.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_concurrent
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -217644,6 +217662,8 @@ dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_in
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -218334,6 +218354,8 @@ dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fence_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_win32_kmt
@@ -224328,6 +224350,16 @@ dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fence_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_win32_kmt
@@ -226398,6 +226430,16 @@ dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispat
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fence_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_win32_kmt
@@ -232392,6 +232434,16 @@ dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_re
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fence_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_win32_kmt
@@ -234462,6 +234514,16 @@ dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer_to_image.buffer_16384
@@ -246207,6 +246269,7 @@ dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -246552,6 +246615,7 @@ dEQP-VK.synchronization2.op.single_queue.fence.write_clear_attachments_read_imag
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.fence.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -247551,6 +247615,7 @@ dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_in
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -247896,6 +247961,7 @@ dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_attachment
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -248895,6 +248961,7 @@ dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -249240,6 +249307,7 @@ dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_attachme
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -250239,6 +250307,7 @@ dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_re
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -250584,6 +250653,7 @@ dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_attachments_read_im
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.barrier.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -251583,6 +251653,7 @@ dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -251928,6 +251999,7 @@ dEQP-VK.synchronization2.op.single_queue.event.write_clear_attachments_read_imag
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.event.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -253926,6 +253998,8 @@ dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -254616,6 +254690,8 @@ dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_draw_indexed
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -256614,6 +256690,8 @@ dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_ind
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -257304,6 +257382,8 @@ dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_d
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -259302,6 +259382,8 @@ dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_i
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -259992,6 +260074,8 @@ dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -269982,6 +270066,16 @@ dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirec
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -273432,6 +273526,16 @@ dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispa
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -283422,6 +283526,16 @@ dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_r
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -286872,6 +286986,16 @@ dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer_to_image.buffer_16384
index 599a45d..e7cb0dd 100644 (file)
@@ -555665,6 +555665,7 @@ dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_
 dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -556010,6 +556011,7 @@ dEQP-VK.synchronization.op.single_queue.fence.write_clear_attachments_read_image
 dEQP-VK.synchronization.op.single_queue.fence.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.fence.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -557009,6 +557011,7 @@ dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_ind
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -557354,6 +557357,7 @@ dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_attachments
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -558353,6 +558357,7 @@ dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_i
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -558698,6 +558703,7 @@ dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_attachmen
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.barrier.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -559697,6 +559703,7 @@ dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_rea
 dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -560042,6 +560049,7 @@ dEQP-VK.synchronization.op.single_queue.barrier.write_clear_attachments_read_ima
 dEQP-VK.synchronization.op.single_queue.barrier.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.barrier.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.barrier.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.barrier.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.event.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -561041,6 +561049,7 @@ dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_
 dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.event.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -561386,6 +561395,7 @@ dEQP-VK.synchronization.op.single_queue.event.write_clear_attachments_read_image
 dEQP-VK.synchronization.op.single_queue.event.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.event.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.event.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.event.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -563384,6 +563394,8 @@ dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_i
 dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -564074,6 +564086,8 @@ dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_draw_indexed_
 dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -566072,6 +566086,8 @@ dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indi
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -566762,6 +566778,8 @@ dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_dr
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -568760,6 +568778,8 @@ dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_in
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -569450,6 +569470,8 @@ dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -579440,6 +579462,16 @@ dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -582890,6 +582922,16 @@ dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispat
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -592880,6 +592922,16 @@ dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_re
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -596330,6 +596382,16 @@ dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer_to_image.buffer_16384
@@ -608075,6 +608137,7 @@ dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -608420,6 +608483,7 @@ dEQP-VK.synchronization2.op.single_queue.fence.write_clear_attachments_read_imag
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.fence.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -609419,6 +609483,7 @@ dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_in
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -609764,6 +609829,7 @@ dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_attachment
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -610763,6 +610829,7 @@ dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -611108,6 +611175,7 @@ dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_attachme
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -612107,6 +612175,7 @@ dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_re
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -612452,6 +612521,7 @@ dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_attachments_read_im
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.barrier.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -613451,6 +613521,7 @@ dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -613796,6 +613867,7 @@ dEQP-VK.synchronization2.op.single_queue.event.write_clear_attachments_read_imag
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.event.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -615794,6 +615866,8 @@ dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -616484,6 +616558,8 @@ dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_draw_indexed
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -618482,6 +618558,8 @@ dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_ind
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -619172,6 +619250,8 @@ dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_d
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -621170,6 +621250,8 @@ dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_i
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -621860,6 +621942,8 @@ dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -631850,6 +631934,16 @@ dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirec
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -635300,6 +635394,16 @@ dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispa
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -645290,6 +645394,16 @@ dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_r
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -648740,6 +648854,16 @@ dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer_to_image.buffer_16384
index 10e75e4..336731d 100644 (file)
@@ -659,7 +659,7 @@ Move<VkImage> createImage(const vk::DeviceInterface&                                vkd,
                extent,
                1u,
                1u,
-               vk::VK_SAMPLE_COUNT_1_BIT,
+               resourceDesc.imageSamples,
                vk::VK_IMAGE_TILING_OPTIMAL,
                readOp.getInResourceUsageFlags() | writeOp.getOutResourceUsageFlags(),
                vk::VK_SHARING_MODE_EXCLUSIVE,
@@ -786,7 +786,7 @@ de::MovePtr<Resource> importResource (const vk::DeviceInterface&                            vkd,
                        extent,
                        1u,
                        1u,
-                       vk::VK_SAMPLE_COUNT_1_BIT,
+                       resourceDesc.imageSamples,
                        vk::VK_IMAGE_TILING_OPTIMAL,
                        readOp.getInResourceUsageFlags() | writeOp.getOutResourceUsageFlags(),
                        vk::VK_SHARING_MODE_EXCLUSIVE,
@@ -838,11 +838,11 @@ void recordWriteBarrier (SynchronizationWrapperPtr        synchronizationWrapper,
                                                 deUint32                                       writeQueueFamilyIndex,
                                                 const SyncInfo&                        readSync)
 {
-       const vk::VkPipelineStageFlags  srcStageMask            = writeSync.stageMask;
-       const vk::VkAccessFlags                 srcAccessMask           = writeSync.accessMask;
+       const vk::VkPipelineStageFlags2KHR      srcStageMask    = writeSync.stageMask;
+       const vk::VkAccessFlags2KHR                     srcAccessMask   = writeSync.accessMask;
 
-       const vk::VkPipelineStageFlags  dstStageMask            = readSync.stageMask;
-       const vk::VkAccessFlags                 dstAccessMask           = readSync.accessMask;
+       const vk::VkPipelineStageFlags2KHR      dstStageMask    = readSync.stageMask;
+       const vk::VkAccessFlags2KHR                     dstAccessMask   = readSync.accessMask;
 
        if (resource.getType() == RESOURCE_TYPE_IMAGE)
        {
@@ -886,11 +886,11 @@ void recordReadBarrier (SynchronizationWrapperPtr synchronizationWrapper,
                                                const SyncInfo&                         readSync,
                                                deUint32                                        readQueueFamilyIndex)
 {
-       const vk::VkPipelineStageFlags  srcStageMask            = readSync.stageMask;
-       const vk::VkAccessFlags                 srcAccessMask           = readSync.accessMask;
+       const vk::VkPipelineStageFlags2KHR      srcStageMask    = readSync.stageMask;
+       const vk::VkAccessFlags2KHR                     srcAccessMask   = readSync.accessMask;
 
-       const vk::VkPipelineStageFlags  dstStageMask            = readSync.stageMask;
-       const vk::VkAccessFlags                 dstAccessMask           = readSync.accessMask;
+       const vk::VkPipelineStageFlags2KHR      dstStageMask    = readSync.stageMask;
+       const vk::VkAccessFlags2KHR                     dstAccessMask   = readSync.accessMask;
 
        if (resource.getType() == RESOURCE_TYPE_IMAGE)
        {
index 79e340d..333f302 100644 (file)
@@ -280,12 +280,12 @@ VkPipelineStageFlags pipelineStageFlagsFromShaderStageFlagBits (const VkShaderSt
 {
        switch (shaderStage)
        {
-               case VK_SHADER_STAGE_VERTEX_BIT:                                        return VK_PIPELINE_STAGE_VERTEX_SHADER_BIT;
-               case VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT:          return VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT;
-               case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT:       return VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT;
-               case VK_SHADER_STAGE_GEOMETRY_BIT:                                      return VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT;
-               case VK_SHADER_STAGE_FRAGMENT_BIT:                                      return VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
-               case VK_SHADER_STAGE_COMPUTE_BIT:                                       return VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
+               case VK_SHADER_STAGE_VERTEX_BIT:                                        return VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR;
+               case VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT:          return VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR;
+               case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT:       return VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR;
+               case VK_SHADER_STAGE_GEOMETRY_BIT:                                      return VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR;
+               case VK_SHADER_STAGE_FRAGMENT_BIT:                                      return VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR;
+               case VK_SHADER_STAGE_COMPUTE_BIT:                                       return VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR;
 
                // Other usages are probably an error, so flag that.
                default:
@@ -295,13 +295,22 @@ VkPipelineStageFlags pipelineStageFlagsFromShaderStageFlagBits (const VkShaderSt
 }
 
 //! Fill destination buffer with a repeating pattern.
-void fillPattern (void* const pData, const VkDeviceSize size)
+void fillPattern (void* const pData, const VkDeviceSize size, bool useIndexPattern = false)
 {
-       static const deUint8    pattern[]       = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 };
-       deUint8* const                  pBytes          = static_cast<deUint8*>(pData);
+       // There are two pattern options - most operations use primePattern,
+       // indexPattern is only needed for testing vertex index bufffer.
+       static const deUint8    primePattern[]  = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 };
+       static const deUint32   indexPattern[]  = { 0, 1, 2, 3, 4 };
+
+       const deUint8*                  pattern                 = (useIndexPattern ? reinterpret_cast<const deUint8*>(indexPattern)
+                                                                                                                          : primePattern);
+       const deUint32                  patternSize             = static_cast<deUint32>(useIndexPattern
+                                                                                                                          ? DE_LENGTH_OF_ARRAY(indexPattern)*sizeof(deUint32)
+                                                                                                                          : DE_LENGTH_OF_ARRAY(primePattern));
+       deUint8* const                  pBytes                  = static_cast<deUint8*>(pData);
 
        for (deUint32 i = 0; i < size; ++i)
-               pBytes[i] = pattern[i % DE_LENGTH_OF_ARRAY(pattern)];
+               pBytes[i] = pattern[i % patternSize];
 }
 
 //! Get size in bytes of a pixel buffer with given extent.
@@ -469,6 +478,7 @@ enum BufferOp
 {
        BUFFER_OP_FILL,
        BUFFER_OP_UPDATE,
+       BUFFER_OP_UPDATE_WITH_INDEX_PATTERN,
 };
 
 class Implementation : public Operation
@@ -497,10 +507,9 @@ public:
                {
                        fillPattern(&m_data[0], m_data.size());
                }
-               else
+               else if(m_bufferOp == BUFFER_OP_UPDATE_WITH_INDEX_PATTERN)
                {
-                       // \todo Really??
-                       // Do nothing
+                       fillPattern(&m_data[0], m_data.size(), true);
                }
        }
 
@@ -514,10 +523,10 @@ public:
 
                        SynchronizationWrapperPtr synchronizationWrapper = getSynchronizationWrapper(m_context.getSynchronizationType(), vk, DE_FALSE);
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                                 // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                                   // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_READ_BIT,                                                    // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                                   // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                                             // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                                   // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                                              // VkAccessFlags2KHR                            dstAccessMask
                                m_resource.getBuffer().handle,                                                  // VkBuffer                                                     buffer
                                0u,                                                                                                             // VkDeviceSize                                         offset
                                m_resource.getBuffer().size                                                             // VkDeviceSize                                         size
@@ -525,13 +534,8 @@ public:
                        VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, &bufferMemoryBarrier2);
                        synchronizationWrapper->cmdPipelineBarrier(cmdBuffer, &dependencyInfo);
                }
-               else if (m_bufferOp == BUFFER_OP_UPDATE)
-                       vk.cmdUpdateBuffer(cmdBuffer, m_resource.getBuffer().handle, m_resource.getBuffer().offset, m_resource.getBuffer().size, reinterpret_cast<deUint32*>(&m_data[0]));
                else
-               {
-                       // \todo Really??
-                       // Do nothing
-               }
+                       vk.cmdUpdateBuffer(cmdBuffer, m_resource.getBuffer().handle, m_resource.getBuffer().offset, m_resource.getBuffer().size, reinterpret_cast<deUint32*>(&m_data[0]));
        }
 
        SyncInfo getInSyncInfo (void) const
@@ -543,9 +547,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,           // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
 
                return syncInfo;
@@ -581,8 +585,8 @@ public:
                : m_resourceDesc        (resourceDesc)
                , m_bufferOp            (bufferOp)
        {
-               DE_ASSERT(m_bufferOp == BUFFER_OP_FILL || m_bufferOp == BUFFER_OP_UPDATE);
-               DE_ASSERT(m_resourceDesc.type == RESOURCE_TYPE_BUFFER);
+               DE_ASSERT(m_bufferOp == BUFFER_OP_FILL || m_bufferOp == BUFFER_OP_UPDATE || m_bufferOp == BUFFER_OP_UPDATE_WITH_INDEX_PATTERN);
+               DE_ASSERT(m_resourceDesc.type == RESOURCE_TYPE_BUFFER || m_resourceDesc.type == RESOURCE_TYPE_INDEX_BUFFER);
        }
 
        deUint32 getInResourceUsageFlags (void) const
@@ -663,10 +667,10 @@ public:
 
                        // Insert a barrier so copied data is available to the host
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                                 // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                                   // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_HOST_BIT,                                                             // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_HOST_READ_BIT,                                                                // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                                   // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                                             // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                                               // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_HOST_READ_BIT_KHR,                                                  // VkAccessFlags2KHR                            dstAccessMask
                                **m_hostBuffer,                                                                                 // VkBuffer                                                     buffer
                                0u,                                                                                                             // VkDeviceSize                                         offset
                                m_resource.getBuffer().size                                                             // VkDeviceSize                                         size
@@ -678,10 +682,10 @@ public:
                {
                        // Insert a barrier so buffer data is available to the device
                        //const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                       //      VK_PIPELINE_STAGE_HOST_BIT,                                                             // VkPipelineStageFlags2KHR                     srcStageMask
-                       //      VK_ACCESS_HOST_WRITE_BIT,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                       //      VK_PIPELINE_STAGE_TRANSFER_BIT,                                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                       //      VK_ACCESS_TRANSFER_READ_BIT,                                                    // VkAccessFlags2KHR                            dstAccessMask
+                       //      VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                                               // VkPipelineStageFlags2KHR                     srcStageMask
+                       //      VK_ACCESS_2_HOST_WRITE_BIT_KHR,                                                 // VkAccessFlags2KHR                            srcAccessMask
+                       //      VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                                   // VkPipelineStageFlags2KHR                     dstStageMask
+                       //      VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                                              // VkAccessFlags2KHR                            dstAccessMask
                        //      **m_hostBuffer,                                                                                 // VkBuffer                                                     buffer
                        //      0u,                                                                                                             // VkDeviceSize                                         offset
                        //      m_resource.getBuffer().size                                                             // VkDeviceSize                                         size
@@ -695,24 +699,24 @@ public:
 
        SyncInfo getInSyncInfo (void) const
        {
-               const VkAccessFlags access              = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_TRANSFER_READ_BIT : 0);
+               const VkAccessFlags access              = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_2_TRANSFER_READ_BIT_KHR : 0);
                const SyncInfo          syncInfo        =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       access,                                                         // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       access,                                                                 // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
 
        SyncInfo getOutSyncInfo (void) const
        {
-               const VkAccessFlags access              = (m_mode == ACCESS_MODE_WRITE ? VK_ACCESS_TRANSFER_WRITE_BIT : 0);
+               const VkAccessFlags access              = (m_mode == ACCESS_MODE_WRITE ? VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR : 0);
                const SyncInfo          syncInfo        =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       access,                                                         // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       access,                                                                 // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -798,9 +802,9 @@ public:
        {
                const SyncInfo          syncInfo        =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_READ_BIT,            // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,              // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -809,9 +813,9 @@ public:
        {
                const SyncInfo          syncInfo        =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,           // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -873,7 +877,7 @@ public:
 
 } // CopyBuffer ns
 
-namespace CopyBlitImage
+namespace CopyBlitResolveImage
 {
 
 class ImplementationBase : public Operation
@@ -882,6 +886,9 @@ public:
        //! Copy/Blit/Resolve etc. operation
        virtual void recordCopyCommand (const VkCommandBuffer cmdBuffer) = 0;
 
+       //! Get source stage mask that is used during read - added to test synchronization2 new stage masks
+       virtual VkPipelineStageFlags2KHR getReadSrcStageMask() const = 0;
+
        ImplementationBase (OperationContext& context, Resource& resource, const AccessMode mode)
                : m_context             (context)
                , m_resource    (resource)
@@ -919,10 +926,10 @@ public:
                // Staging image layout
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                                **m_image,                                                                              // VkImage                                                      image
@@ -939,10 +946,10 @@ public:
 
                        // Staging image layout
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_READ_BIT,                                    // VkAccessFlags2KHR                            dstAccessMask
+                               getReadSrcStageMask(),                                                  // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                              // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,                   // VkImageLayout                                        newLayout
                                **m_image,                                                                              // VkImage                                                      image
@@ -956,10 +963,10 @@ public:
 
                        // Insert a barrier so copied data is available to the host
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_HOST_BIT,                                             // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_HOST_READ_BIT,                                                // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                               // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_HOST_READ_BIT_KHR,                                  // VkAccessFlags2KHR                            dstAccessMask
                                **m_hostBuffer,                                                                 // VkBuffer                                                     buffer
                                0u,                                                                                             // VkDeviceSize                                         offset
                                m_bufferSize                                                                    // VkDeviceSize                                         size
@@ -975,10 +982,10 @@ public:
                        // Staging image layout
                        {
                                const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                                       VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     srcStageMask
-                                       VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            srcAccessMask
-                                       VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_TRANSFER_READ_BIT,                                    // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     srcStageMask
+                                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            srcAccessMask
+                                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                              // VkAccessFlags2KHR                            dstAccessMask
                                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        oldLayout
                                        VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,                   // VkImageLayout                                        newLayout
                                        **m_image,                                                                              // VkImage                                                      image
@@ -991,10 +998,10 @@ public:
                        // Resource image layout
                        {
                                const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                                       VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
-                                       (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                                       VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
+                                       (VkAccessFlags2KHR)0,                                                   // VkAccessFlags2KHR                            srcAccessMask
+                                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                                        VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                                        m_resource.getImage().handle,                                   // VkImage                                                      image
@@ -1011,26 +1018,26 @@ public:
 
        SyncInfo getInSyncInfo (void) const
        {
-               const VkAccessFlags access              = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_TRANSFER_READ_BIT : VK_ACCESS_TRANSFER_WRITE_BIT);
-               const VkImageLayout layout              = (m_mode == ACCESS_MODE_READ ? VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
-               const SyncInfo          syncInfo        =
+               const VkAccessFlags2KHR access          = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_2_TRANSFER_READ_BIT_KHR : VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR);
+               const VkImageLayout             layout          = (m_mode == ACCESS_MODE_READ ? VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
+               const SyncInfo                  syncInfo        =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       access,                                                         // VkAccessFlags                        accessMask;
-                       layout,                                                         // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       access,                                                                 // VkAccessFlags                        accessMask;
+                       layout,                                                                 // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
 
        SyncInfo getOutSyncInfo (void) const
        {
-               const VkAccessFlags access              = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_TRANSFER_READ_BIT : VK_ACCESS_TRANSFER_WRITE_BIT);
-               const VkImageLayout layout              = (m_mode == ACCESS_MODE_READ ? VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
-               const SyncInfo          syncInfo        =
+               const VkAccessFlags2KHR access          = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_2_TRANSFER_READ_BIT_KHR : VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR);
+               const VkImageLayout             layout          = (m_mode == ACCESS_MODE_READ ? VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
+               const SyncInfo                  syncInfo        =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       access,                                                         // VkAccessFlags                        accessMask;
-                       layout,                                                         // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       access,                                                                 // VkAccessFlags                        accessMask;
+                       layout,                                                                 // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -1118,13 +1125,20 @@ public:
                }
        }
 
+       VkPipelineStageFlags2KHR getReadSrcStageMask() const
+       {
+               return (m_context.getSynchronizationType() == SynchronizationType::LEGACY) ? VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR : VK_PIPELINE_STAGE_2_BLIT_BIT_KHR;
+       }
+
+
 private:
        const VkImageBlit       m_blitRegion;
 };
 
-VkImageCopy makeImageCopyRegion (const Resource& resource)
+template <typename ImageCopyOrResolve>
+ImageCopyOrResolve makeImageRegion (const Resource& resource)
 {
-       const VkImageCopy imageCopyRegion =
+       return
        {
                resource.getImage().subresourceLayers,          // VkImageSubresourceLayers    srcSubresource;
                makeOffset3D(0, 0, 0),                                          // VkOffset3D                  srcOffset;
@@ -1132,7 +1146,6 @@ VkImageCopy makeImageCopyRegion (const Resource& resource)
                makeOffset3D(0, 0, 0),                                          // VkOffset3D                  dstOffset;
                resource.getImage().extent,                                     // VkExtent3D                  extent;
        };
-       return imageCopyRegion;
 }
 
 class CopyImplementation : public ImplementationBase
@@ -1140,7 +1153,7 @@ class CopyImplementation : public ImplementationBase
 public:
        CopyImplementation (OperationContext& context, Resource& resource, const AccessMode mode)
                : ImplementationBase    (context, resource, mode)
-               , m_imageCopyRegion             (makeImageCopyRegion(m_resource))
+               , m_imageCopyRegion             (makeImageRegion<VkImageCopy>(m_resource))
        {
        }
 
@@ -1160,14 +1173,47 @@ public:
                }
        }
 
+       VkPipelineStageFlags2KHR getReadSrcStageMask() const
+       {
+               return (m_context.getSynchronizationType() == SynchronizationType::LEGACY) ? VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR : VK_PIPELINE_STAGE_2_COPY_BIT_KHR;
+       }
+
 private:
        const VkImageCopy       m_imageCopyRegion;
 };
 
+class ResolveImplementation : public ImplementationBase
+{
+public:
+       ResolveImplementation(OperationContext& context, Resource& resource, const AccessMode mode)
+               : ImplementationBase    (context, resource, mode)
+               , m_imageResolveRegion  (makeImageRegion<VkImageResolve>(resource))
+       {
+               DE_ASSERT(m_mode == ACCESS_MODE_READ);
+       }
+
+       void recordCopyCommand(const VkCommandBuffer cmdBuffer)
+       {
+               const DeviceInterface&  vk = m_context.getDeviceInterface();
+
+               // Resource Image -> Staging image
+               vk.cmdResolveImage(cmdBuffer, m_resource.getImage().handle, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **m_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, &m_imageResolveRegion);
+       }
+
+       VkPipelineStageFlags2KHR getReadSrcStageMask() const
+       {
+               return (m_context.getSynchronizationType() == SynchronizationType::LEGACY) ? VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR : VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR;
+       }
+
+private:
+       VkImageResolve m_imageResolveRegion;
+};
+
 enum Type
 {
        TYPE_COPY,
        TYPE_BLIT,
+       TYPE_RESOLVE,
 };
 
 class Support : public OperationSupport
@@ -1180,7 +1226,7 @@ public:
                DE_ASSERT(resourceDesc.type == RESOURCE_TYPE_IMAGE);
 
                const bool isDepthStencil       = isDepthStencilFormat(resourceDesc.imageFormat);
-               m_requiredQueueFlags            = (isDepthStencil || m_type == TYPE_BLIT ? VK_QUEUE_GRAPHICS_BIT : VK_QUEUE_TRANSFER_BIT);
+               m_requiredQueueFlags            = (isDepthStencil || m_type != TYPE_COPY ? VK_QUEUE_GRAPHICS_BIT : VK_QUEUE_TRANSFER_BIT);
 
                // Don't blit depth/stencil images.
                DE_ASSERT(m_type != TYPE_BLIT || !isDepthStencil);
@@ -1206,8 +1252,10 @@ public:
        {
                if (m_type == TYPE_COPY)
                        return de::MovePtr<Operation>(new CopyImplementation(context, resource, m_mode));
-               else
+               else if (m_type == TYPE_BLIT)
                        return de::MovePtr<Operation>(new BlitImplementation(context, resource, m_mode));
+               else
+                       return de::MovePtr<Operation>(new ResolveImplementation(context, resource, m_mode));
        }
 
        de::MovePtr<Operation> build (OperationContext&, Resource&, Resource&) const
@@ -1252,9 +1300,9 @@ public:
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
                                VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
-                               (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
+                               (VkAccessFlags2KHR)0,                                                   // VkAccessFlags2KHR                            srcAccessMask
                                VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                                m_outResource.getImage().handle,                                // VkImage                                                      image
@@ -1275,7 +1323,7 @@ public:
                const SyncInfo          syncInfo        =
                {
                        VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_READ_BIT,                    // VkAccessFlags                        accessMask;
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,              // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -1286,7 +1334,7 @@ public:
                const SyncInfo          syncInfo        =
                {
                        VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                   // VkAccessFlags                        accessMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -1317,7 +1365,7 @@ public:
                : m_context                     (context)
                , m_inResource          (inResource)
                , m_outResource         (outResource)
-               , m_imageCopyRegion     (makeImageCopyRegion(m_inResource))
+               , m_imageCopyRegion     (makeImageRegion<VkImageCopy>(m_inResource))
        {
                DE_ASSERT(m_inResource.getType() == RESOURCE_TYPE_IMAGE);
                DE_ASSERT(m_outResource.getType() == RESOURCE_TYPE_IMAGE);
@@ -1333,7 +1381,7 @@ public:
                                VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
                                VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                                m_outResource.getImage().handle,                                // VkImage                                                      image
@@ -1354,7 +1402,7 @@ public:
                const SyncInfo          syncInfo        =
                {
                        VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_READ_BIT,                    // VkAccessFlags                        accessMask;
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,              // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -1365,7 +1413,7 @@ public:
                const SyncInfo          syncInfo        =
                {
                        VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                   // VkAccessFlags                        accessMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -1508,7 +1556,7 @@ public:
                                VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
                                VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,  // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                   // VkAccessFlags2KHR                            dstAccessMask
+                               VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,             // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,               // VkImageLayout                                        newLayout
                                **m_colorAttachmentImage,                                               // VkImage                                                      image
@@ -1694,9 +1742,9 @@ public:
                        // Insert a barrier so data written by the shader is available to the host
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
                                m_pipelineStage,                                                        // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_SHADER_WRITE_BIT,                                     // VkAccessFlags2KHR                            srcAccessMask
+                               VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                       // VkAccessFlags2KHR                            srcAccessMask
                                VK_PIPELINE_STAGE_HOST_BIT,                                     // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_HOST_READ_BIT,                                        // VkAccessFlags2KHR                            dstAccessMask
+                               VK_ACCESS_2_HOST_READ_BIT_KHR,                          // VkAccessFlags2KHR                            dstAccessMask
                                **m_hostBuffer,                                                         // VkBuffer                                                     buffer
                                0u,                                                                                     // VkDeviceSize                                         offset
                                m_resource.getBuffer().size                                     // VkDeviceSize                                         size
@@ -1708,10 +1756,10 @@ public:
 
        SyncInfo getInSyncInfo (void) const
        {
-               const VkAccessFlags     accessFlags = (m_mode == ACCESS_MODE_READ ? (m_bufferType == BUFFER_TYPE_UNIFORM ? VK_ACCESS_UNIFORM_READ_BIT
-                                                                                                                                                                                                                        : VK_ACCESS_SHADER_READ_BIT)
-                                                                                                                                         : VK_ACCESS_SHADER_WRITE_BIT);
-               const SyncInfo          syncInfo        =
+               const VkAccessFlags2KHR accessFlags = (m_mode == ACCESS_MODE_READ ? (m_bufferType == BUFFER_TYPE_UNIFORM ? VK_ACCESS_2_UNIFORM_READ_BIT_KHR
+                                                                                                                                                                                                                        : VK_ACCESS_2_SHADER_READ_BIT_KHR)
+                                                                                                                                         : VK_ACCESS_2_SHADER_WRITE_BIT_KHR);
+               const SyncInfo                  syncInfo        =
                {
                        m_pipelineStage,                                // VkPipelineStageFlags         stageMask;
                        accessFlags,                                    // VkAccessFlags                        accessMask;
@@ -1722,7 +1770,7 @@ public:
 
        SyncInfo getOutSyncInfo (void) const
        {
-               const VkAccessFlags     accessFlags = m_mode == ACCESS_MODE_WRITE ? VK_ACCESS_SHADER_WRITE_BIT : 0;
+               const VkAccessFlags     accessFlags = m_mode == ACCESS_MODE_WRITE ? VK_ACCESS_2_SHADER_WRITE_BIT_KHR : 0;
                const SyncInfo          syncInfo        =
                {
                        m_pipelineStage,                                // VkPipelineStageFlags         stageMask;
@@ -1866,7 +1914,7 @@ public:
                                VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                      // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                       // VkAccessFlags2KHR                            srcAccessMask
                                m_pipelineStage,                                                        // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_SHADER_WRITE_BIT,                                     // VkAccessFlags2KHR                            dstAccessMask
+                               VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                       // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                      // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_GENERAL,                                        // VkImageLayout                                        newLayout
                                *m_dstImage,                                                            // VkImage                                                      image
@@ -1885,7 +1933,7 @@ public:
                                        VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                      // VkPipelineStageFlags2KHR                     srcStageMask
                                        (VkAccessFlags)0,                                                       // VkAccessFlags2KHR                            srcAccessMask
                                        VK_PIPELINE_STAGE_TRANSFER_BIT,                         // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                     // VkAccessFlags2KHR                            dstAccessMask
                                        VK_IMAGE_LAYOUT_UNDEFINED,                                      // VkImageLayout                                        oldLayout
                                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,           // VkImageLayout                                        newLayout
                                        *m_srcImage,                                                            // VkImage                                                      image
@@ -1902,9 +1950,9 @@ public:
                        {
                                const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
                                        VK_PIPELINE_STAGE_TRANSFER_BIT,                         // VkPipelineStageFlags2KHR                     srcStageMask
-                                       VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags2KHR                            srcAccessMask
+                                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                     // VkAccessFlags2KHR                            srcAccessMask
                                        m_pipelineStage,                                                        // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_SHADER_READ_BIT,                                      // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_ACCESS_2_SHADER_READ_BIT_KHR,                        // VkAccessFlags2KHR                            dstAccessMask
                                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,           // VkImageLayout                                        oldLayout
                                        VK_IMAGE_LAYOUT_GENERAL,                                        // VkImageLayout                                        newLayout
                                        *m_srcImage,                                                            // VkImage                                                      image
@@ -1927,9 +1975,9 @@ public:
                        {
                                const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
                                        m_pipelineStage,                                                        // VkPipelineStageFlags2KHR                     srcStageMask
-                                       VK_ACCESS_SHADER_WRITE_BIT,                                     // VkAccessFlags2KHR                            srcAccessMask
+                                       VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                       // VkAccessFlags2KHR                            srcAccessMask
                                        VK_PIPELINE_STAGE_TRANSFER_BIT,                         // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_TRANSFER_READ_BIT,                            // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                      // VkAccessFlags2KHR                            dstAccessMask
                                        VK_IMAGE_LAYOUT_GENERAL,                                        // VkImageLayout                                        oldLayout
                                        VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,           // VkImageLayout                                        newLayout
                                        *m_dstImage,                                                            // VkImage                                                      image
@@ -1946,9 +1994,9 @@ public:
                        {
                                const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
                                        VK_PIPELINE_STAGE_TRANSFER_BIT,                         // VkPipelineStageFlags2KHR                     srcStageMask
-                                       VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags2KHR                            srcAccessMask
+                                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                     // VkAccessFlags2KHR                            srcAccessMask
                                        VK_PIPELINE_STAGE_HOST_BIT,                                     // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_HOST_READ_BIT,                                        // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_ACCESS_2_HOST_READ_BIT_KHR,                          // VkAccessFlags2KHR                            dstAccessMask
                                        **m_hostBuffer,                                                         // VkBuffer                                                     buffer
                                        0u,                                                                                     // VkDeviceSize                                         offset
                                        m_hostBufferSizeBytes                                           // VkDeviceSize                                         size
@@ -1961,7 +2009,7 @@ public:
 
        SyncInfo getInSyncInfo (void) const
        {
-               const VkAccessFlags     accessFlags = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_SHADER_READ_BIT : 0);
+               const VkAccessFlags     accessFlags = (m_mode == ACCESS_MODE_READ ? VK_ACCESS_2_SHADER_READ_BIT_KHR : 0);
                const SyncInfo          syncInfo        =
                {
                        m_pipelineStage,                        // VkPipelineStageFlags         stageMask;
@@ -1973,7 +2021,7 @@ public:
 
        SyncInfo getOutSyncInfo (void) const
        {
-               const VkAccessFlags     accessFlags = (m_mode == ACCESS_MODE_WRITE ? VK_ACCESS_SHADER_WRITE_BIT : 0);
+               const VkAccessFlags     accessFlags = (m_mode == ACCESS_MODE_WRITE ? VK_ACCESS_2_SHADER_WRITE_BIT_KHR : 0);
                const SyncInfo          syncInfo        =
                {
                        m_pipelineStage,                        // VkPipelineStageFlags         stageMask;
@@ -2408,9 +2456,9 @@ public:
        {
                const SyncInfo          syncInfo        =
                {
-                       m_pipelineStage,                                // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_SHADER_READ_BIT,              // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,              // VkImageLayout                        imageLayout;
+                       m_pipelineStage,                                        // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_SHADER_READ_BIT_KHR,        // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -2419,9 +2467,9 @@ public:
        {
                const SyncInfo          syncInfo        =
                {
-                       m_pipelineStage,                                // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_SHADER_WRITE_BIT,             // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,              // VkImageLayout                        imageLayout;
+                       m_pipelineStage,                                        // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_SHADER_WRITE_BIT_KHR,       // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -2610,7 +2658,7 @@ public:
                                        VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
                                        (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
                                        m_pipelineStage,                                                                // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_SHADER_WRITE_BIT,                                             // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                               // VkAccessFlags2KHR                            dstAccessMask
                                        VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                        VK_IMAGE_LAYOUT_GENERAL,                                                // VkImageLayout                                        newLayout
                                        m_outResource.getImage().handle,                                // VkImage                                                      image
@@ -2620,7 +2668,7 @@ public:
                                        VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
                                        (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
                                        m_pipelineStage,                                                                // VkPipelineStageFlags2KHR                     dstStageMask
-                                       VK_ACCESS_SHADER_READ_BIT,                                              // VkAccessFlags2KHR                            dstAccessMask
+                                       VK_ACCESS_2_SHADER_READ_BIT_KHR,                                // VkAccessFlags2KHR                            dstAccessMask
                                        VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                        VK_IMAGE_LAYOUT_GENERAL,                                                // VkImageLayout                                        newLayout
                                        m_inResource.getImage().handle,                                 // VkImage                                                      image
@@ -2650,9 +2698,9 @@ public:
        {
                const SyncInfo          syncInfo        =
                {
-                       m_pipelineStage,                        // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_SHADER_READ_BIT,      // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_GENERAL,        // VkImageLayout                        imageLayout;
+                       m_pipelineStage,                                        // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_SHADER_READ_BIT_KHR,        // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_GENERAL,                        // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -2661,9 +2709,9 @@ public:
        {
                const SyncInfo          syncInfo        =
                {
-                       m_pipelineStage,                        // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_SHADER_WRITE_BIT,     // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_GENERAL,        // VkImageLayout                        imageLayout;
+                       m_pipelineStage,                                        // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_SHADER_WRITE_BIT_KHR,       // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_GENERAL,                        // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -2776,6 +2824,195 @@ private:
        const DispatchCall                      m_dispatchCall;
 };
 
+class MSImageImplementation : public Operation
+{
+public:
+       MSImageImplementation(OperationContext& context,
+                                                 Resource&                     resource)
+               : m_context             (context)
+               , m_resource    (resource)
+               , m_hostBufferSizeBytes(getPixelBufferSize(m_resource.getImage().format, m_resource.getImage().extent))
+       {
+               const DeviceInterface&                  vk                      = m_context.getDeviceInterface();
+               const InstanceInterface&                vki                     = m_context.getInstanceInterface();
+               const VkDevice                                  device          = m_context.getDevice();
+               const VkPhysicalDevice                  physDevice      = m_context.getPhysicalDevice();
+               const VkPhysicalDeviceFeatures  features        = getPhysicalDeviceFeatures(vki, physDevice);
+               Allocator&                                              allocator       = m_context.getAllocator();
+
+               requireStorageImageSupport(vki, physDevice, m_resource.getImage().format);
+               if (!features.shaderStorageImageMultisample)
+                       TCU_THROW(NotSupportedError, "Using multisample images as storage is not supported");
+
+               VkBufferCreateInfo bufferCreateInfo = makeBufferCreateInfo(m_hostBufferSizeBytes, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT);
+               m_hostBuffer = de::MovePtr<Buffer>(new Buffer(vk, device, allocator, bufferCreateInfo, MemoryRequirement::HostVisible));
+               const Allocation& alloc = m_hostBuffer->getAllocation();
+               fillPattern(alloc.getHostPtr(), m_hostBufferSizeBytes);
+               flushAlloc(vk, device, alloc);
+
+               const ImageResource&  image             = m_resource.getImage();
+               const VkImageViewType viewType  = getImageViewType(image.imageType);
+               m_imageView = makeImageView(vk, device, image.handle, viewType, image.format, image.subresourceRange);
+
+               // Prepare descriptors
+               {
+                       m_descriptorSetLayout = DescriptorSetLayoutBuilder()
+                               .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT)
+                               .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,  VK_SHADER_STAGE_COMPUTE_BIT)
+                               .build(vk, device);
+
+                       m_descriptorPool = DescriptorPoolBuilder()
+                               .addType(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)
+                               .addType(VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
+                               .build(vk, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+
+                       m_descriptorSet = makeDescriptorSet(vk, device, *m_descriptorPool, *m_descriptorSetLayout);
+
+                       const VkDescriptorBufferInfo bufferInfo = makeDescriptorBufferInfo(**m_hostBuffer, 0u, m_hostBufferSizeBytes);
+                       const VkDescriptorImageInfo  imageInfo  = makeDescriptorImageInfo(DE_NULL, *m_imageView, VK_IMAGE_LAYOUT_GENERAL);
+
+                       DescriptorSetUpdateBuilder()
+                               .writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, &bufferInfo)
+                               .writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,  &imageInfo)
+                               .update(vk, device);
+               }
+
+               // Create pipeline
+               const Unique<VkShaderModule> shaderModule(createShaderModule(vk, device, context.getBinaryCollection().get("comp"), (VkShaderModuleCreateFlags)0));
+               m_pipelineLayout        = makePipelineLayout (vk, device, *m_descriptorSetLayout);
+               m_pipeline                      = makeComputePipeline(vk, device, *m_pipelineLayout, *shaderModule, DE_NULL, context.getPipelineCacheData());
+       }
+
+       void recordCommands(const VkCommandBuffer cmdBuffer)
+       {
+               const DeviceInterface&          vk                                              = m_context.getDeviceInterface();
+               SynchronizationWrapperPtr       synchronizationWrapper  = getSynchronizationWrapper(m_context.getSynchronizationType(), vk, DE_FALSE);
+
+               // change image layout
+               {
+                       const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,        // VkPipelineStageFlags2KHR                     srcStageMask
+                               (VkAccessFlags)0,                                                       // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,     // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                       // VkAccessFlags2KHR                            dstAccessMask
+                               VK_IMAGE_LAYOUT_UNDEFINED,                                      // VkImageLayout                                        oldLayout
+                               VK_IMAGE_LAYOUT_GENERAL,                                        // VkImageLayout                                        newLayout
+                               m_resource.getImage().handle,                           // VkImage                                                      image
+                               m_resource.getImage().subresourceRange          // VkImageSubresourceRange                      subresourceRange
+                       );
+                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
+                       synchronizationWrapper->cmdPipelineBarrier(cmdBuffer, &dependencyInfo);
+               }
+
+               // execute shader
+               vk.cmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_pipeline);
+               vk.cmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_pipelineLayout, 0u, 1u, &*m_descriptorSet, 0u, DE_NULL);
+               vk.cmdDispatch(cmdBuffer, m_resource.getImage().extent.width, m_resource.getImage().extent.height, 1u);
+       }
+
+       SyncInfo getInSyncInfo(void) const
+       {
+               DE_ASSERT(false);
+               return emptySyncInfo;
+       }
+
+       SyncInfo getOutSyncInfo(void) const
+       {
+               return
+               {
+                       VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR,     // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                       // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_GENERAL,                                        // VkImageLayout                        imageLayout;
+               };
+       }
+
+       Data getData(void) const
+       {
+               return getHostBufferData(m_context, *m_hostBuffer, m_hostBufferSizeBytes);
+       }
+
+       void setData(const Data&)
+       {
+               DE_ASSERT(false);
+       }
+
+private:
+       OperationContext&                       m_context;
+       Resource&                                       m_resource;
+       Move<VkImageView>                       m_imageView;
+
+       const VkDeviceSize                      m_hostBufferSizeBytes;
+       de::MovePtr<Buffer>                     m_hostBuffer;
+
+       Move<VkDescriptorPool>          m_descriptorPool;
+       Move<VkDescriptorSetLayout>     m_descriptorSetLayout;
+       Move<VkDescriptorSet>           m_descriptorSet;
+       Move<VkPipelineLayout>          m_pipelineLayout;
+       Move<VkPipeline>                        m_pipeline;
+};
+
+class MSImageSupport : public OperationSupport
+{
+public:
+       MSImageSupport(const ResourceDescription& resourceDesc)
+               : m_resourceDesc        (resourceDesc)
+       {
+               DE_ASSERT(m_resourceDesc.type == RESOURCE_TYPE_IMAGE);
+       }
+
+       void initPrograms (SourceCollections& programCollection) const
+       {
+               std::stringstream source;
+               source <<
+                       "#version 440\n"
+                       "\n"
+                       "layout(local_size_x = 1) in;\n"
+                       "layout(set = 0, binding = 0, std430) readonly buffer Input {\n"
+                       "    uint data[];\n"
+                       "} inData;\n"
+                       "layout(set = 0, binding = 1, r32ui) writeonly uniform uimage2DMS msImage;\n"
+                       "\n"
+                       "void main (void)\n"
+                       "{\n"
+                       "  int  gx    = int(gl_GlobalInvocationID.x);\n"
+                       "  int  gy    = int(gl_GlobalInvocationID.y);\n"
+                       "  uint value = inData.data[gy * " << m_resourceDesc.size.x() << " + gx];\n"
+                       "  for (int sampleNdx = 0; sampleNdx < " << m_resourceDesc.imageSamples << "; ++sampleNdx)\n"
+                       "    imageStore(msImage, ivec2(gx, gy), sampleNdx, uvec4(value));\n"
+                       "}\n";
+               programCollection.glslSources.add("comp") << glu::ComputeSource(source.str().c_str());
+       }
+
+       deUint32 getInResourceUsageFlags (void) const
+       {
+               return 0;
+       }
+
+       deUint32 getOutResourceUsageFlags (void) const
+       {
+               return VK_IMAGE_USAGE_STORAGE_BIT;
+       }
+
+       VkQueueFlags getQueueFlags (const OperationContext&) const
+       {
+               return VK_QUEUE_COMPUTE_BIT;
+       }
+
+       de::MovePtr<Operation> build (OperationContext& context, Resource& resource) const
+       {
+               return de::MovePtr<Operation>(new MSImageImplementation(context, resource));
+       }
+
+       de::MovePtr<Operation> build (OperationContext&, Resource&, Resource&) const
+       {
+               DE_ASSERT(0);
+               return de::MovePtr<Operation>();
+       }
+
+private:
+       const ResourceDescription       m_resourceDesc;
+};
+
 } // ShaderAccess ns
 
 namespace CopyBufferToImage
@@ -2810,10 +3047,10 @@ public:
                SynchronizationWrapperPtr       synchronizationWrapper  = getSynchronizationWrapper(m_context.getSynchronizationType(), vk, DE_FALSE);
 
                const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                       VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                      // VkPipelineStageFlags2KHR                     srcStageMask
+                       VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                        // VkPipelineStageFlags2KHR                     srcStageMask
                        (VkAccessFlags)0,                                                                       // VkAccessFlags2KHR                            srcAccessMask
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                                         // VkPipelineStageFlags2KHR                     dstStageMask
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                                           // VkAccessFlags2KHR                            dstAccessMask
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                           // VkPipelineStageFlags2KHR                     dstStageMask
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                                     // VkAccessFlags2KHR                            dstAccessMask
                        VK_IMAGE_LAYOUT_UNDEFINED,                                                      // VkImageLayout                                        oldLayout
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                           // VkImageLayout                                        newLayout
                        m_resource.getImage().handle,                                           // VkImage                                                      image
@@ -2834,8 +3071,8 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                   // VkAccessFlags                        accessMask;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -2896,10 +3133,10 @@ public:
                // Resource -> Image
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                      // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                        // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                                       // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                         // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                           // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                           // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                                     // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                                      // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                           // VkImageLayout                                        newLayout
                                **m_image,                                                                                      // VkImage                                                      image
@@ -2913,10 +3150,10 @@ public:
                // Image -> Host buffer
                {
                        const VkImageMemoryBarrier2KHR imageLayoutBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                         // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                           // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                         // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_READ_BIT,                                            // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                           // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                                     // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                           // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                                      // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                           // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,                           // VkImageLayout                                        newLayout
                                **m_image,                                                                                      // VkImage                                                      image
@@ -2928,10 +3165,10 @@ public:
                        vk.cmdCopyImageToBuffer(cmdBuffer, **m_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **m_hostBuffer, 1u, &copyRegion);
 
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                         // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                           // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_HOST_BIT,                                                     // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_HOST_READ_BIT,                                                        // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                           // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                                     // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                                       // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_HOST_READ_BIT_KHR,                                          // VkAccessFlags2KHR                            dstAccessMask
                                **m_hostBuffer,                                                                         // VkBuffer                                                     buffer
                                0u,                                                                                                     // VkDeviceSize                                         offset
                                m_resource.getBuffer().size                                                     // VkDeviceSize                                         size
@@ -2945,9 +3182,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_READ_BIT,            // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,              // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -3055,19 +3292,19 @@ public:
                SynchronizationWrapperPtr       synchronizationWrapper  = getSynchronizationWrapper(m_context.getSynchronizationType(), vk, DE_FALSE);
 
                const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                       VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
+                       VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
                        (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                       VK_ACCESS_TRANSFER_READ_BIT,                                    // VkAccessFlags2KHR                            dstAccessMask
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                              // VkAccessFlags2KHR                            dstAccessMask
                        m_inResource.getBuffer().handle,                                // VkBuffer                                                     buffer
                        0u,                                                                                             // VkDeviceSize                                         offset
                        m_inResource.getBuffer().size                                   // VkDeviceSize                                         size
                );
                const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                       VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
+                       VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
                        (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                        VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                        m_outResource.getImage().handle,                                // VkImage                                                      image
@@ -3083,8 +3320,8 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_READ_BIT,                    // VkAccessFlags                        accessMask;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,              // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -3094,8 +3331,8 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                   // VkAccessFlags                        accessMask;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -3212,10 +3449,10 @@ public:
                // Host buffer -> Image
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                                **m_image,                                                                              // VkImage                                                      image
@@ -3229,10 +3466,10 @@ public:
                // Image -> Resource
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_READ_BIT,                                    // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                              // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,                   // VkImageLayout                                        newLayout
                                **m_image,                                                                              // VkImage                                                      image
@@ -3254,9 +3491,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,           // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,           // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                     // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                                      // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -3314,10 +3551,10 @@ public:
                // Insert a barrier so data written by the transfer is available to the host
                {
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_HOST_BIT,                                             // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_HOST_READ_BIT,                                                // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                               // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_HOST_READ_BIT_KHR,                                  // VkAccessFlags2KHR                            dstAccessMask
                                **m_hostBuffer,                                                                 // VkBuffer                                                     buffer
                                0u,                                                                                             // VkDeviceSize                                         offset
                                VK_WHOLE_SIZE                                                                   // VkDeviceSize                                         size
@@ -3331,8 +3568,8 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_READ_BIT,                    // VkAccessFlags                        accessMask;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,              // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
                return syncInfo;
@@ -3382,20 +3619,20 @@ public:
 
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_READ_BIT,                                    // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_READ_BIT_KHR,                              // VkAccessFlags2KHR                            dstAccessMask
                                VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                                VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                                m_inResource.getImage().handle,                                 // VkImage                                                      image
                                m_inResource.getImage().subresourceRange                // VkImageSubresourceRange                      subresourceRange
                        );
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
                                (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,                   // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                                m_outResource.getBuffer().handle,                               // VkBuffer                                                     buffer
                                0u,                                                                                             // VkDeviceSize                                         offset
                                m_outResource.getBuffer().size                                  // VkDeviceSize                                         size
@@ -3411,9 +3648,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_READ_BIT,            // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_READ_BIT_KHR,              // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -3422,9 +3659,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,           // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -3530,11 +3767,15 @@ public:
                const DeviceInterface&          vk                                              = m_context.getDeviceInterface();
                SynchronizationWrapperPtr       synchronizationWrapper  = getSynchronizationWrapper(m_context.getSynchronizationType(), vk, DE_FALSE);
 
+               VkPipelineStageFlags2KHR dstStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR;
+               if (m_context.getSynchronizationType() == SynchronizationType::SYNCHRONIZATION2)
+                       dstStageMask = VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR;
+
                const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                       VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
+                       VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                // VkPipelineStageFlags2KHR                     srcStageMask
                        (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                                 // VkPipelineStageFlags2KHR                     dstStageMask
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags2KHR                            dstAccessMask
+                       dstStageMask,                                                                   // VkPipelineStageFlags2KHR                     dstStageMask
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
                        VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,                   // VkImageLayout                                        newLayout
                        m_resource.getImage().handle,                                   // VkImage                                                      image
@@ -3556,13 +3797,16 @@ public:
 
        SyncInfo getOutSyncInfo (void) const
        {
-               const SyncInfo syncInfo =
+               VkPipelineStageFlags2KHR stageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR;
+               if (m_context.getSynchronizationType() == SynchronizationType::SYNCHRONIZATION2)
+                       stageMask = VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR;
+
+               return
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,                 // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,                   // VkAccessFlags                        accessMask;
+                       stageMask,                                                              // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
                        VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,   // VkImageLayout                        imageLayout;
                };
-               return syncInfo;
        }
 
        Data getData (void) const
@@ -3736,14 +3980,14 @@ public:
                // Change color attachment image layout
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
-                               (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,  // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                   // VkAccessFlags2KHR                            dstAccessMask
-                               VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
-                               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,               // VkImageLayout                                        newLayout
-                               m_colorImage,                                                                   // VkImage                                                      image
-                               m_colorSubresourceRange                                                 // VkImageSubresourceRange                      subresourceRange
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                                // VkPipelineStageFlags2KHR                     srcStageMask
+                               (VkAccessFlags)0,                                                                               // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,    // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
+                               VK_IMAGE_LAYOUT_UNDEFINED,                                                              // VkImageLayout                                        oldLayout
+                               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                               // VkImageLayout                                        newLayout
+                               m_colorImage,                                                                                   // VkImage                                                      image
+                               m_colorSubresourceRange                                                                 // VkImageSubresourceRange                      subresourceRange
                        );
                        VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
                        synchronizationWrapper->cmdPipelineBarrier(cmdBuffer, &dependencyInfo);
@@ -3797,9 +4041,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,          // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                           // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                       // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,    // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,                             // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                               // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -4025,17 +4269,17 @@ public:
        SyncInfo getOutSyncInfo (void) const
        {
                SyncInfo syncInfo;
-               syncInfo.stageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT;
+               syncInfo.stageMask = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR;
 
                switch (m_resource.getImage().subresourceRange.aspectMask)
                {
                        case VK_IMAGE_ASPECT_COLOR_BIT:
-                               syncInfo.accessMask             = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
+                               syncInfo.accessMask             = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR;
                                syncInfo.imageLayout    = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
                        break;
                        case VK_IMAGE_ASPECT_STENCIL_BIT:
                        case VK_IMAGE_ASPECT_DEPTH_BIT:
-                               syncInfo.accessMask             = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
+                               syncInfo.accessMask             = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR;
                                syncInfo.imageLayout    = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
                        break;
                        default:
@@ -4176,14 +4420,14 @@ public:
                // Change color attachment image layout
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
-                               (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,  // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                   // VkAccessFlags2KHR                            dstAccessMask
-                               VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
-                               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,               // VkImageLayout                                        newLayout
-                               **m_colorAttachmentImage,                                               // VkImage                                                      image
-                               m_colorImageSubresourceRange                                    // VkImageSubresourceRange                      subresourceRange
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                                // VkPipelineStageFlags2KHR                     srcStageMask
+                               (VkAccessFlags)0,                                                                               // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,    // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
+                               VK_IMAGE_LAYOUT_UNDEFINED,                                                              // VkImageLayout                                        oldLayout
+                               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                               // VkImageLayout                                        newLayout
+                               **m_colorAttachmentImage,                                                               // VkImage                                                      image
+                               m_colorImageSubresourceRange                                                    // VkImageSubresourceRange                      subresourceRange
                        );
                        VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
                        synchronizationWrapper->cmdPipelineBarrier(cmdBuffer, &dependencyInfo);
@@ -4332,9 +4576,9 @@ public:
                // Insert a barrier so data written by the shader is available to the host
                const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
                        m_pipelineStage,                                                        // VkPipelineStageFlags2KHR                     srcStageMask
-                       VK_ACCESS_SHADER_WRITE_BIT,                                     // VkAccessFlags2KHR                            srcAccessMask
-                       VK_PIPELINE_STAGE_HOST_BIT,                                     // VkPipelineStageFlags2KHR                     dstStageMask
-                       VK_ACCESS_HOST_READ_BIT,                                        // VkAccessFlags2KHR                            dstAccessMask
+                       VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                       // VkAccessFlags2KHR                            srcAccessMask
+                       VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                       // VkPipelineStageFlags2KHR                     dstStageMask
+                       VK_ACCESS_2_HOST_READ_BIT_KHR,                          // VkAccessFlags2KHR                            dstAccessMask
                        **m_hostBuffer,                                                         // VkBuffer                                                     buffer
                        0u,                                                                                     // VkDeviceSize                                         offset
                        m_hostBufferSizeBytes                                           // VkDeviceSize                                         size
@@ -4347,9 +4591,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,    // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_INDIRECT_COMMAND_READ_BIT,    // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR,      // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR,      // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                                      // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -4450,9 +4694,9 @@ public:
        {
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_TRANSFER_BIT,         // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_TRANSFER_WRITE_BIT,           // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                      // VkImageLayout                        imageLayout;
+                       VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR,   // VkPipelineStageFlags         stageMask;
+                       VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR,             // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -4628,29 +4872,51 @@ public:
 namespace VertexInput
 {
 
+enum DrawMode
+{
+       DRAW_MODE_VERTEX        = 0,
+       DRAW_MODE_INDEXED,
+};
+
 class Implementation : public Operation
 {
 public:
-       Implementation (OperationContext& context, Resource& resource)
+       Implementation (OperationContext& context, Resource& resource, DrawMode drawMode)
                : m_context             (context)
                , m_resource    (resource)
+               , m_drawMode    (drawMode)
        {
                requireFeaturesForSSBOAccess (m_context, VK_SHADER_STAGE_VERTEX_BIT);
 
                const DeviceInterface&          vk                              = context.getDeviceInterface();
                const VkDevice                          device                  = context.getDevice();
                Allocator&                                      allocator               = context.getAllocator();
+               VkFormat                                        attributeFormat = VK_FORMAT_R32G32B32A32_UINT;
                const VkDeviceSize                      dataSizeBytes   = m_resource.getBuffer().size;
 
-               m_outputBuffer = de::MovePtr<Buffer>(new Buffer(vk, device, allocator,
-                       makeBufferCreateInfo(dataSizeBytes, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT), MemoryRequirement::HostVisible));
-
+               // allocate ssbo that will store data used for verification
                {
+                       m_outputBuffer = de::MovePtr<Buffer>(new Buffer(vk, device, allocator,
+                               makeBufferCreateInfo(dataSizeBytes, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT), MemoryRequirement::HostVisible));
+
                        const Allocation& alloc = m_outputBuffer->getAllocation();
                        deMemset(alloc.getHostPtr(), 0, static_cast<size_t>(dataSizeBytes));
                        flushAlloc(vk, device, alloc);
                }
 
+               // allocate buffer that will be used for vertex attributes when we use resource for indices
+               if (m_drawMode == DRAW_MODE_INDEXED)
+               {
+                       attributeFormat = VK_FORMAT_R32_UINT;
+
+                       m_inputBuffer = de::MovePtr<Buffer>(new Buffer(vk, device, allocator,
+                               makeBufferCreateInfo(dataSizeBytes, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT), MemoryRequirement::HostVisible));
+
+                       const Allocation& alloc = m_inputBuffer->getAllocation();
+                       fillPattern(alloc.getHostPtr(), dataSizeBytes, true);
+                       flushAlloc(vk, device, alloc);
+               }
+
                m_descriptorSetLayout = DescriptorSetLayoutBuilder()
                        .addSingleBinding       (VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_SHADER_STAGE_VERTEX_BIT)
                        .build                          (vk, device);
@@ -4683,7 +4949,7 @@ public:
                m_pipeline = GraphicsPipelineBuilder()
                        .setPrimitiveTopology                   (VK_PRIMITIVE_TOPOLOGY_POINT_LIST)
                        .setRenderSize                                  (tcu::IVec2(static_cast<int>(m_colorImageExtent.width), static_cast<int>(m_colorImageExtent.height)))
-                       .setVertexInputSingleAttribute  (VK_FORMAT_R32G32B32A32_UINT, tcu::getPixelSize(mapVkFormat(VK_FORMAT_R32G32B32A32_UINT)))
+                       .setVertexInputSingleAttribute  (attributeFormat, tcu::getPixelSize(mapVkFormat(attributeFormat)))
                        .setShader                                              (vk, device, VK_SHADER_STAGE_VERTEX_BIT,        context.getBinaryCollection().get("input_vert"), DE_NULL)
                        .setShader                                              (vk, device, VK_SHADER_STAGE_FRAGMENT_BIT,      context.getBinaryCollection().get("input_frag"), DE_NULL)
                        .build                                                  (vk, device, *m_pipelineLayout, *m_renderPass, context.getPipelineCacheData());
@@ -4698,14 +4964,14 @@ public:
                // Change color attachment image layout
                {
                        const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
-                               VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                              // VkPipelineStageFlags2KHR                     srcStageMask
-                               (VkAccessFlags)0,                                                               // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,  // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                   // VkAccessFlags2KHR                            dstAccessMask
-                               VK_IMAGE_LAYOUT_UNDEFINED,                                              // VkImageLayout                                        oldLayout
-                               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,               // VkImageLayout                                        newLayout
-                               **m_colorAttachmentImage,                                               // VkImage                                                      image
-                               m_colorImageSubresourceRange                                    // VkImageSubresourceRange                      subresourceRange
+                               VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR,                                // VkPipelineStageFlags2KHR                     srcStageMask
+                               (VkAccessFlags)0,                                                                               // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,    // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR,                             // VkAccessFlags2KHR                            dstAccessMask
+                               VK_IMAGE_LAYOUT_UNDEFINED,                                                              // VkImageLayout                                        oldLayout
+                               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                               // VkImageLayout                                        newLayout
+                               **m_colorAttachmentImage,                                                               // VkImage                                                      image
+                               m_colorImageSubresourceRange                                                    // VkImageSubresourceRange                      subresourceRange
                        );
                        VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
                        synchronizationWrapper->cmdPipelineBarrier(cmdBuffer, &dependencyInfo);
@@ -4720,22 +4986,31 @@ public:
 
                vk.cmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
                vk.cmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipelineLayout, 0u, 1u, &m_descriptorSet.get(), 0u, DE_NULL);
+
+               const VkDeviceSize vertexBufferOffset   = 0ull;
+               if (m_drawMode == DRAW_MODE_VERTEX)
                {
-                       const VkDeviceSize vertexBufferOffset = 0ull;
+                       const deUint32 count = static_cast<deUint32>(dataSizeBytes / sizeof(tcu::UVec4));
                        vk.cmdBindVertexBuffers(cmdBuffer, 0u, 1u, &m_resource.getBuffer().handle, &vertexBufferOffset);
+                       vk.cmdDraw(cmdBuffer, count, 1u, 0u, 0u);
+               }
+               else // (m_drawMode == DRAW_MODE_INDEXED)
+               {
+                       const deUint32 count = static_cast<deUint32>(dataSizeBytes / sizeof(deUint32));
+                       vk.cmdBindVertexBuffers(cmdBuffer, 0u, 1u, &**m_inputBuffer, &vertexBufferOffset);
+                       vk.cmdBindIndexBuffer(cmdBuffer, m_resource.getBuffer().handle, 0u, VK_INDEX_TYPE_UINT32);
+                       vk.cmdDrawIndexed(cmdBuffer, count, 1, 0, 0, 0);
                }
-
-               vk.cmdDraw(cmdBuffer, static_cast<deUint32>(dataSizeBytes / sizeof(tcu::UVec4)), 1u, 0u, 0u);
 
                endRenderPass(vk, cmdBuffer);
 
                // Insert a barrier so data written by the shader is available to the host
                {
                        const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
-                               VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                    // VkPipelineStageFlags2KHR                     srcStageMask
-                               VK_ACCESS_SHADER_WRITE_BIT,                                             // VkAccessFlags2KHR                            srcAccessMask
-                               VK_PIPELINE_STAGE_HOST_BIT,                                             // VkPipelineStageFlags2KHR                     dstStageMask
-                               VK_ACCESS_HOST_READ_BIT,                                                // VkAccessFlags2KHR                            dstAccessMask
+                               VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR,              // VkPipelineStageFlags2KHR                     srcStageMask
+                               VK_ACCESS_2_SHADER_WRITE_BIT_KHR,                               // VkAccessFlags2KHR                            srcAccessMask
+                               VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                               // VkPipelineStageFlags2KHR                     dstStageMask
+                               VK_ACCESS_2_HOST_READ_BIT_KHR,                                  // VkAccessFlags2KHR                            dstAccessMask
                                **m_outputBuffer,                                                               // VkBuffer                                                     buffer
                                0u,                                                                                             // VkDeviceSize                                         offset
                                m_resource.getBuffer().size                                             // VkDeviceSize                                         size
@@ -4747,11 +5022,28 @@ public:
 
        SyncInfo getInSyncInfo (void) const
        {
+               const bool                                      usingIndexedDraw        = (m_drawMode == DRAW_MODE_INDEXED);
+               VkPipelineStageFlags2KHR        stageMask                       = VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR;
+               VkAccessFlags2KHR                       accessMask                      = usingIndexedDraw ? VK_ACCESS_2_INDEX_READ_BIT_KHR
+                                                                                                                                                  : VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR;
+
+               if (m_context.getSynchronizationType() == SynchronizationType::SYNCHRONIZATION2)
+               {
+                       // test new stages added with VK_KHR_synchronization2 (no need to further duplicate those tests);
+                       // with this operation we can test pre_rasterization, index_input and attribute_input flags;
+                       // since this operation is executed for three buffers of different size we use diferent flags depending on the size
+                       if (m_resource.getBuffer().size > MAX_UPDATE_BUFFER_SIZE)
+                               stageMask = VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR;
+                       else
+                               stageMask = usingIndexedDraw ? VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR
+                                                                                        : VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR;
+               }
+
                const SyncInfo syncInfo =
                {
-                       VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,             // VkPipelineStageFlags         stageMask;
-                       VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,    // VkAccessFlags                        accessMask;
-                       VK_IMAGE_LAYOUT_UNDEFINED,                              // VkImageLayout                        imageLayout;
+                       stageMask,                                                                      // VkPipelineStageFlags         stageMask;
+                       accessMask,                                                                     // VkAccessFlags                        accessMask;
+                       VK_IMAGE_LAYOUT_UNDEFINED,                                      // VkImageLayout                        imageLayout;
                };
                return syncInfo;
        }
@@ -4774,9 +5066,9 @@ public:
 private:
        OperationContext&                       m_context;
        Resource&                                       m_resource;
+       DrawMode                                        m_drawMode;
+       de::MovePtr<Buffer>                     m_inputBuffer;
        de::MovePtr<Buffer>                     m_outputBuffer;
-       de::MovePtr<Buffer>                     m_indexBuffer;
-       de::MovePtr<Buffer>                     m_indirectBuffer;
        Move<VkRenderPass>                      m_renderPass;
        Move<VkFramebuffer>                     m_framebuffer;
        Move<VkPipelineLayout>          m_pipelineLayout;
@@ -4794,30 +5086,45 @@ private:
 class Support : public OperationSupport
 {
 public:
-       Support (const ResourceDescription& resourceDesc)
+       Support(const ResourceDescription& resourceDesc, DrawMode drawMode)
                : m_resourceDesc        (resourceDesc)
+               , m_drawMode            (drawMode)
        {
-               DE_ASSERT(m_resourceDesc.type == RESOURCE_TYPE_BUFFER);
+               DE_ASSERT(m_resourceDesc.type == RESOURCE_TYPE_BUFFER || m_resourceDesc.type == RESOURCE_TYPE_INDEX_BUFFER);
        }
 
        void initPrograms (SourceCollections& programCollection) const
        {
                // Vertex
                {
-                       int vertexStride = sizeof(tcu::UVec4);
                        std::ostringstream src;
-                       src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_440) << "\n"
-                               << "\n"
-                               << "layout(location = 0) in uvec4 v_in_data;\n"
-                               << "layout(set = 0, binding = 0, std140) writeonly buffer Output {\n"
-                               << "    uvec4 data[" << m_resourceDesc.size.x()/vertexStride << "];\n"
-                               << "} b_out;\n"
-                               << "\n"
-                               << "void main (void)\n"
-                               << "{\n"
-                               << "    b_out.data[gl_VertexIndex] = v_in_data;\n"
-                               << "    gl_PointSize = 1.0f;\n"
-                               << "}\n";
+                       src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_440) << "\n";
+                       if (m_drawMode == DRAW_MODE_VERTEX)
+                       {
+                               src << "layout(location = 0) in uvec4 v_in_data;\n"
+                                       << "layout(set = 0, binding = 0, std140) writeonly buffer Output {\n"
+                                       << "    uvec4 data[" << m_resourceDesc.size.x() / sizeof(tcu::UVec4) << "];\n"
+                                       << "} b_out;\n"
+                                       << "\n"
+                                       << "void main (void)\n"
+                                       << "{\n"
+                                       << "    b_out.data[gl_VertexIndex] = v_in_data;\n"
+                                       << "    gl_PointSize = 1.0f;\n"
+                                       << "}\n";
+                       }
+                       else // DRAW_MODE_INDEXED
+                       {
+                               src << "layout(location = 0) in uint v_in_data;\n"
+                                       << "layout(set = 0, binding = 0, std430) writeonly buffer Output {\n"
+                                       << "    uint data[" << m_resourceDesc.size.x() / sizeof(deUint32) << "];\n"
+                                       << "} b_out;\n"
+                                       << "\n"
+                                       << "void main (void)\n"
+                                       << "{\n"
+                                       << "    b_out.data[gl_VertexIndex] = v_in_data;\n"
+                                       << "    gl_PointSize = 1.0f;\n"
+                                       << "}\n";
+                       }
                        programCollection.glslSources.add("input_vert") << glu::VertexSource(src.str());
                }
 
@@ -4838,7 +5145,7 @@ public:
 
        deUint32 getInResourceUsageFlags (void) const
        {
-               return VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
+               return (m_drawMode == DRAW_MODE_VERTEX) ? VK_BUFFER_USAGE_VERTEX_BUFFER_BIT : VK_BUFFER_USAGE_INDEX_BUFFER_BIT;
        }
 
        deUint32 getOutResourceUsageFlags (void) const
@@ -4846,15 +5153,14 @@ public:
                return VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
        }
 
-       VkQueueFlags getQueueFlags (const OperationContext& context) const
+       VkQueueFlags getQueueFlags (const OperationContext&) const
        {
-               DE_UNREF(context);
                return VK_QUEUE_GRAPHICS_BIT;
        }
 
        de::MovePtr<Operation> build (OperationContext& context, Resource& resource) const
        {
-               return de::MovePtr<Operation>(new Implementation(context, resource));
+               return de::MovePtr<Operation>(new Implementation(context, resource, m_drawMode));
        }
 
        de::MovePtr<Operation> build (OperationContext&, Resource&, Resource&) const
@@ -4865,6 +5171,7 @@ public:
 
 private:
        const ResourceDescription       m_resourceDesc;
+       const DrawMode                          m_drawMode;
 };
 
 } // VertexInput
@@ -4932,7 +5239,7 @@ Resource::Resource (OperationContext& context, const ResourceDescription& desc,
        const VkPhysicalDevice          physDevice      = context.getPhysicalDevice();
        Allocator&                                      allocator       = context.getAllocator();
 
-       if (m_type == RESOURCE_TYPE_BUFFER || isIndirectBuffer(m_type))
+       if (m_type == RESOURCE_TYPE_BUFFER || m_type == RESOURCE_TYPE_INDEX_BUFFER || isIndirectBuffer(m_type))
        {
                m_bufferData.offset                                     = 0u;
                m_bufferData.size                                       = static_cast<VkDeviceSize>(desc.size.x());
@@ -4953,7 +5260,7 @@ Resource::Resource (OperationContext& context, const ResourceDescription& desc,
                m_imageData.format                              = desc.imageFormat;
                m_imageData.subresourceRange    = makeImageSubresourceRange(desc.imageAspect, 0u, 1u, 0u, 1u);
                m_imageData.subresourceLayers   = makeImageSubresourceLayers(desc.imageAspect, 0u, 0u, 1u);
-               VkImageCreateInfo imageInfo             = makeImageCreateInfo(m_imageData.imageType, m_imageData.extent, m_imageData.format, usage);
+               VkImageCreateInfo imageInfo             = makeImageCreateInfo(m_imageData.imageType, m_imageData.extent, m_imageData.format, usage, desc.imageSamples);
                imageInfo.sharingMode                   = sharingMode;
                if (queueFamilyIndex.size() > 0)
                {
@@ -4967,6 +5274,9 @@ Resource::Resource (OperationContext& context, const ResourceDescription& desc,
                if (formatResult != VK_SUCCESS)
                        TCU_THROW(NotSupportedError, "Image format is not supported");
 
+               if ((imageFormatProperties.sampleCounts & desc.imageSamples) != desc.imageSamples)
+                       TCU_THROW(NotSupportedError, "Requested sample count is not supported");
+
                m_image                                                 = de::MovePtr<Image>(new Image(vk, device, allocator, imageInfo, MemoryRequirement::Any));
                m_imageData.handle                              = **m_image;
        }
@@ -5055,6 +5365,10 @@ bool isResourceSupported (const OperationName opName, const ResourceDescription&
                case OPERATION_NAME_READ_INDIRECT_BUFFER_DISPATCH:
                        return resourceDesc.type == RESOURCE_TYPE_INDIRECT_BUFFER_DISPATCH;
 
+               case OPERATION_NAME_WRITE_UPDATE_INDEX_BUFFER:
+               case OPERATION_NAME_READ_INDEX_INPUT:
+                       return resourceDesc.type == RESOURCE_TYPE_INDEX_BUFFER;
+
                case OPERATION_NAME_WRITE_UPDATE_BUFFER:
                        return resourceDesc.type == RESOURCE_TYPE_BUFFER && resourceDesc.size.x() <= MAX_UPDATE_BUFFER_SIZE;
 
@@ -5062,10 +5376,16 @@ bool isResourceSupported (const OperationName opName, const ResourceDescription&
                case OPERATION_NAME_WRITE_COPY_BUFFER_TO_IMAGE:
                case OPERATION_NAME_READ_COPY_IMAGE:
                case OPERATION_NAME_READ_COPY_IMAGE_TO_BUFFER:
-                       return resourceDesc.type == RESOURCE_TYPE_IMAGE;
+                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageSamples == VK_SAMPLE_COUNT_1_BIT;
 
                case OPERATION_NAME_WRITE_CLEAR_ATTACHMENTS:
-                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageType != VK_IMAGE_TYPE_3D;
+                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageType != VK_IMAGE_TYPE_3D
+                               && resourceDesc.imageSamples == VK_SAMPLE_COUNT_1_BIT;
+
+               case OPERATION_NAME_WRITE_IMAGE_COMPUTE_MULTISAMPLE:
+               case OPERATION_NAME_READ_RESOLVE_IMAGE:
+                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageAspect == VK_IMAGE_ASPECT_COLOR_BIT
+                               && resourceDesc.imageSamples != VK_SAMPLE_COUNT_1_BIT;
 
                case OPERATION_NAME_WRITE_BLIT_IMAGE:
                case OPERATION_NAME_READ_BLIT_IMAGE:
@@ -5083,7 +5403,8 @@ bool isResourceSupported (const OperationName opName, const ResourceDescription&
                case OPERATION_NAME_READ_IMAGE_FRAGMENT:
                case OPERATION_NAME_READ_IMAGE_COMPUTE:
                case OPERATION_NAME_READ_IMAGE_COMPUTE_INDIRECT:
-                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageAspect == VK_IMAGE_ASPECT_COLOR_BIT;
+                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageAspect == VK_IMAGE_ASPECT_COLOR_BIT
+                               && resourceDesc.imageSamples == VK_SAMPLE_COUNT_1_BIT;
 
                case OPERATION_NAME_READ_UBO_VERTEX:
                case OPERATION_NAME_READ_UBO_TESSELLATION_CONTROL:
@@ -5095,17 +5416,20 @@ bool isResourceSupported (const OperationName opName, const ResourceDescription&
                        return resourceDesc.type == RESOURCE_TYPE_BUFFER && resourceDesc.size.x() <= MAX_UBO_RANGE;
 
                case OPERATION_NAME_WRITE_CLEAR_COLOR_IMAGE:
-                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageAspect == VK_IMAGE_ASPECT_COLOR_BIT;
+                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageAspect == VK_IMAGE_ASPECT_COLOR_BIT
+                               && resourceDesc.imageSamples == VK_SAMPLE_COUNT_1_BIT;
 
                case OPERATION_NAME_WRITE_CLEAR_DEPTH_STENCIL_IMAGE:
-                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && (resourceDesc.imageAspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
+                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && (resourceDesc.imageAspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT))
+                               && resourceDesc.imageSamples == VK_SAMPLE_COUNT_1_BIT;
 
                case OPERATION_NAME_WRITE_DRAW:
                case OPERATION_NAME_WRITE_DRAW_INDEXED:
                case OPERATION_NAME_WRITE_DRAW_INDIRECT:
                case OPERATION_NAME_WRITE_DRAW_INDEXED_INDIRECT:
                        return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageType == VK_IMAGE_TYPE_2D
-                               && (resourceDesc.imageAspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) == 0;
+                               && (resourceDesc.imageAspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) == 0
+                               && resourceDesc.imageSamples == VK_SAMPLE_COUNT_1_BIT;
 
                case OPERATION_NAME_COPY_BUFFER:
                case OPERATION_NAME_COPY_SSBO_VERTEX:
@@ -5126,7 +5450,8 @@ bool isResourceSupported (const OperationName opName, const ResourceDescription&
                case OPERATION_NAME_COPY_IMAGE_FRAGMENT:
                case OPERATION_NAME_COPY_IMAGE_COMPUTE:
                case OPERATION_NAME_COPY_IMAGE_COMPUTE_INDIRECT:
-                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageAspect == VK_IMAGE_ASPECT_COLOR_BIT;
+                       return resourceDesc.type == RESOURCE_TYPE_IMAGE && resourceDesc.imageAspect == VK_IMAGE_ASPECT_COLOR_BIT
+                               && resourceDesc.imageSamples == VK_SAMPLE_COUNT_1_BIT;
 
                default:
                        DE_ASSERT(0);
@@ -5158,6 +5483,7 @@ std::string getOperationName (const OperationName opName)
                case OPERATION_NAME_WRITE_IMAGE_GEOMETRY:                                       return "write_image_geometry";
                case OPERATION_NAME_WRITE_IMAGE_FRAGMENT:                                       return "write_image_fragment";
                case OPERATION_NAME_WRITE_IMAGE_COMPUTE:                                        return "write_image_compute";
+               case OPERATION_NAME_WRITE_IMAGE_COMPUTE_MULTISAMPLE:            return "write_image_compute_multisample";
                case OPERATION_NAME_WRITE_IMAGE_COMPUTE_INDIRECT:                       return "write_image_compute_indirect";
                case OPERATION_NAME_WRITE_CLEAR_COLOR_IMAGE:                            return "write_clear_color_image";
                case OPERATION_NAME_WRITE_CLEAR_DEPTH_STENCIL_IMAGE:            return "write_clear_depth_stencil_image";
@@ -5169,12 +5495,14 @@ std::string getOperationName (const OperationName opName)
                case OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW:                         return "write_indirect_buffer_draw";
                case OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW_INDEXED:         return "write_indirect_buffer_draw_indexed";
                case OPERATION_NAME_WRITE_INDIRECT_BUFFER_DISPATCH:                     return "write_indirect_buffer_dispatch";
+               case OPERATION_NAME_WRITE_UPDATE_INDEX_BUFFER:                          return "write_update_index_buffer";
 
                case OPERATION_NAME_READ_COPY_BUFFER:                                           return "read_copy_buffer";
                case OPERATION_NAME_READ_COPY_BUFFER_TO_IMAGE:                          return "read_copy_buffer_to_image";
                case OPERATION_NAME_READ_COPY_IMAGE_TO_BUFFER:                          return "read_copy_image_to_buffer";
                case OPERATION_NAME_READ_COPY_IMAGE:                                            return "read_copy_image";
                case OPERATION_NAME_READ_BLIT_IMAGE:                                            return "read_blit_image";
+               case OPERATION_NAME_READ_RESOLVE_IMAGE:                                         return "read_resolve_image";
                case OPERATION_NAME_READ_UBO_VERTEX:                                            return "read_ubo_vertex";
                case OPERATION_NAME_READ_UBO_TESSELLATION_CONTROL:                      return "read_ubo_tess_control";
                case OPERATION_NAME_READ_UBO_TESSELLATION_EVALUATION:           return "read_ubo_tess_eval";
@@ -5200,6 +5528,7 @@ std::string getOperationName (const OperationName opName)
                case OPERATION_NAME_READ_INDIRECT_BUFFER_DRAW_INDEXED:          return "read_indirect_buffer_draw_indexed";
                case OPERATION_NAME_READ_INDIRECT_BUFFER_DISPATCH:                      return "read_indirect_buffer_dispatch";
                case OPERATION_NAME_READ_VERTEX_INPUT:                                          return "read_vertex_input";
+               case OPERATION_NAME_READ_INDEX_INPUT:                                           return "read_index_input";
 
                case OPERATION_NAME_COPY_BUFFER:                                                        return "copy_buffer";
                case OPERATION_NAME_COPY_IMAGE:                                                         return "copy_image";
@@ -5233,8 +5562,8 @@ de::MovePtr<OperationSupport> makeOperationSupport (const OperationName opName,
                case OPERATION_NAME_WRITE_COPY_BUFFER:                                          return de::MovePtr<OperationSupport>(new CopyBuffer                     ::Support               (resourceDesc, ACCESS_MODE_WRITE));
                case OPERATION_NAME_WRITE_COPY_BUFFER_TO_IMAGE:                         return de::MovePtr<OperationSupport>(new CopyBufferToImage      ::Support               (resourceDesc, ACCESS_MODE_WRITE));
                case OPERATION_NAME_WRITE_COPY_IMAGE_TO_BUFFER:                         return de::MovePtr<OperationSupport>(new CopyImageToBuffer      ::Support               (resourceDesc, ACCESS_MODE_WRITE));
-               case OPERATION_NAME_WRITE_COPY_IMAGE:                                           return de::MovePtr<OperationSupport>(new CopyBlitImage          ::Support               (resourceDesc, CopyBlitImage::TYPE_COPY, ACCESS_MODE_WRITE));
-               case OPERATION_NAME_WRITE_BLIT_IMAGE:                                           return de::MovePtr<OperationSupport>(new CopyBlitImage          ::Support               (resourceDesc, CopyBlitImage::TYPE_BLIT, ACCESS_MODE_WRITE));
+               case OPERATION_NAME_WRITE_COPY_IMAGE:                                           return de::MovePtr<OperationSupport>(new CopyBlitResolveImage   ::Support       (resourceDesc, CopyBlitResolveImage::TYPE_COPY, ACCESS_MODE_WRITE));
+               case OPERATION_NAME_WRITE_BLIT_IMAGE:                                           return de::MovePtr<OperationSupport>(new CopyBlitResolveImage   ::Support       (resourceDesc, CopyBlitResolveImage::TYPE_BLIT, ACCESS_MODE_WRITE));
                case OPERATION_NAME_WRITE_SSBO_VERTEX:                                          return de::MovePtr<OperationSupport>(new ShaderAccess           ::BufferSupport (resourceDesc, BUFFER_TYPE_STORAGE, ACCESS_MODE_WRITE, VK_SHADER_STAGE_VERTEX_BIT));
                case OPERATION_NAME_WRITE_SSBO_TESSELLATION_CONTROL:            return de::MovePtr<OperationSupport>(new ShaderAccess           ::BufferSupport (resourceDesc, BUFFER_TYPE_STORAGE, ACCESS_MODE_WRITE, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT));
                case OPERATION_NAME_WRITE_SSBO_TESSELLATION_EVALUATION:         return de::MovePtr<OperationSupport>(new ShaderAccess           ::BufferSupport (resourceDesc, BUFFER_TYPE_STORAGE, ACCESS_MODE_WRITE, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT));
@@ -5249,6 +5578,7 @@ de::MovePtr<OperationSupport> makeOperationSupport (const OperationName opName,
                case OPERATION_NAME_WRITE_IMAGE_FRAGMENT:                                       return de::MovePtr<OperationSupport>(new ShaderAccess           ::ImageSupport  (resourceDesc, ACCESS_MODE_WRITE, VK_SHADER_STAGE_FRAGMENT_BIT));
                case OPERATION_NAME_WRITE_IMAGE_COMPUTE:                                        return de::MovePtr<OperationSupport>(new ShaderAccess           ::ImageSupport  (resourceDesc, ACCESS_MODE_WRITE, VK_SHADER_STAGE_COMPUTE_BIT));
                case OPERATION_NAME_WRITE_IMAGE_COMPUTE_INDIRECT:                       return de::MovePtr<OperationSupport>(new ShaderAccess           ::ImageSupport  (resourceDesc, ACCESS_MODE_WRITE, VK_SHADER_STAGE_COMPUTE_BIT, ShaderAccess::DISPATCH_CALL_DISPATCH_INDIRECT));
+               case OPERATION_NAME_WRITE_IMAGE_COMPUTE_MULTISAMPLE:            return de::MovePtr<OperationSupport>(new ShaderAccess           ::MSImageSupport(resourceDesc));
                case OPERATION_NAME_WRITE_CLEAR_COLOR_IMAGE:                            return de::MovePtr<OperationSupport>(new ClearImage                     ::Support               (resourceDesc, ClearImage::CLEAR_MODE_COLOR));
                case OPERATION_NAME_WRITE_CLEAR_DEPTH_STENCIL_IMAGE:            return de::MovePtr<OperationSupport>(new ClearImage                     ::Support               (resourceDesc, ClearImage::CLEAR_MODE_DEPTH_STENCIL));
                case OPERATION_NAME_WRITE_DRAW:                                                         return de::MovePtr<OperationSupport>(new Draw                           ::Support               (resourceDesc, Draw::DRAW_CALL_DRAW));
@@ -5259,12 +5589,14 @@ de::MovePtr<OperationSupport> makeOperationSupport (const OperationName opName,
                case OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW:                         return de::MovePtr<OperationSupport>(new IndirectBuffer         ::WriteSupport  (resourceDesc));
                case OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW_INDEXED:         return de::MovePtr<OperationSupport>(new IndirectBuffer         ::WriteSupport  (resourceDesc));
                case OPERATION_NAME_WRITE_INDIRECT_BUFFER_DISPATCH:                     return de::MovePtr<OperationSupport>(new IndirectBuffer         ::WriteSupport  (resourceDesc));
+               case OPERATION_NAME_WRITE_UPDATE_INDEX_BUFFER:                          return de::MovePtr<OperationSupport>(new FillUpdateBuffer       ::Support               (resourceDesc, FillUpdateBuffer::BUFFER_OP_UPDATE_WITH_INDEX_PATTERN));
 
                case OPERATION_NAME_READ_COPY_BUFFER:                                           return de::MovePtr<OperationSupport>(new CopyBuffer                     ::Support               (resourceDesc, ACCESS_MODE_READ));
                case OPERATION_NAME_READ_COPY_BUFFER_TO_IMAGE:                          return de::MovePtr<OperationSupport>(new CopyBufferToImage      ::Support               (resourceDesc, ACCESS_MODE_READ));
                case OPERATION_NAME_READ_COPY_IMAGE_TO_BUFFER:                          return de::MovePtr<OperationSupport>(new CopyImageToBuffer      ::Support               (resourceDesc, ACCESS_MODE_READ));
-               case OPERATION_NAME_READ_COPY_IMAGE:                                            return de::MovePtr<OperationSupport>(new CopyBlitImage          ::Support               (resourceDesc, CopyBlitImage::TYPE_COPY, ACCESS_MODE_READ));
-               case OPERATION_NAME_READ_BLIT_IMAGE:                                            return de::MovePtr<OperationSupport>(new CopyBlitImage          ::Support               (resourceDesc, CopyBlitImage::TYPE_BLIT, ACCESS_MODE_READ));
+               case OPERATION_NAME_READ_COPY_IMAGE:                                            return de::MovePtr<OperationSupport>(new CopyBlitResolveImage::Support          (resourceDesc, CopyBlitResolveImage::TYPE_COPY,         ACCESS_MODE_READ));
+               case OPERATION_NAME_READ_BLIT_IMAGE:                                            return de::MovePtr<OperationSupport>(new CopyBlitResolveImage::Support          (resourceDesc, CopyBlitResolveImage::TYPE_BLIT,         ACCESS_MODE_READ));
+               case OPERATION_NAME_READ_RESOLVE_IMAGE:                                         return de::MovePtr<OperationSupport>(new CopyBlitResolveImage::Support          (resourceDesc, CopyBlitResolveImage::TYPE_RESOLVE,      ACCESS_MODE_READ));
                case OPERATION_NAME_READ_UBO_VERTEX:                                            return de::MovePtr<OperationSupport>(new ShaderAccess           ::BufferSupport (resourceDesc, BUFFER_TYPE_UNIFORM, ACCESS_MODE_READ, VK_SHADER_STAGE_VERTEX_BIT));
                case OPERATION_NAME_READ_UBO_TESSELLATION_CONTROL:                      return de::MovePtr<OperationSupport>(new ShaderAccess           ::BufferSupport (resourceDesc, BUFFER_TYPE_UNIFORM, ACCESS_MODE_READ, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT));
                case OPERATION_NAME_READ_UBO_TESSELLATION_EVALUATION:           return de::MovePtr<OperationSupport>(new ShaderAccess           ::BufferSupport (resourceDesc, BUFFER_TYPE_UNIFORM, ACCESS_MODE_READ, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT));
@@ -5289,11 +5621,12 @@ de::MovePtr<OperationSupport> makeOperationSupport (const OperationName opName,
                case OPERATION_NAME_READ_INDIRECT_BUFFER_DRAW:                          return de::MovePtr<OperationSupport>(new IndirectBuffer         ::ReadSupport   (resourceDesc));
                case OPERATION_NAME_READ_INDIRECT_BUFFER_DRAW_INDEXED:          return de::MovePtr<OperationSupport>(new IndirectBuffer         ::ReadSupport   (resourceDesc));
                case OPERATION_NAME_READ_INDIRECT_BUFFER_DISPATCH:                      return de::MovePtr<OperationSupport>(new IndirectBuffer         ::ReadSupport   (resourceDesc));
-               case OPERATION_NAME_READ_VERTEX_INPUT:                                          return de::MovePtr<OperationSupport>(new VertexInput            ::Support               (resourceDesc));
+               case OPERATION_NAME_READ_VERTEX_INPUT:                                          return de::MovePtr<OperationSupport>(new VertexInput            ::Support               (resourceDesc, VertexInput::DRAW_MODE_VERTEX));
+               case OPERATION_NAME_READ_INDEX_INPUT:                                           return de::MovePtr<OperationSupport>(new VertexInput            ::Support               (resourceDesc, VertexInput::DRAW_MODE_INDEXED));
 
                case OPERATION_NAME_COPY_BUFFER:                                                        return de::MovePtr<OperationSupport>(new CopyBuffer                     ::CopySupport           (resourceDesc));
-               case OPERATION_NAME_COPY_IMAGE:                                                         return de::MovePtr<OperationSupport>(new CopyBlitImage          ::CopySupport           (resourceDesc, CopyBlitImage::TYPE_COPY));
-               case OPERATION_NAME_BLIT_IMAGE:                                                         return de::MovePtr<OperationSupport>(new CopyBlitImage          ::CopySupport           (resourceDesc, CopyBlitImage::TYPE_BLIT));
+               case OPERATION_NAME_COPY_IMAGE:                                                         return de::MovePtr<OperationSupport>(new CopyBlitResolveImage::CopySupport              (resourceDesc, CopyBlitResolveImage::TYPE_COPY));
+               case OPERATION_NAME_BLIT_IMAGE:                                                         return de::MovePtr<OperationSupport>(new CopyBlitResolveImage::CopySupport              (resourceDesc, CopyBlitResolveImage::TYPE_BLIT));
                case OPERATION_NAME_COPY_SSBO_VERTEX:                                           return de::MovePtr<OperationSupport>(new ShaderAccess           ::CopyBufferSupport     (resourceDesc, BUFFER_TYPE_STORAGE, VK_SHADER_STAGE_VERTEX_BIT));
                case OPERATION_NAME_COPY_SSBO_TESSELLATION_CONTROL:                     return de::MovePtr<OperationSupport>(new ShaderAccess           ::CopyBufferSupport     (resourceDesc, BUFFER_TYPE_STORAGE, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT));
                case OPERATION_NAME_COPY_SSBO_TESSELLATION_EVALUATION:          return de::MovePtr<OperationSupport>(new ShaderAccess           ::CopyBufferSupport     (resourceDesc, BUFFER_TYPE_STORAGE, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT));
index 5548d8c..9077d1d 100644 (file)
@@ -61,6 +61,7 @@ enum OperationName
        OPERATION_NAME_WRITE_IMAGE_FRAGMENT,
        OPERATION_NAME_WRITE_IMAGE_COMPUTE,
        OPERATION_NAME_WRITE_IMAGE_COMPUTE_INDIRECT,
+       OPERATION_NAME_WRITE_IMAGE_COMPUTE_MULTISAMPLE,
        OPERATION_NAME_WRITE_CLEAR_COLOR_IMAGE,
        OPERATION_NAME_WRITE_CLEAR_DEPTH_STENCIL_IMAGE,
        OPERATION_NAME_WRITE_DRAW,
@@ -71,6 +72,7 @@ enum OperationName
        OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW,
        OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW_INDEXED,
        OPERATION_NAME_WRITE_INDIRECT_BUFFER_DISPATCH,
+       OPERATION_NAME_WRITE_UPDATE_INDEX_BUFFER,
 
        // Read operations
        OPERATION_NAME_READ_COPY_BUFFER,
@@ -78,6 +80,7 @@ enum OperationName
        OPERATION_NAME_READ_COPY_IMAGE_TO_BUFFER,
        OPERATION_NAME_READ_COPY_IMAGE,
        OPERATION_NAME_READ_BLIT_IMAGE,
+       OPERATION_NAME_READ_RESOLVE_IMAGE,
        OPERATION_NAME_READ_UBO_VERTEX,
        OPERATION_NAME_READ_UBO_TESSELLATION_CONTROL,
        OPERATION_NAME_READ_UBO_TESSELLATION_EVALUATION,
@@ -103,6 +106,7 @@ enum OperationName
        OPERATION_NAME_READ_INDIRECT_BUFFER_DRAW_INDEXED,
        OPERATION_NAME_READ_INDIRECT_BUFFER_DISPATCH,
        OPERATION_NAME_READ_VERTEX_INPUT,
+       OPERATION_NAME_READ_INDEX_INPUT,
 
        // Copy operations
        OPERATION_NAME_COPY_BUFFER,
@@ -223,9 +227,9 @@ private:
 //       write - the layout image will be in after the write operation has finished
 struct SyncInfo
 {
-       vk::VkPipelineStageFlags        stageMask;              // pipeline stage where read/write takes place
-       vk::VkAccessFlags                       accessMask;             // type of access that is performed
-       vk::VkImageLayout                       imageLayout;    // src (for reads) or dst (for writes) image layout
+       vk::VkPipelineStageFlags2KHR    stageMask;              // pipeline stage where read/write takes place
+       vk::VkAccessFlags2KHR                   accessMask;             // type of access that is performed
+       vk::VkImageLayout                               imageLayout;    // src (for reads) or dst (for writes) image layout
 };
 
 struct Data
index 823fc88..ea9d831 100644 (file)
@@ -348,7 +348,7 @@ void createBarrierMultiQueue (SynchronizationWrapperPtr synchronizationWrapper,
                        synchronizationWrapper->cmdPipelineBarrier(cmdBuffer, &dependencyInfo);
                }
        }
-       else if (resource.getType() == RESOURCE_TYPE_BUFFER || isIndirectBuffer(resource.getType()))
+       else
        {
                VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
                        secondQueue ? VkPipelineStageFlags(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT) : writeSync.stageMask,
index 6c7c7d5..3333397 100644 (file)
@@ -35,28 +35,32 @@ namespace synchronization
 
 static const ResourceDescription s_resources[] =
 {
-       { RESOURCE_TYPE_BUFFER, tcu::IVec4( 0x4000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                (vk::VkImageAspectFlags)0         },    // 16 KiB (min max UBO range)
-       { RESOURCE_TYPE_BUFFER, tcu::IVec4(0x40000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                (vk::VkImageAspectFlags)0         },    // 256 KiB
+       { RESOURCE_TYPE_BUFFER, tcu::IVec4( 0x4000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                        (vk::VkImageAspectFlags)0,                      vk::VK_SAMPLE_COUNT_1_BIT },    // 16 KiB (min max UBO range)
+       { RESOURCE_TYPE_BUFFER, tcu::IVec4(0x40000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                        (vk::VkImageAspectFlags)0,                      vk::VK_SAMPLE_COUNT_1_BIT },    // 256 KiB
 
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 0, 0, 0),               vk::VK_IMAGE_TYPE_1D,   vk::VK_FORMAT_R32_UINT,                         vk::VK_IMAGE_ASPECT_COLOR_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 0, 0, 0),               vk::VK_IMAGE_TYPE_1D,   vk::VK_FORMAT_R32_UINT,                         vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
 
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8_UNORM,                         vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16_UINT,                         vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8G8B8A8_UNORM,           vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16G16B16A16_UINT,        vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R32G32B32A32_SFLOAT,      vk::VK_IMAGE_ASPECT_COLOR_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8_UNORM,                         vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16_UINT,                         vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8G8B8A8_UNORM,           vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16G16B16A16_UINT,        vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R32G32B32A32_SFLOAT,      vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
 
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(64, 64, 8, 0),               vk::VK_IMAGE_TYPE_3D,   vk::VK_FORMAT_R32_SFLOAT,                       vk::VK_IMAGE_ASPECT_COLOR_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(64, 64, 8, 0),               vk::VK_IMAGE_TYPE_3D,   vk::VK_FORMAT_R32_SFLOAT,                       vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
 
        // \note Mixed depth/stencil formats add complexity in image<->buffer transfers (packing), so we just avoid them here
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_D16_UNORM,                        vk::VK_IMAGE_ASPECT_DEPTH_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_D32_SFLOAT,                       vk::VK_IMAGE_ASPECT_DEPTH_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_S8_UINT,                          vk::VK_IMAGE_ASPECT_STENCIL_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_D16_UNORM,                        vk::VK_IMAGE_ASPECT_DEPTH_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_D32_SFLOAT,                       vk::VK_IMAGE_ASPECT_DEPTH_BIT,          vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_S8_UINT,                          vk::VK_IMAGE_ASPECT_STENCIL_BIT,        vk::VK_SAMPLE_COUNT_1_BIT },
 
        // \note Special resources, when test case isn't strictly a copy and comparison of some data
-       { RESOURCE_TYPE_INDIRECT_BUFFER_DRAW,                   tcu::IVec4(sizeof(vk::VkDrawIndirectCommand),        0, 0, 0),  vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0      },
-       { RESOURCE_TYPE_INDIRECT_BUFFER_DRAW_INDEXED,   tcu::IVec4(sizeof(vk::VkDrawIndexedIndirectCommand), 0, 0, 0),  vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0      },
-       { RESOURCE_TYPE_INDIRECT_BUFFER_DISPATCH,               tcu::IVec4(sizeof(vk::VkDispatchIndirectCommand),    0, 0, 0),  vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0      },
+       { RESOURCE_TYPE_INDIRECT_BUFFER_DRAW,                   tcu::IVec4(sizeof(vk::VkDrawIndirectCommand),        0, 0, 0),  vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0, vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_INDIRECT_BUFFER_DRAW_INDEXED,   tcu::IVec4(sizeof(vk::VkDrawIndexedIndirectCommand), 0, 0, 0),  vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0, vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_INDIRECT_BUFFER_DISPATCH,               tcu::IVec4(sizeof(vk::VkDispatchIndirectCommand),    0, 0, 0),  vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0, vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_INDEX_BUFFER,                                   tcu::IVec4(sizeof(deUint32) * 5,                     0, 0, 0),  vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED, (vk::VkImageAspectFlags)0, vk::VK_SAMPLE_COUNT_1_BIT },
+
+       // \note Special multisampled image resource needed to test resolve
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(64, 64, 0, 0),               vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R32_UINT,                         vk::VK_IMAGE_ASPECT_COLOR_BIT,          vk::VK_SAMPLE_COUNT_4_BIT },
 };
 
 } // synchronization
index 78ba6c4..0c7f157 100644 (file)
@@ -97,34 +97,34 @@ public:
 
                m_writeOp->recordCommands(*cmdBuffer);
 
-               if (m_resource->getType() == RESOURCE_TYPE_BUFFER || isIndirectBuffer(m_resource->getType()))
+               if (m_resource->getType() == RESOURCE_TYPE_IMAGE)
                {
-                       const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
+                       const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
                                writeSync.stageMask,                                                    // VkPipelineStageFlags2KHR                     srcStageMask
                                writeSync.accessMask,                                                   // VkAccessFlags2KHR                            srcAccessMask
                                readSync.stageMask,                                                             // VkPipelineStageFlags2KHR                     dstStageMask
                                readSync.accessMask,                                                    // VkAccessFlags2KHR                            dstAccessMask
-                               m_resource->getBuffer().handle,                                 // VkBuffer                                                     buffer
-                               m_resource->getBuffer().offset,                                 // VkDeviceSize                                         offset
-                               m_resource->getBuffer().size                                    // VkDeviceSize                                         size
+                               writeSync.imageLayout,                                                  // VkImageLayout                                        oldLayout
+                               readSync.imageLayout,                                                   // VkImageLayout                                        newLayout
+                               m_resource->getImage().handle,                                  // VkImage                                                      image
+                               m_resource->getImage().subresourceRange                 // VkImageSubresourceRange                      subresourceRange
                        );
-                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, &bufferMemoryBarrier2);
+                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
                        synchronizationWrapper->cmdSetEvent(*cmdBuffer, *event, &dependencyInfo);
                        synchronizationWrapper->cmdWaitEvents(*cmdBuffer, 1u, &event.get(), &dependencyInfo);
                }
-               else if (m_resource->getType() == RESOURCE_TYPE_IMAGE)
+               else
                {
-                       const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
+                       const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
                                writeSync.stageMask,                                                    // VkPipelineStageFlags2KHR                     srcStageMask
                                writeSync.accessMask,                                                   // VkAccessFlags2KHR                            srcAccessMask
                                readSync.stageMask,                                                             // VkPipelineStageFlags2KHR                     dstStageMask
                                readSync.accessMask,                                                    // VkAccessFlags2KHR                            dstAccessMask
-                               writeSync.imageLayout,                                                  // VkImageLayout                                        oldLayout
-                               readSync.imageLayout,                                                   // VkImageLayout                                        newLayout
-                               m_resource->getImage().handle,                                  // VkImage                                                      image
-                               m_resource->getImage().subresourceRange                 // VkImageSubresourceRange                      subresourceRange
+                               m_resource->getBuffer().handle,                                 // VkBuffer                                                     buffer
+                               m_resource->getBuffer().offset,                                 // VkDeviceSize                                         offset
+                               m_resource->getBuffer().size                                    // VkDeviceSize                                         size
                        );
-                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
+                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, &bufferMemoryBarrier2);
                        synchronizationWrapper->cmdSetEvent(*cmdBuffer, *event, &dependencyInfo);
                        synchronizationWrapper->cmdWaitEvents(*cmdBuffer, 1u, &event.get(), &dependencyInfo);
                }
@@ -181,33 +181,33 @@ public:
 
                m_writeOp->recordCommands(*cmdBuffer);
 
-               if (m_resource->getType() == RESOURCE_TYPE_BUFFER || isIndirectBuffer(m_resource->getType()))
+               if (m_resource->getType() == RESOURCE_TYPE_IMAGE)
                {
-                       const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
+                       const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
                                writeSync.stageMask,                                                    // VkPipelineStageFlags2KHR                     srcStageMask
                                writeSync.accessMask,                                                   // VkAccessFlags2KHR                            srcAccessMask
                                readSync.stageMask,                                                             // VkPipelineStageFlags2KHR                     dstStageMask
                                readSync.accessMask,                                                    // VkAccessFlags2KHR                            dstAccessMask
-                               m_resource->getBuffer().handle,                                 // VkBuffer                                                     buffer
-                               m_resource->getBuffer().offset,                                 // VkDeviceSize                                         offset
-                               m_resource->getBuffer().size                                    // VkDeviceSize                                         size
+                               writeSync.imageLayout,                                                  // VkImageLayout                                        oldLayout
+                               readSync.imageLayout,                                                   // VkImageLayout                                        newLayout
+                               m_resource->getImage().handle,                                  // VkImage                                                      image
+                               m_resource->getImage().subresourceRange                 // VkImageSubresourceRange                      subresourceRange
                        );
-                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, &bufferMemoryBarrier2);
+                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
                        synchronizationWrapper->cmdPipelineBarrier(*cmdBuffer, &dependencyInfo);
                }
-               else if (m_resource->getType() == RESOURCE_TYPE_IMAGE)
+               else
                {
-                       const VkImageMemoryBarrier2KHR imageMemoryBarrier2 = makeImageMemoryBarrier2(
+                       const VkBufferMemoryBarrier2KHR bufferMemoryBarrier2 = makeBufferMemoryBarrier2(
                                writeSync.stageMask,                                                    // VkPipelineStageFlags2KHR                     srcStageMask
                                writeSync.accessMask,                                                   // VkAccessFlags2KHR                            srcAccessMask
                                readSync.stageMask,                                                             // VkPipelineStageFlags2KHR                     dstStageMask
                                readSync.accessMask,                                                    // VkAccessFlags2KHR                            dstAccessMask
-                               writeSync.imageLayout,                                                  // VkImageLayout                                        oldLayout
-                               readSync.imageLayout,                                                   // VkImageLayout                                        newLayout
-                               m_resource->getImage().handle,                                  // VkImage                                                      image
-                               m_resource->getImage().subresourceRange                 // VkImageSubresourceRange                      subresourceRange
+                               m_resource->getBuffer().handle,                                 // VkBuffer                                                     buffer
+                               m_resource->getBuffer().offset,                                 // VkDeviceSize                                         offset
+                               m_resource->getBuffer().size                                    // VkDeviceSize                                         size
                        );
-                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
+                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, &bufferMemoryBarrier2);
                        synchronizationWrapper->cmdPipelineBarrier(*cmdBuffer, &dependencyInfo);
                }
 
index 982cd5f..5a58481 100644 (file)
@@ -56,6 +56,7 @@ static const OperationName s_writeOps[] =
        OPERATION_NAME_WRITE_IMAGE_FRAGMENT,
        OPERATION_NAME_WRITE_IMAGE_COMPUTE,
        OPERATION_NAME_WRITE_IMAGE_COMPUTE_INDIRECT,
+       OPERATION_NAME_WRITE_IMAGE_COMPUTE_MULTISAMPLE,
        OPERATION_NAME_WRITE_CLEAR_COLOR_IMAGE,
        OPERATION_NAME_WRITE_CLEAR_DEPTH_STENCIL_IMAGE,
        OPERATION_NAME_WRITE_DRAW,
@@ -66,6 +67,7 @@ static const OperationName s_writeOps[] =
        OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW,
        OPERATION_NAME_WRITE_INDIRECT_BUFFER_DRAW_INDEXED,
        OPERATION_NAME_WRITE_INDIRECT_BUFFER_DISPATCH,
+       OPERATION_NAME_WRITE_UPDATE_INDEX_BUFFER,
 };
 
 static const OperationName s_readOps[] =
@@ -75,6 +77,7 @@ static const OperationName s_readOps[] =
        OPERATION_NAME_READ_COPY_IMAGE_TO_BUFFER,
        OPERATION_NAME_READ_COPY_IMAGE,
        OPERATION_NAME_READ_BLIT_IMAGE,
+       OPERATION_NAME_READ_RESOLVE_IMAGE,
        OPERATION_NAME_READ_UBO_VERTEX,
        OPERATION_NAME_READ_UBO_TESSELLATION_CONTROL,
        OPERATION_NAME_READ_UBO_TESSELLATION_EVALUATION,
@@ -100,6 +103,7 @@ static const OperationName s_readOps[] =
        OPERATION_NAME_READ_INDIRECT_BUFFER_DRAW_INDEXED,
        OPERATION_NAME_READ_INDIRECT_BUFFER_DISPATCH,
        OPERATION_NAME_READ_VERTEX_INPUT,
+       OPERATION_NAME_READ_INDEX_INPUT,
 };
 
 static const OperationName s_copyOps[] =
index a15c822..61dc796 100644 (file)
@@ -398,7 +398,7 @@ de::MovePtr<Resource> importResource (const DeviceInterface&                                vkd,
                        extent,
                        1u,
                        1u,
-                       VK_SAMPLE_COUNT_1_BIT,
+                       resourceDesc.imageSamples,
                        VK_IMAGE_TILING_OPTIMAL,
                        readOp.getInResourceUsageFlags() | writeOp.getOutResourceUsageFlags(),
                        VK_SHARING_MODE_EXCLUSIVE,
@@ -554,7 +554,7 @@ public:
                        extent,
                        1u,
                        1u,
-                       VK_SAMPLE_COUNT_1_BIT,
+                       m_resourceDesc.imageSamples,
                        VK_IMAGE_TILING_OPTIMAL,
                        m_readOpSupport->getInResourceUsageFlags() | m_writeOpSupport->getOutResourceUsageFlags(),
                        VK_SHARING_MODE_EXCLUSIVE,
@@ -626,7 +626,7 @@ public:
                std::vector<deUint64>                                                           timelineValuesA;
                std::vector<deUint64>                                                           timelineValuesB;
                std::vector<QueueSubmitOrderSharedIteration>            iterations(12);
-               std::vector<VkPipelineStageFlags>                                       stageBits;
+               std::vector<VkPipelineStageFlags2KHR>                           stageBits;
 
                // Create a dozen of set of write/read operations.
                for (deUint32 iterIdx = 0; iterIdx < iterations.size(); iterIdx++)
@@ -764,7 +764,7 @@ public:
                DE_ASSERT(semaphoreHandlesA.size() == iterations.size());
 
                // Record all read operations into a single command buffer and record the union of their stage masks.
-               VkPipelineStageFlags readStages = 0;
+               VkPipelineStageFlags2KHR readStages = 0;
                ptrCmdBufferB = makeVkSharedPtr(makeCommandBuffer(vkB, *deviceB, *cmdPoolB));
                cmdBufferB = **(ptrCmdBufferB);
                beginCommandBuffer(vkB, cmdBufferB);
@@ -1354,7 +1354,7 @@ public:
                std::vector<deUint64>                                                           timelineValuesA;
                std::vector<deUint64>                                                           timelineValuesB;
                std::vector<QueueSubmitOrderIteration>                          iterations;
-               std::vector<VkPipelineStageFlags>                                       stageBits;
+               std::vector<VkPipelineStageFlags2KHR>                           stageBits;
                std::vector<deUint32>                                                           queueFamilies;
                SynchronizationWrapperPtr                                                       syncWrapper                                     = getSynchronizationWrapper(m_type, vk, isTimelineSemaphore);
 
@@ -1442,7 +1442,7 @@ public:
                DE_ASSERT(semaphoreHandlesA.size() == iterations.size());
 
                // Record all read operations into a single command buffer and track the union of their execution stages.
-               VkPipelineStageFlags readStages = 0;
+               VkPipelineStageFlags2KHR readStages = 0;
                ptrCmdBufferB = makeVkSharedPtr(makeCommandBuffer(vk, device, *cmdPoolB));
                cmdBufferB = **(ptrCmdBufferB);
                beginCommandBuffer(vk, cmdBufferB);
index 1ee8e00..bd3cf2b 100644 (file)
@@ -86,9 +86,13 @@ Move<VkPipeline> makeComputePipeline (const DeviceInterface&         vk,
        }
 }
 
-VkImageCreateInfo makeImageCreateInfo (const VkImageType imageType, const VkExtent3D& extent, const VkFormat format, const VkImageUsageFlags usage)
+VkImageCreateInfo makeImageCreateInfo (const VkImageType                       imageType,
+                                                                          const VkExtent3D&                    extent,
+                                                                          const VkFormat                               format,
+                                                                          const VkImageUsageFlags              usage,
+                                                                          const VkSampleCountFlagBits  samples)
 {
-       const VkImageCreateInfo imageInfo =
+       return
        {
                VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,            // VkStructureType          sType;
                DE_NULL,                                                                        // const void*              pNext;
@@ -98,7 +102,7 @@ VkImageCreateInfo makeImageCreateInfo (const VkImageType imageType, const VkExte
                extent,                                                                         // VkExtent3D               extent;
                1u,                                                                                     // uint32_t                 mipLevels;
                1u,                                                                                     // uint32_t                 arrayLayers;
-               VK_SAMPLE_COUNT_1_BIT,                                          // VkSampleCountFlagBits    samples;
+               samples,                                                                        // VkSampleCountFlagBits    samples;
                VK_IMAGE_TILING_OPTIMAL,                                        // VkImageTiling            tiling;
                usage,                                                                          // VkImageUsageFlags        usage;
                VK_SHARING_MODE_EXCLUSIVE,                                      // VkSharingMode            sharingMode;
@@ -106,7 +110,6 @@ VkImageCreateInfo makeImageCreateInfo (const VkImageType imageType, const VkExte
                DE_NULL,                                                                        // const uint32_t*          pQueueFamilyIndices;
                VK_IMAGE_LAYOUT_UNDEFINED,                                      // VkImageLayout            initialLayout;
        };
-       return imageInfo;
 }
 
 void beginRenderPassWithRasterizationDisabled (const DeviceInterface&  vk,
@@ -995,8 +998,11 @@ std::string getResourceName (const ResourceDescription& resource)
 {
        std::ostringstream str;
 
-       if (resource.type == RESOURCE_TYPE_BUFFER)
+       if ((resource.type == RESOURCE_TYPE_BUFFER) ||
+               (resource.type == RESOURCE_TYPE_INDEX_BUFFER))
+       {
                str << "buffer_" << resource.size.x();
+       }
        else if (resource.type == RESOURCE_TYPE_IMAGE)
        {
                str << "image_" << resource.size.x()
index 774c10b..78c6ee4 100644 (file)
@@ -245,6 +245,7 @@ enum ResourceType
        RESOURCE_TYPE_INDIRECT_BUFFER_DRAW,
        RESOURCE_TYPE_INDIRECT_BUFFER_DRAW_INDEXED,
        RESOURCE_TYPE_INDIRECT_BUFFER_DISPATCH,
+       RESOURCE_TYPE_INDEX_BUFFER,
 };
 
 struct ResourceDescription
@@ -254,6 +255,7 @@ struct ResourceDescription
        vk::VkImageType                                 imageType;
        vk::VkFormat                                    imageFormat;
        vk::VkImageAspectFlags                  imageAspect;
+       vk::VkSampleCountFlagBits               imageSamples;
 };
 
 struct BufferResource
@@ -274,16 +276,20 @@ struct ImageResource
 };
 
 typedef std::shared_ptr<SynchronizationWrapperBase> SynchronizationWrapperPtr;
-SynchronizationWrapperPtr                      getSynchronizationWrapper                                       (SynchronizationType                    type,
-                                                                                                                                                                const vk::DeviceInterface&             vk,
-                                                                                                                                                                bool                                                   usingTimelineSemaphores,
-                                                                                                                                                                deUint32                                               submitInfoCount = 1u);
-void                                                           submitCommandsAndWait                                           (SynchronizationWrapperPtr              synchronizationWrapper,
-                                                                                                                                                                const vk::DeviceInterface&             vk,
-                                                                                                                                                                const vk::VkDevice                             device,
-                                                                                                                                                                const vk::VkQueue                              queue,
-                                                                                                                                                                const vk::VkCommandBuffer              cmdBuffer);
-vk::VkImageCreateInfo                          makeImageCreateInfo                                                     (const vk::VkImageType imageType, const vk::VkExtent3D& extent, const vk::VkFormat format, const vk::VkImageUsageFlags usage);
+SynchronizationWrapperPtr                      getSynchronizationWrapper                                       (SynchronizationType                            type,
+                                                                                                                                                                const vk::DeviceInterface&                     vk,
+                                                                                                                                                                bool                                                           usingTimelineSemaphores,
+                                                                                                                                                                deUint32                                                       submitInfoCount = 1u);
+void                                                           submitCommandsAndWait                                           (SynchronizationWrapperPtr                      synchronizationWrapper,
+                                                                                                                                                                const vk::DeviceInterface&                     vk,
+                                                                                                                                                                const vk::VkDevice                                     device,
+                                                                                                                                                                const vk::VkQueue                                      queue,
+                                                                                                                                                                const vk::VkCommandBuffer                      cmdBuffer);
+vk::VkImageCreateInfo                          makeImageCreateInfo                                                     (const vk::VkImageType                          imageType,
+                                                                                                                                                                const vk::VkExtent3D&                          extent,
+                                                                                                                                                                const vk::VkFormat                                     format,
+                                                                                                                                                                const vk::VkImageUsageFlags            usage,
+                                                                                                                                                                const vk::VkSampleCountFlagBits        samples = vk::VK_SAMPLE_COUNT_1_BIT);
 vk::Move<vk::VkCommandBuffer>          makeCommandBuffer                                                       (const vk::DeviceInterface& vk, const vk::VkDevice device, const vk::VkCommandPool commandPool);
 vk::Move<vk::VkPipeline>                       makeComputePipeline                                                     (const vk::DeviceInterface& vk, const vk::VkDevice device, const vk::VkPipelineLayout pipelineLayout, const vk::VkShaderModule shaderModule, const vk::VkSpecializationInfo* specInfo, PipelineCacheData& pipelineCacheData);
 void                                                           beginRenderPassWithRasterizationDisabled        (const vk::DeviceInterface& vk, const vk::VkCommandBuffer commandBuffer, const vk::VkRenderPass renderPass, const vk::VkFramebuffer framebuffer);
index 418016d..df2c9a1 100644 (file)
@@ -79,14 +79,14 @@ using de::SharedPtr;
 
 static const ResourceDescription s_resourcesWin32KeyedMutex[] =
 {
-       { RESOURCE_TYPE_BUFFER, tcu::IVec4( 0x4000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                        (vk::VkImageAspectFlags)0         },    // 16 KiB (min max UBO range)
-       { RESOURCE_TYPE_BUFFER, tcu::IVec4(0x40000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                        (vk::VkImageAspectFlags)0         },    // 256 KiB
-
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8_UNORM,                         vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16_UINT,                         vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8G8B8A8_UNORM,           vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16G16B16A16_UINT,        vk::VK_IMAGE_ASPECT_COLOR_BIT },
-       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R32G32B32A32_SFLOAT,      vk::VK_IMAGE_ASPECT_COLOR_BIT },
+       { RESOURCE_TYPE_BUFFER, tcu::IVec4( 0x4000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                        (vk::VkImageAspectFlags)0,              vk::VK_SAMPLE_COUNT_1_BIT },    // 16 KiB (min max UBO range)
+       { RESOURCE_TYPE_BUFFER, tcu::IVec4(0x40000, 0, 0, 0),   vk::VK_IMAGE_TYPE_LAST, vk::VK_FORMAT_UNDEFINED,                        (vk::VkImageAspectFlags)0,              vk::VK_SAMPLE_COUNT_1_BIT },    // 256 KiB
+
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8_UNORM,                         vk::VK_IMAGE_ASPECT_COLOR_BIT,  vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16_UINT,                         vk::VK_IMAGE_ASPECT_COLOR_BIT,  vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R8G8B8A8_UNORM,           vk::VK_IMAGE_ASPECT_COLOR_BIT,  vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R16G16B16A16_UINT,        vk::VK_IMAGE_ASPECT_COLOR_BIT,  vk::VK_SAMPLE_COUNT_1_BIT },
+       { RESOURCE_TYPE_IMAGE,  tcu::IVec4(128, 128, 0, 0),             vk::VK_IMAGE_TYPE_2D,   vk::VK_FORMAT_R32G32B32A32_SFLOAT,      vk::VK_IMAGE_ASPECT_COLOR_BIT,  vk::VK_SAMPLE_COUNT_1_BIT },
 };
 
 struct TestConfig
@@ -429,7 +429,7 @@ de::MovePtr<Resource> importResource (const vk::DeviceInterface&                            vkd,
                        extent,
                        1u,
                        1u,
-                       vk::VK_SAMPLE_COUNT_1_BIT,
+                       resourceDesc.imageSamples,
                        vk::VK_IMAGE_TILING_OPTIMAL,
                        readOp.getInResourceUsageFlags() | writeOp.getOutResourceUsageFlags(),
                        vk::VK_SHARING_MODE_EXCLUSIVE,
@@ -481,11 +481,11 @@ void recordWriteBarrier (const vk::DeviceInterface&       vkd,
                                                 deUint32                                       writeQueueFamilyIndex,
                                                 const SyncInfo&                        readSync)
 {
-       const vk::VkPipelineStageFlags          srcStageMask            = writeSync.stageMask;
-       const vk::VkAccessFlags                         srcAccessMask           = writeSync.accessMask;
+       const vk::VkPipelineStageFlags          srcStageMask            = static_cast<VkPipelineStageFlags>(writeSync.stageMask);
+       const vk::VkAccessFlags                         srcAccessMask           = static_cast<VkAccessFlags>(writeSync.accessMask);
 
-       const vk::VkPipelineStageFlags          dstStageMask            = readSync.stageMask;
-       const vk::VkAccessFlags                         dstAccessMask           = readSync.accessMask;
+       const vk::VkPipelineStageFlags          dstStageMask            = static_cast<VkPipelineStageFlags>(readSync.stageMask);
+       const vk::VkAccessFlags                         dstAccessMask           = static_cast<VkAccessFlags>(readSync.accessMask);
 
        const vk::VkDependencyFlags                     dependencyFlags         = 0;
 
@@ -540,11 +540,11 @@ void recordReadBarrier (const vk::DeviceInterface&        vkd,
                                                const SyncInfo&                         readSync,
                                                deUint32                                        readQueueFamilyIndex)
 {
-       const vk::VkPipelineStageFlags          srcStageMask            = readSync.stageMask;
-       const vk::VkAccessFlags                         srcAccessMask           = readSync.accessMask;
+       const vk::VkPipelineStageFlags          srcStageMask            = static_cast<VkPipelineStageFlags>(readSync.stageMask);
+       const vk::VkAccessFlags                         srcAccessMask           = static_cast<VkAccessFlags>(readSync.accessMask);
 
-       const vk::VkPipelineStageFlags          dstStageMask            = readSync.stageMask;
-       const vk::VkAccessFlags                         dstAccessMask           = readSync.accessMask;
+       const vk::VkPipelineStageFlags          dstStageMask            = static_cast<VkPipelineStageFlags>(readSync.stageMask);
+       const vk::VkAccessFlags                         dstAccessMask           = static_cast<VkAccessFlags>(readSync.accessMask);
 
        const vk::VkDependencyFlags                     dependencyFlags         = 0;
 
index 2e36446..58b1df5 100644 (file)
@@ -557806,6 +557806,7 @@ dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_
 dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -558151,6 +558152,7 @@ dEQP-VK.synchronization.op.single_queue.fence.write_clear_attachments_read_image
 dEQP-VK.synchronization.op.single_queue.fence.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.fence.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -559150,6 +559152,7 @@ dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_ind
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -559495,6 +559498,7 @@ dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_clear_attachments
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -560494,6 +560498,7 @@ dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_i
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -560839,6 +560844,7 @@ dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_clear_attachmen
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.barrier.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -561838,6 +561844,7 @@ dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_rea
 dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.barrier.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -562183,6 +562190,7 @@ dEQP-VK.synchronization.op.single_queue.barrier.write_clear_attachments_read_ima
 dEQP-VK.synchronization.op.single_queue.barrier.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.barrier.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.barrier.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.barrier.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.op.single_queue.event.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -563182,6 +563190,7 @@ dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_
 dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization.op.single_queue.event.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -563527,6 +563536,7 @@ dEQP-VK.synchronization.op.single_queue.event.write_clear_attachments_read_image
 dEQP-VK.synchronization.op.single_queue.event.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.event.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization.op.single_queue.event.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization.op.single_queue.event.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -565525,6 +565535,8 @@ dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_i
 dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -566215,6 +566227,8 @@ dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_draw_indexed_
 dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -568213,6 +568227,8 @@ dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indi
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -568903,6 +568919,8 @@ dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_dr
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -570901,6 +570919,8 @@ dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_in
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -571591,6 +571611,8 @@ dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -581581,6 +581603,16 @@ dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -585031,6 +585063,16 @@ dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispat
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -595021,6 +595063,16 @@ dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_re
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -598471,6 +598523,16 @@ dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer_to_image.buffer_16384
@@ -610216,6 +610278,7 @@ dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -610561,6 +610624,7 @@ dEQP-VK.synchronization2.op.single_queue.fence.write_clear_attachments_read_imag
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.fence.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -611560,6 +611624,7 @@ dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_in
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -611905,6 +611970,7 @@ dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_clear_attachment
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -612904,6 +612970,7 @@ dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -613249,6 +613316,7 @@ dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_clear_attachme
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.barrier.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -614248,6 +614316,7 @@ dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_re
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -614593,6 +614662,7 @@ dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_attachments_read_im
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.barrier.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.barrier.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.op.single_queue.event.write_fill_buffer_read_copy_buffer_to_image.buffer_16384
@@ -615592,6 +615662,7 @@ dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat
 dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
+dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm
 dEQP-VK.synchronization2.op.single_queue.event.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint
@@ -615937,6 +616008,7 @@ dEQP-VK.synchronization2.op.single_queue.event.write_clear_attachments_read_imag
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_draw_read_indirect_buffer_draw.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer
 dEQP-VK.synchronization2.op.single_queue.event.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer
+dEQP-VK.synchronization2.op.single_queue.event.write_update_index_buffer_read_index_input.buffer_20
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -617935,6 +618007,8 @@ dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.fence.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -618625,6 +618699,8 @@ dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_draw_indexed
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.fence.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.fence.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -620623,6 +620699,8 @@ dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_ind
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -621313,6 +621391,8 @@ dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_d
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.binary_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_262144_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_fill_buffer_read_copy_buffer.buffer_16384_concurrent
@@ -623311,6 +623391,8 @@ dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_i
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_128x128_r32g32b32a32_sfloat_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_concurrent
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_exclusive
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r8_unorm_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_clear_color_image_read_copy_image_to_buffer.image_128x128_r16_uint_exclusive
@@ -624001,6 +624083,8 @@ dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_draw_indexed_read_indirect_buffer_draw_indexed.indirect_buffer_concurrent
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_exclusive
 dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_concurrent
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_exclusive
+dEQP-VK.synchronization2.op.multi_queue.timeline_semaphore.write_update_index_buffer_read_index_input.buffer_20_concurrent
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -633991,6 +634075,16 @@ dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirec
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.suballocated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -637441,6 +637535,16 @@ dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispa
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.suballocated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.suballocated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_fill_buffer_read_copy_buffer.buffer_16384_binary_semaphore_fence_fd
@@ -647431,6 +647535,16 @@ dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_r
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_image_compute_multisample_read_resolve_image.image_64x64_r32_uint_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_timeline_semaphore_fd
 dEQP-VK.synchronization2.cross_instance.dedicated.write_clear_color_image_read_copy_image_to_buffer.image_128_r32_uint_binary_semaphore_fence_fd
@@ -650881,6 +650995,16 @@ dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_win32
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_binary_semaphore_dma_buf
 dEQP-VK.synchronization2.cross_instance.dedicated.write_indirect_buffer_dispatch_read_indirect_buffer_dispatch.indirect_buffer_timeline_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_fence_fd
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32_kmt
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_win32
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_binary_semaphore_dma_buf
+dEQP-VK.synchronization2.cross_instance.dedicated.write_update_index_buffer_read_index_input.buffer_20_timeline_semaphore_dma_buf
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_16384
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer.buffer_262144
 dEQP-VK.synchronization2.signal_order.binary_semaphore.write_copy_buffer_read_copy_buffer_to_image.buffer_16384