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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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,
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)
{
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)
{
{
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:
}
//! 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.
{
BUFFER_OP_FILL,
BUFFER_OP_UPDATE,
+ BUFFER_OP_UPDATE_WITH_INDEX_PATTERN,
};
class Implementation : public Operation
{
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);
}
}
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
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
{
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;
: 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
// 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
{
// 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
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;
}
{
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;
}
{
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;
}
} // CopyBuffer ns
-namespace CopyBlitImage
+namespace CopyBlitResolveImage
{
class ImplementationBase : public Operation
//! 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)
// 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
// 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
// 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
// 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
// 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
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;
}
}
}
+ 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;
makeOffset3D(0, 0, 0), // VkOffset3D dstOffset;
resource.getImage().extent, // VkExtent3D extent;
};
- return imageCopyRegion;
}
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))
{
}
}
}
+ 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
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);
{
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
{
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
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;
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;
: 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);
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
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;
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;
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
// 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
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;
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;
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
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
{
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
{
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
{
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
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;
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;
{
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;
}
{
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;
}
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
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
{
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;
}
{
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;
}
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
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
{
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;
// 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
// 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
vk.cmdCopyImageToBuffer(cmdBuffer, **m_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **m_hostBuffer, 1u, ©Region);
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
{
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;
}
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
{
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;
{
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;
// 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
// 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
{
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;
}
// 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
{
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;
{
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
{
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;
}
{
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;
}
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
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
// 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);
{
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;
}
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:
// 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);
// 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
{
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;
}
{
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;
}
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);
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());
// 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);
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
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;
}
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;
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());
}
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
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
private:
const ResourceDescription m_resourceDesc;
+ const DrawMode m_drawMode;
};
} // VertexInput
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());
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)
{
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;
}
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;
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:
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:
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:
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);
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";
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";
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";
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));
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));
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));
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));
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,
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,
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,
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,
// 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
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,
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
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);
}
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);
}
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,
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[] =
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,
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[] =
extent,
1u,
1u,
- VK_SAMPLE_COUNT_1_BIT,
+ resourceDesc.imageSamples,
VK_IMAGE_TILING_OPTIMAL,
readOp.getInResourceUsageFlags() | writeOp.getOutResourceUsageFlags(),
VK_SHARING_MODE_EXCLUSIVE,
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,
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++)
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);
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);
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);
}
}
-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;
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;
DE_NULL, // const uint32_t* pQueueFamilyIndices;
VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout;
};
- return imageInfo;
}
void beginRenderPassWithRasterizationDisabled (const DeviceInterface& vk,
{
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()
RESOURCE_TYPE_INDIRECT_BUFFER_DRAW,
RESOURCE_TYPE_INDIRECT_BUFFER_DRAW_INDEXED,
RESOURCE_TYPE_INDIRECT_BUFFER_DISPATCH,
+ RESOURCE_TYPE_INDEX_BUFFER,
};
struct ResourceDescription
vk::VkImageType imageType;
vk::VkFormat imageFormat;
vk::VkImageAspectFlags imageAspect;
+ vk::VkSampleCountFlagBits imageSamples;
};
struct BufferResource
};
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);
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
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,
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;
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;
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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