dEQP-VK.protected_memory.attachment.clear_op.primary.random.clear_8
dEQP-VK.protected_memory.attachment.clear_op.primary.random.clear_9
dEQP-VK.protected_memory.attachment.clear_op.primary.random.clear_10
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_1
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_2
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_3
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_4
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_5
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_6
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_7
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_1
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_2
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_3
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_4
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_5
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_6
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_7
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_8
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_9
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_10
dEQP-VK.protected_memory.image.copy.primary.static.copy_1
dEQP-VK.protected_memory.image.copy.primary.static.copy_2
dEQP-VK.protected_memory.image.copy.primary.static.copy_3
dEQP-VK.protected_memory.image.copy.primary.random.copy_8
dEQP-VK.protected_memory.image.copy.primary.random.copy_9
dEQP-VK.protected_memory.image.copy.primary.random.copy_10
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_1
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_2
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_3
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_4
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_5
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_6
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_7
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_1
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_2
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_3
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_4
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_5
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_6
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_7
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_8
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_9
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_10
dEQP-VK.protected_memory.image.blit.primary.static.blit_1
dEQP-VK.protected_memory.image.blit.primary.static.blit_2
dEQP-VK.protected_memory.image.blit.primary.static.blit_3
dEQP-VK.protected_memory.image.blit.primary.random.blit_8
dEQP-VK.protected_memory.image.blit.primary.random.blit_9
dEQP-VK.protected_memory.image.blit.primary.random.blit_10
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_1
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_2
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_3
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_4
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_5
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_6
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_7
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_1
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_2
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_3
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_4
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_5
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_6
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_7
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_8
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_9
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_10
dEQP-VK.protected_memory.image.clear_color.primary.static.clear_1
dEQP-VK.protected_memory.image.clear_color.primary.static.clear_2
dEQP-VK.protected_memory.image.clear_color.primary.static.clear_3
dEQP-VK.protected_memory.image.clear_color.primary.random.clear_8
dEQP-VK.protected_memory.image.clear_color.primary.random.clear_9
dEQP-VK.protected_memory.image.clear_color.primary.random.clear_10
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_1
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_2
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_3
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_4
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_5
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_6
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_7
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_1
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_2
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_3
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_4
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_5
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_6
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_7
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_8
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_9
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_10
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.static.copy_1
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.static.copy_2
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.static.copy_3
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.random.copy_8
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.random.copy_9
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.random.copy_10
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_1
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_2
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_3
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_4
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_5
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_6
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_1
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_2
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_3
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_4
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_5
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_6
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_7
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_8
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_9
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_10
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.static.copy_1
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.static.copy_2
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.static.copy_3
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.random.copy_8
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.random.copy_9
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.random.copy_10
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_1
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_2
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_3
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_4
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_5
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_6
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_1
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_2
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_3
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_4
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_5
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_6
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_7
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_8
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_9
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_10
dEQP-VK.protected_memory.ssbo.ssbo_read.fragment.static.read_1
dEQP-VK.protected_memory.ssbo.ssbo_read.fragment.static.read_2
dEQP-VK.protected_memory.ssbo.ssbo_read.fragment.static.read_3
AttachmentClearTestInstance (Context& ctx,
const vk::VkClearValue& clearValue,
const ValidationData& refData,
- const ImageValidator& validator);
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType);
virtual tcu::TestStatus iterate (void);
private:
const vk::VkClearValue& m_clearValue;
const ValidationData& m_refData;
const ImageValidator& m_validator;
+ const CmdBufferType m_cmdBufferType;
};
AttachmentClearTestCase (tcu::TestContext& testCtx,
const std::string& name,
vk::VkClearValue clearValue,
- ValidationData data)
- : TestCase (testCtx, name, "Clear attachment.")
- , m_clearValue (clearValue)
- , m_refData (data)
+ ValidationData data,
+ CmdBufferType cmdBufferType)
+ : TestCase (testCtx, name, "Clear attachment.")
+ , m_clearValue (clearValue)
+ , m_refData (data)
+ , m_cmdBufferType (cmdBufferType)
{
}
virtual ~AttachmentClearTestCase (void) {}
virtual TestInstance* createInstance (Context& ctx) const
{
- return new AttachmentClearTestInstance(ctx, m_clearValue, m_refData, m_validator);
+ return new AttachmentClearTestInstance(ctx, m_clearValue, m_refData, m_validator, m_cmdBufferType);
}
virtual void initPrograms (vk::SourceCollections& programCollection) const
{
vk::VkClearValue m_clearValue;
ValidationData m_refData;
ImageValidator m_validator;
+ CmdBufferType m_cmdBufferType;
};
AttachmentClearTestInstance::AttachmentClearTestInstance (Context& ctx,
const vk::VkClearValue& clearValue,
const ValidationData& refData,
- const ImageValidator& validator)
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType)
: ProtectedTestInstance (ctx)
, m_imageFormat (vk::VK_FORMAT_R8G8B8A8_UNORM)
, m_clearValue (clearValue)
, m_refData (refData)
, m_validator (validator)
+ , m_cmdBufferType (cmdBufferType)
{
}
vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+ vk::Unique<vk::VkCommandBuffer> secondaryCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY));
+ vk::VkCommandBuffer targetCmdBuffer = (m_cmdBufferType == CMD_BUFFER_SECONDARY) ? *secondaryCmdBuffer : *cmdBuffer;
// Begin cmd buffer
beginCommandBuffer(vk, *cmdBuffer);
&clearValue // pClearValues
};
- vk.cmdBeginRenderPass(*cmdBuffer, &passBeginInfo, vk::VK_SUBPASS_CONTENTS_INLINE);
+ const vk::VkSubpassContents subpassContents = m_cmdBufferType == CMD_BUFFER_SECONDARY
+ ? vk::VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
+ : vk::VK_SUBPASS_CONTENTS_INLINE;
+ vk.cmdBeginRenderPass(*cmdBuffer, &passBeginInfo, subpassContents);
+
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ // Begin secondary command buffer
+ const vk::VkCommandBufferInheritanceInfo bufferInheritanceInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, // sType
+ DE_NULL, // pNext
+ *renderPass, // renderPass
+ 0u, // subpass
+ *framebuffer, // framebuffer
+ VK_FALSE, // occlusionQueryEnable
+ (vk::VkQueryControlFlags)0u, // queryFlags
+ (vk::VkQueryPipelineStatisticFlags)0u, // pipelineStatistics
+ };
+ beginSecondaryCommandBuffer(vk, *secondaryCmdBuffer, bufferInheritanceInfo);
+ }
{
const vk::VkClearAttachment pAttachments =
0u, // deUint32 baseArrayLayer;
1u // deUint32 layerCount;
};
- vk.cmdClearAttachments(*cmdBuffer, 1u, &pAttachments, 1u, &clearRect);
+ vk.cmdClearAttachments(targetCmdBuffer, 1u, &pAttachments, 1u, &clearRect);
+ }
+
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ VK_CHECK(vk.endCommandBuffer(*secondaryCmdBuffer));
+ vk.cmdExecuteCommands(*cmdBuffer, 1u, &secondaryCmdBuffer.get());
}
vk.cmdEndRenderPass(*cmdBuffer);
return tcu::TestStatus::fail("Something went really wrong");
}
-} // anonymous
-
-tcu::TestCaseGroup* createAttachmentClearTests (tcu::TestContext& testCtx)
+tcu::TestCaseGroup* createAttachmentClearTests (tcu::TestContext& testCtx, CmdBufferType cmdBufferType)
{
struct {
const vk::VkClearValue clearValue;
for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(testData); ++ndx)
{
const std::string name = "clear_" + de::toString(ndx + 1);
- clearStaticTests->addChild(new AttachmentClearTestCase(testCtx, name.c_str(), testData[ndx].clearValue, testData[ndx].data));
+ clearStaticTests->addChild(new AttachmentClearTestCase(testCtx, name.c_str(), testData[ndx].clearValue, testData[ndx].data, cmdBufferType));
}
/* Add a few randomized tests */
{ refValue, refValue, refValue, refValue }
};
- clearRandomTests->addChild(new AttachmentClearTestCase(testCtx, name.c_str(), clearValue, data));
+ clearRandomTests->addChild(new AttachmentClearTestCase(testCtx, name.c_str(), clearValue, data, cmdBufferType));
}
+ std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ std::string groupDesc = "Attachment Clear Op Tests with " + groupName + " command buffer";
+ de::MovePtr<tcu::TestCaseGroup> clearTests (new tcu::TestCaseGroup(testCtx, groupName.c_str(), groupDesc.c_str()));
+ clearTests->addChild(clearStaticTests.release());
+ clearTests->addChild(clearRandomTests.release());
+ return clearTests.release();
+}
+
+} // anonymous
+
+tcu::TestCaseGroup* createAttachmentClearTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> clearTests (new tcu::TestCaseGroup(testCtx, "clear_op", "Attachment Clear Op Tests"));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryTests (new tcu::TestCaseGroup(testCtx, "primary", "Attachment Clear Op Tests using primary command buffer"));
- primaryTests->addChild(clearStaticTests.release());
- primaryTests->addChild(clearRandomTests.release());
- clearTests->addChild(primaryTests.release());
- }
+ clearTests->addChild(createAttachmentClearTests(testCtx, CMD_BUFFER_PRIMARY));
+ clearTests->addChild(createAttachmentClearTests(testCtx, CMD_BUFFER_SECONDARY));
+
return clearTests.release();
}
BlitImageTestInstance (Context& ctx,
const vk::VkClearColorValue& clearColorValue,
const ValidationData& refData,
- const ImageValidator& validator);
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType);
virtual tcu::TestStatus iterate (void);
private:
const vk::VkClearColorValue& m_clearColorValue;
const ValidationData& m_refData;
const ImageValidator& m_validator;
+ const CmdBufferType m_cmdBufferType;
};
class BlitImageTestCase : public TestCase
BlitImageTestCase (tcu::TestContext& testCtx,
const std::string& name,
vk::VkClearColorValue clearColorValue,
- ValidationData data)
+ ValidationData data,
+ CmdBufferType cmdBufferType)
: TestCase (testCtx, name, "Clear and blit image.")
, m_clearColorValue (clearColorValue)
, m_refData (data)
+ , m_cmdBufferType (cmdBufferType)
{
}
virtual ~BlitImageTestCase (void) {}
virtual TestInstance* createInstance (Context& ctx) const
{
- return new BlitImageTestInstance(ctx, m_clearColorValue, m_refData, m_validator);
+ return new BlitImageTestInstance(ctx, m_clearColorValue, m_refData, m_validator, m_cmdBufferType);
}
virtual void initPrograms (vk::SourceCollections& programCollection) const
{
vk::VkClearColorValue m_clearColorValue;
ValidationData m_refData;
ImageValidator m_validator;
+ CmdBufferType m_cmdBufferType;
};
BlitImageTestInstance::BlitImageTestInstance (Context& ctx,
const vk::VkClearColorValue& clearColorValue,
const ValidationData& refData,
- const ImageValidator& validator)
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType)
: ProtectedTestInstance (ctx)
, m_imageFormat (vk::VK_FORMAT_R8G8B8A8_UNORM)
, m_clearColorValue (clearColorValue)
, m_refData (refData)
, m_validator (validator)
+ , m_cmdBufferType (cmdBufferType)
{
}
vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+ vk::Unique<vk::VkCommandBuffer> secondaryCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY));
+ vk::VkCommandBuffer targetCmdBuffer = (m_cmdBufferType == CMD_BUFFER_SECONDARY) ? *secondaryCmdBuffer : *cmdBuffer;
// Begin cmd buffer
beginCommandBuffer(vk, *cmdBuffer);
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ // Begin secondary command buffer
+ const vk::VkCommandBufferInheritanceInfo secCmdBufInheritInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
+ DE_NULL,
+ (vk::VkRenderPass)0u, // renderPass
+ 0u, // subpass
+ (vk::VkFramebuffer)0u, // framebuffer
+ VK_FALSE, // occlusionQueryEnable
+ (vk::VkQueryControlFlags)0u, // queryFlags
+ (vk::VkQueryPipelineStatisticFlags)0u, // pipelineStatistics
+ };
+ beginSecondaryCommandBuffer(vk, *secondaryCmdBuffer, secCmdBufInheritInfo);
+ }
+
// Start image barrier for source image.
{
const vk::VkImageMemoryBarrier startImgBarrier =
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
0u, // uint32_t baseArrayLayer
1u, // uint32_t layerCount
};
- vk.cmdClearColorImage(*cmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL, &m_clearColorValue, 1, &subresourceRange);
+ vk.cmdClearColorImage(targetCmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL, &m_clearColorValue, 1, &subresourceRange);
// Image barrier to change accessMask to transfer read bit for source image.
{
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
imageOffset,
}, // VkOffset3D dstOffsets[2];
};
- vk.cmdBlitImage(*cmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL,
+ vk.cmdBlitImage(targetCmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL,
**colorImage, vk::VK_IMAGE_LAYOUT_GENERAL, 1u, &imageBlit, vk::VK_FILTER_NEAREST);
{
1u, // subresourceRange
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
1, &endImgBarrier);
}
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ VK_CHECK(vk.endCommandBuffer(*secondaryCmdBuffer));
+ vk.cmdExecuteCommands(*cmdBuffer, 1u, &secondaryCmdBuffer.get());
+ }
+
VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
// Submit command buffer
return tcu::TestStatus::fail("Something went really wrong");
}
-} // anonymous
-
-tcu::TestCaseGroup* createBlitImageTests (tcu::TestContext& testCtx)
+tcu::TestCaseGroup* createBlitImageTests (tcu::TestContext& testCtx, CmdBufferType cmdBufferType)
{
struct {
const vk::VkClearColorValue clearColorValue;
for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(testData); ++ndx)
{
const std::string name = "blit_" + de::toString(ndx + 1);
- blitStaticTests->addChild(new BlitImageTestCase(testCtx, name.c_str(), testData[ndx].clearColorValue, testData[ndx].data));
+ blitStaticTests->addChild(new BlitImageTestCase(testCtx, name.c_str(), testData[ndx].clearColorValue, testData[ndx].data, cmdBufferType));
}
/* Add a few randomized tests */
tcu::Vec4(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f)) },
{ refValue, refValue, refValue, refValue }
};
-
- blitRandomTests->addChild(new BlitImageTestCase(testCtx, name.c_str(), clearValue.color, data));
+ blitRandomTests->addChild(new BlitImageTestCase(testCtx, name.c_str(), clearValue.color, data, cmdBufferType));
}
+ std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ std::string groupDesc = "Blit Image Tests with " + groupName + " command buffer";
+ de::MovePtr<tcu::TestCaseGroup> blitTests (new tcu::TestCaseGroup(testCtx, groupName.c_str(), groupDesc.c_str()));
+ blitTests->addChild(blitStaticTests.release());
+ blitTests->addChild(blitRandomTests.release());
+ return blitTests.release();
+}
+
+} // anonymous
+
+tcu::TestCaseGroup* createBlitImageTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> blitTests (new tcu::TestCaseGroup(testCtx, "blit", "Blit Image Tests"));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryTests (new tcu::TestCaseGroup(testCtx, "primary", "Blit Image Tests using primary command buffer"));
- primaryTests->addChild(blitStaticTests.release());
- primaryTests->addChild(blitRandomTests.release());
- blitTests->addChild(primaryTests.release());
- }
+ blitTests->addChild(createBlitImageTests(testCtx, CMD_BUFFER_PRIMARY));
+ blitTests->addChild(createBlitImageTests(testCtx, CMD_BUFFER_SECONDARY));
+
return blitTests.release();
}
ClearColorImageTestInstance (Context& ctx,
const vk::VkClearColorValue& clearColorValue,
const ValidationData& refData,
- const ImageValidator& validator);
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType);
virtual tcu::TestStatus iterate (void);
private:
const vk::VkClearColorValue& m_clearColorValue;
const ValidationData& m_refData;
const ImageValidator& m_validator;
+ const CmdBufferType m_cmdBufferType;
};
class ClearColorImageTestCase : public TestCase
ClearColorImageTestCase (tcu::TestContext& testCtx,
const std::string& name,
vk::VkClearColorValue clearColorValue,
- ValidationData data)
+ ValidationData data,
+ CmdBufferType cmdBufferType)
: TestCase (testCtx, name, "Clear color image.")
, m_clearColorValue (clearColorValue)
, m_refData (data)
+ , m_cmdBufferType (cmdBufferType)
{
}
virtual ~ClearColorImageTestCase (void) {}
virtual TestInstance* createInstance (Context& ctx) const
{
- return new ClearColorImageTestInstance(ctx, m_clearColorValue, m_refData, m_validator);
+ return new ClearColorImageTestInstance(ctx, m_clearColorValue, m_refData, m_validator, m_cmdBufferType);
}
virtual void initPrograms (vk::SourceCollections& programCollection) const
{
vk::VkClearColorValue m_clearColorValue;
ValidationData m_refData;
ImageValidator m_validator;
+ CmdBufferType m_cmdBufferType;
};
ClearColorImageTestInstance::ClearColorImageTestInstance (Context& ctx,
const vk::VkClearColorValue& clearColorValue,
const ValidationData& refData,
- const ImageValidator& validator)
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType)
: ProtectedTestInstance (ctx)
, m_imageFormat (vk::VK_FORMAT_R8G8B8A8_UNORM)
, m_clearColorValue (clearColorValue)
, m_refData (refData)
, m_validator (validator)
+ , m_cmdBufferType (cmdBufferType)
{
}
vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+ vk::Unique<vk::VkCommandBuffer> secondaryCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY));
+ vk::VkCommandBuffer targetCmdBuffer = (m_cmdBufferType == CMD_BUFFER_SECONDARY) ? *secondaryCmdBuffer : *cmdBuffer;
const vk::VkImageSubresourceRange subresourceRange =
{
// Begin cmd buffer
beginCommandBuffer(vk, *cmdBuffer);
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ // Begin secondary command buffer
+ const vk::VkCommandBufferInheritanceInfo bufferInheritanceInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, // sType
+ DE_NULL, // pNext
+ DE_NULL, // renderPass
+ 0u, // subpass
+ DE_NULL, // framebuffer
+ VK_FALSE, // occlusionQueryEnable
+ (vk::VkQueryControlFlags)0u, // queryFlags
+ (vk::VkQueryPipelineStatisticFlags)0u, // pipelineStatistics
+ };
+ beginSecondaryCommandBuffer(vk, *secondaryCmdBuffer, bufferInheritanceInfo);
+ }
+
// Start image barrier
{
const vk::VkImageMemoryBarrier initializeBarrier =
subresourceRange, // subresourceRange
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
}
// Image clear
- vk.cmdClearColorImage(*cmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_GENERAL, &m_clearColorValue, 1, &subresourceRange);
+ vk.cmdClearColorImage(targetCmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_GENERAL, &m_clearColorValue, 1, &subresourceRange);
{
const vk::VkImageMemoryBarrier initializeBarrier =
**colorImage, // image
subresourceRange // subresourceRange
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
1, &initializeBarrier);
}
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ VK_CHECK(vk.endCommandBuffer(*secondaryCmdBuffer));
+ vk.cmdExecuteCommands(*cmdBuffer, 1u, &secondaryCmdBuffer.get());
+ }
+
VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
// Submit command buffer
return tcu::TestStatus::fail("Something went really wrong");
}
-} // anonymous
-
-tcu::TestCaseGroup* createClearColorImageTests (tcu::TestContext& testCtx)
+tcu::TestCaseGroup* createClearColorImageTests (tcu::TestContext& testCtx, CmdBufferType cmdBufferType)
{
struct {
vk::VkClearColorValue clearColorValue;
for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(testData); ++ndx)
{
const std::string name = "clear_" + de::toString(ndx + 1);
- clearStaticTests->addChild(new ClearColorImageTestCase(testCtx, name.c_str(), testData[ndx].clearColorValue, testData[ndx].data));
+ clearStaticTests->addChild(new ClearColorImageTestCase(testCtx, name.c_str(), testData[ndx].clearColorValue, testData[ndx].data, cmdBufferType));
}
/* Add a few randomized tests */
tcu::Vec4(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f)) },
{ refValue, refValue, refValue, refValue }
};
-
- clearRandomTests->addChild(new ClearColorImageTestCase(testCtx, name.c_str(), clearValue.color, data));
+ clearRandomTests->addChild(new ClearColorImageTestCase(testCtx, name.c_str(), clearValue.color, data, cmdBufferType));
}
+ std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ std::string groupDesc = "Clear Color Image Tests with " + groupName + " command buffer";
+ de::MovePtr<tcu::TestCaseGroup> clearTests (new tcu::TestCaseGroup(testCtx, groupName.c_str(), groupDesc.c_str()));
+ clearTests->addChild(clearStaticTests.release());
+ clearTests->addChild(clearRandomTests.release());
+ return clearTests.release();
+}
+
+} // anonymous
+
+tcu::TestCaseGroup* createClearColorImageTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> clearTests (new tcu::TestCaseGroup(testCtx, "clear_color", "Clear Color Image Tests"));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryTests (new tcu::TestCaseGroup(testCtx, "primary", "Clear Color Image Tests using primary command buffer"));
- primaryTests->addChild(clearStaticTests.release());
- primaryTests->addChild(clearRandomTests.release());
- clearTests->addChild(primaryTests.release());
- }
+ clearTests->addChild(createClearColorImageTests(testCtx, CMD_BUFFER_PRIMARY));
+ clearTests->addChild(createClearColorImageTests(testCtx, CMD_BUFFER_SECONDARY));
+
return clearTests.release();
}
CopyBufferToImageTestInstance (Context& ctx,
const deUint32 fillValue,
const ValidationData& refData,
- const ImageValidator& validator);
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType);
virtual tcu::TestStatus iterate (void);
private:
const deUint32 m_fillValue;
const ValidationData& m_refData;
const ImageValidator& m_validator;
+ const CmdBufferType m_cmdBufferType;
};
class CopyBufferToImageTestCase : public TestCase
CopyBufferToImageTestCase (tcu::TestContext& testCtx,
const std::string& name,
deUint32 fillValue,
- ValidationData data)
+ ValidationData data,
+ CmdBufferType cmdBufferType)
: TestCase (testCtx, name, "Copy buffer to image.")
, m_fillValue (fillValue)
, m_refData (data)
+ , m_cmdBufferType (cmdBufferType)
{
}
virtual ~CopyBufferToImageTestCase (void) {}
virtual TestInstance* createInstance (Context& ctx) const
{
- return new CopyBufferToImageTestInstance(ctx, m_fillValue, m_refData, m_validator);
+ return new CopyBufferToImageTestInstance(ctx, m_fillValue, m_refData, m_validator, m_cmdBufferType);
}
virtual void initPrograms (vk::SourceCollections& programCollection) const
{
deUint32 m_fillValue;
ValidationData m_refData;
ImageValidator m_validator;
+ CmdBufferType m_cmdBufferType;
};
CopyBufferToImageTestInstance::CopyBufferToImageTestInstance (Context& ctx,
const deUint32 fillValue,
const ValidationData& refData,
- const ImageValidator& validator)
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType)
: ProtectedTestInstance (ctx)
, m_imageFormat (vk::VK_FORMAT_R32G32B32A32_UINT)
, m_fillValue (fillValue)
, m_refData (refData)
, m_validator (validator)
+ , m_cmdBufferType (cmdBufferType)
{
}
vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+ vk::Unique<vk::VkCommandBuffer> secondaryCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY));
+ vk::VkCommandBuffer targetCmdBuffer = (m_cmdBufferType == CMD_BUFFER_SECONDARY) ? *secondaryCmdBuffer : *cmdBuffer;
// Begin cmd buffer
beginCommandBuffer(vk, *cmdBuffer);
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ // Begin secondary command buffer
+ const vk::VkCommandBufferInheritanceInfo bufferInheritanceInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, // sType
+ DE_NULL, // pNext
+ DE_NULL, // renderPass
+ 0u, // subpass
+ DE_NULL, // framebuffer
+ VK_FALSE, // occlusionQueryEnable
+ (vk::VkQueryControlFlags)0u, // queryFlags
+ (vk::VkQueryPipelineStatisticFlags)0u, // pipelineStatistics
+ };
+ beginSecondaryCommandBuffer(vk, *secondaryCmdBuffer, bufferInheritanceInfo);
+ }
+
// Start src buffer barrier
{
const vk::VkBufferMemoryBarrier startBufferBarrier =
0u, // VkDeviceSize offset
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags) 0,
1, &startBufferBarrier,
0, (const vk::VkImageMemoryBarrier *) DE_NULL);
}
- vk.cmdFillBuffer(*cmdBuffer, **srcBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
+ vk.cmdFillBuffer(targetCmdBuffer, **srcBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
// Barrier to change accessMask to transfer read bit for source buffer
{
0u, // VkDeviceSize offset
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
nullOffset, // VkOffset3D imageOffset
imageExtent, // VkExtent3D imageExtent
};
- vk.cmdCopyBufferToImage(*cmdBuffer, **srcBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, ©Region);
+ vk.cmdCopyBufferToImage(targetCmdBuffer, **srcBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, ©Region);
{
const vk::VkImageMemoryBarrier endImgBarrier =
1u, // uint32_t subresourceRange
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
1, &endImgBarrier);
}
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ VK_CHECK(vk.endCommandBuffer(*secondaryCmdBuffer));
+ vk.cmdExecuteCommands(*cmdBuffer, 1u, &secondaryCmdBuffer.get());
+ }
+
VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
// Submit command buffer
return tcu::TestStatus::fail("Something went really wrong");
}
-} // anonymous
-
-tcu::TestCaseGroup* createCopyBufferToImageTests (tcu::TestContext& testCtx)
+tcu::TestCaseGroup* createCopyBufferToImageTests (tcu::TestContext& testCtx, CmdBufferType cmdBufferType)
{
struct {
const union {
for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(testData); ++ndx)
{
const std::string name = "copy_" + de::toString(ndx + 1);
- copyStaticTests->addChild(new CopyBufferToImageTestCase(testCtx, name.c_str(), testData[ndx].fillValue.uint, testData[ndx].data));
+ copyStaticTests->addChild(new CopyBufferToImageTestCase(testCtx, name.c_str(), testData[ndx].fillValue.uint, testData[ndx].data, cmdBufferType));
}
/* Add a few randomized tests */
tcu::Vec4(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f)) },
{ refValue, refValue, refValue, refValue }
};
-
- copyRandomTests->addChild(new CopyBufferToImageTestCase(testCtx, name.c_str(), fillValue.uint, data));
+ copyRandomTests->addChild(new CopyBufferToImageTestCase(testCtx, name.c_str(), fillValue.uint, data, cmdBufferType));
}
- de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, "copy_buffer_to_image", "Copy Buffer To Image Tests"));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryTests (new tcu::TestCaseGroup(testCtx, "primary", "Copy Buffer To Image Tests using primary command buffer"));
- primaryTests->addChild(copyStaticTests.release());
- primaryTests->addChild(copyRandomTests.release());
-
- copyTests->addChild(primaryTests.release());
- }
+ std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ std::string groupDesc = "Copy Buffer To Image Tests with " + groupName + " command buffer";
+ de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, groupName.c_str(), groupDesc.c_str()));
+ copyTests->addChild(copyStaticTests.release());
+ copyTests->addChild(copyRandomTests.release());
return copyTests.release();
}
+} // anonymous
+
+tcu::TestCaseGroup* createCopyBufferToImageTests (tcu::TestContext& testCtx)
+{
+ de::MovePtr<tcu::TestCaseGroup> clearTests (new tcu::TestCaseGroup(testCtx, "copy_buffer_to_image", "Copy Buffer To Image Tests"));
+
+ clearTests->addChild(createCopyBufferToImageTests(testCtx, CMD_BUFFER_PRIMARY));
+ clearTests->addChild(createCopyBufferToImageTests(testCtx, CMD_BUFFER_SECONDARY));
+
+ return clearTests.release();
+}
+
} // ProtectedMem
} // vkt
CopyImageTestInstance (Context& ctx,
const vk::VkClearColorValue& clearColorValue,
const ValidationData& refData,
- const ImageValidator& validator);
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType);
virtual tcu::TestStatus iterate (void);
private:
const vk::VkClearColorValue& m_clearColorValue;
const ValidationData& m_refData;
const ImageValidator& m_validator;
+ const CmdBufferType m_cmdBufferType;
};
class CopyImageTestCase : public TestCase
CopyImageTestCase (tcu::TestContext& testCtx,
const std::string& name,
vk::VkClearColorValue clearColorValue,
- ValidationData data)
+ ValidationData data,
+ CmdBufferType cmdBufferType)
: TestCase (testCtx, name, "Clear and copy image.")
, m_clearColorValue (clearColorValue)
, m_refData (data)
+ , m_cmdBufferType (cmdBufferType)
{
}
virtual ~CopyImageTestCase (void) {}
virtual TestInstance* createInstance (Context& ctx) const
{
- return new CopyImageTestInstance(ctx, m_clearColorValue, m_refData, m_validator);
+ return new CopyImageTestInstance(ctx, m_clearColorValue, m_refData, m_validator, m_cmdBufferType);
}
virtual void initPrograms (vk::SourceCollections& programCollection) const
{
vk::VkClearColorValue m_clearColorValue;
ValidationData m_refData;
ImageValidator m_validator;
+ CmdBufferType m_cmdBufferType;
};
CopyImageTestInstance::CopyImageTestInstance (Context& ctx,
const vk::VkClearColorValue& clearColorValue,
const ValidationData& refData,
- const ImageValidator& validator)
+ const ImageValidator& validator,
+ const CmdBufferType cmdBufferType)
: ProtectedTestInstance (ctx)
, m_imageFormat (vk::VK_FORMAT_R8G8B8A8_UNORM)
, m_clearColorValue (clearColorValue)
, m_refData (refData)
, m_validator (validator)
+ , m_cmdBufferType (cmdBufferType)
{
}
vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+ vk::Unique<vk::VkCommandBuffer> secondaryCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY));
+ vk::VkCommandBuffer targetCmdBuffer = (m_cmdBufferType == CMD_BUFFER_SECONDARY) ? *secondaryCmdBuffer : *cmdBuffer;
// Begin cmd buffer
beginCommandBuffer(vk, *cmdBuffer);
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ // Begin secondary command buffer
+ const vk::VkCommandBufferInheritanceInfo secCmdBufInheritInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
+ DE_NULL,
+ (vk::VkRenderPass)0u, // renderPass
+ 0u, // subpass
+ (vk::VkFramebuffer)0u, // framebuffer
+ VK_FALSE, // occlusionQueryEnable
+ (vk::VkQueryControlFlags)0u, // queryFlags
+ (vk::VkQueryPipelineStatisticFlags)0u, // pipelineStatistics
+ };
+ beginSecondaryCommandBuffer(vk, *secondaryCmdBuffer, secCmdBufInheritInfo);
+ }
+
// Start image barrier for source image.
{
const vk::VkImageMemoryBarrier startImgBarrier =
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
0u, // uint32_t baseArrayLayer
1u, // uint32_t layerCount
};
- vk.cmdClearColorImage(*cmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL, &m_clearColorValue, 1, &subresourceRange);
+ vk.cmdClearColorImage(targetCmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL, &m_clearColorValue, 1, &subresourceRange);
// Image barrier to change accessMask to transfer read bit for source image.
{
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
(vk::VkDependencyFlags)0,
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
imageExtent, // VkExtent3D extent;
};
- vk.cmdCopyImage(*cmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL,
+ vk.cmdCopyImage(targetCmdBuffer, **colorImageSrc, vk::VK_IMAGE_LAYOUT_GENERAL,
**colorImage, vk::VK_IMAGE_LAYOUT_GENERAL, 1u, ©ImageRegion);
{
1u, // subresourceRange
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
1, &endImgBarrier);
}
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ VK_CHECK(vk.endCommandBuffer(*secondaryCmdBuffer));
+ vk.cmdExecuteCommands(*cmdBuffer, 1u, &secondaryCmdBuffer.get());
+ }
+
VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
// Submit command buffer
return tcu::TestStatus::fail("Something went really wrong");
}
-} // anonymous
-
-tcu::TestCaseGroup* createCopyImageTests (tcu::TestContext& testCtx)
+tcu::TestCaseGroup* createCopyImageTests (tcu::TestContext& testCtx, CmdBufferType cmdBufferType)
{
struct {
const vk::VkClearColorValue clearColorValue;
for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(testData); ++ndx)
{
const std::string name = "copy_" + de::toString(ndx + 1);
- copyStaticTests->addChild(new CopyImageTestCase(testCtx, name.c_str(), testData[ndx].clearColorValue, testData[ndx].data));
+ copyStaticTests->addChild(new CopyImageTestCase(testCtx, name.c_str(), testData[ndx].clearColorValue, testData[ndx].data, cmdBufferType));
}
/* Add a few randomized tests */
tcu::Vec4(rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f), rnd.getFloat(0.0f, 1.0f)) },
{ refValue, refValue, refValue, refValue }
};
-
- copyRandomTests->addChild(new CopyImageTestCase(testCtx, name.c_str(), clearValue.color, data));
+ copyRandomTests->addChild(new CopyImageTestCase(testCtx, name.c_str(), clearValue.color, data, cmdBufferType));
}
+ std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ std::string groupDesc = "Copy Image Tests with " + groupName + " command buffer";
+ de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, groupName.c_str(), groupDesc.c_str()));
+ copyTests->addChild(copyStaticTests.release());
+ copyTests->addChild(copyRandomTests.release());
+ return copyTests.release();
+}
+
+} // anonymous
+
+tcu::TestCaseGroup* createCopyImageTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, "copy", "Copy Image Tests"));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryTests (new tcu::TestCaseGroup(testCtx, "primary", "Copy Image Tests using primary command buffer"));
- primaryTests->addChild(copyStaticTests.release());
- primaryTests->addChild(copyRandomTests.release());
- copyTests->addChild(primaryTests.release());
- }
+ copyTests->addChild(createCopyImageTests(testCtx, CMD_BUFFER_PRIMARY));
+ copyTests->addChild(createCopyImageTests(testCtx, CMD_BUFFER_SECONDARY));
+
return copyTests.release();
}
public:
CopyImageToBufferTestInstance (Context& ctx,
const vk::VkClearColorValue fillValue,
- const BufferValidator<T>& validator);
+ const BufferValidator<T>& validator,
+ const CmdBufferType cmdBufferType);
virtual tcu::TestStatus iterate (void);
private:
const vk::VkFormat m_imageFormat;
const vk::VkClearColorValue m_fillValue;
const BufferValidator<T>& m_validator;
+ const CmdBufferType m_cmdBufferType;
};
CopyImageToBufferTestCase (tcu::TestContext& testCtx,
const std::string& name,
vk::VkClearColorValue fillValue,
- ValidationData<T> data)
+ ValidationData<T> data,
+ CmdBufferType cmdBufferType)
: TestCase (testCtx, name, "Copy image to buffer.")
, m_fillValue (fillValue)
, m_validator (data)
+ , m_cmdBufferType (cmdBufferType)
{
}
virtual ~CopyImageToBufferTestCase (void) {}
virtual TestInstance* createInstance (Context& ctx) const
{
- return new CopyImageToBufferTestInstance<T>(ctx, m_fillValue, m_validator);
+ return new CopyImageToBufferTestInstance<T>(ctx, m_fillValue, m_validator, m_cmdBufferType);
}
virtual void initPrograms (vk::SourceCollections& programCollection) const
{
private:
vk::VkClearColorValue m_fillValue;
BufferValidator<T> m_validator;
+ CmdBufferType m_cmdBufferType;
};
template<typename T>
CopyImageToBufferTestInstance<T>::CopyImageToBufferTestInstance (Context& ctx,
const vk::VkClearColorValue fillValue,
- const BufferValidator<T>& validator)
+ const BufferValidator<T>& validator,
+ const CmdBufferType cmdBufferType)
: ProtectedTestInstance (ctx)
, m_imageFormat (vk::VK_FORMAT_R32G32B32A32_UINT)
, m_fillValue (fillValue)
, m_validator (validator)
+ , m_cmdBufferType (cmdBufferType)
{
}
vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+ vk::Unique<vk::VkCommandBuffer> secondaryCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY));
+ vk::VkCommandBuffer targetCmdBuffer = (m_cmdBufferType == CMD_BUFFER_SECONDARY) ? *secondaryCmdBuffer : *cmdBuffer;
// Begin cmd buffer
beginCommandBuffer(vk, *cmdBuffer);
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ // Begin secondary command buffer
+ const vk::VkCommandBufferInheritanceInfo secCmdBufInheritInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
+ DE_NULL,
+ (vk::VkRenderPass)0u, // renderPass
+ 0u, // subpass
+ (vk::VkFramebuffer)0u, // framebuffer
+ VK_FALSE, // occlusionQueryEnable
+ (vk::VkQueryControlFlags)0u, // queryFlags
+ (vk::VkQueryPipelineStatisticFlags)0u, // pipelineStatistics
+ };
+ beginSecondaryCommandBuffer(vk, *secondaryCmdBuffer, secCmdBufInheritInfo);
+ }
// Start image barrier for source image.
{
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
1u, // uint32_t layerCount
};
- vk.cmdClearColorImage(*cmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_GENERAL, &m_fillValue, 1, &subresourceRange);
+ vk.cmdClearColorImage(targetCmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_GENERAL, &m_fillValue, 1, &subresourceRange);
// Image barrier to change accessMask to transfer read bit for source image.
{
}
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
(vk::VkDependencyFlags)0,
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
nullOffset, // VkOffset3D imageOffset
imageExtent, // VkExtent3D imageExtent
};
- vk.cmdCopyImageToBuffer(*cmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **dstBuffer, 1u, ©Region);
+ vk.cmdCopyImageToBuffer(targetCmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **dstBuffer, 1u, ©Region);
{
const vk::VkBufferMemoryBarrier endBufferBarrier =
0u, // VkDeviceSize offset
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkImageMemoryBarrier*)DE_NULL);
}
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ VK_CHECK(vk.endCommandBuffer(*secondaryCmdBuffer));
+ vk.cmdExecuteCommands(*cmdBuffer, 1u, &secondaryCmdBuffer.get());
+ }
+
VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
// Submit command buffer
return tcu::TestStatus::fail("Something went really wrong");
}
-} // anonymous
-
-tcu::TestCaseGroup* createCopyImageToFloatBufferTests(tcu::TestContext& testCtx)
+tcu::TestCaseGroup* createCopyImageToFloatBufferTests(tcu::TestContext& testCtx, CmdBufferType cmdBufferType)
{
struct {
const vk::VkClearColorValue fillValue;
DE_ASSERT(testData[ndx].data.positions[3].x() < MAX_POSITION);
const std::string name = "copy_" + de::toString(ndx + 1);
- copyStaticTests->addChild(new CopyImageToBufferTestCase<tcu::Vec4>(testCtx, name.c_str(), testData[ndx].fillValue, testData[ndx].data));
+ copyStaticTests->addChild(new CopyImageToBufferTestCase<tcu::Vec4>(testCtx, name.c_str(), testData[ndx].fillValue, testData[ndx].data, cmdBufferType));
}
/* Add a few randomized tests */
DE_ASSERT(data.positions[2].x() < MAX_POSITION);
DE_ASSERT(data.positions[3].x() < MAX_POSITION);
- copyRandomTests->addChild(new CopyImageToBufferTestCase<tcu::Vec4>(testCtx, name.c_str(), clearValue.color, data));
+ copyRandomTests->addChild(new CopyImageToBufferTestCase<tcu::Vec4>(testCtx, name.c_str(), clearValue.color, data, cmdBufferType));
}
+ std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ std::string groupDesc = "Copy Image to Buffer Tests with " + groupName + " command buffer";
+ de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, groupName.c_str(), groupDesc.c_str()));
+ copyTests->addChild(copyStaticTests.release());
+ copyTests->addChild(copyRandomTests.release());
+ return copyTests.release();
+}
+
+} // anonymous
+
+tcu::TestCaseGroup* createCopyImageToFloatBufferTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, "copy_image_to_float_buffer", "Copy Image to Buffer Tests"));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryTests (new tcu::TestCaseGroup(testCtx, "primary", "Copy Image to Buffer Tests using primary command buffer"));
- primaryTests->addChild(copyStaticTests.release());
- primaryTests->addChild(copyRandomTests.release());
- copyTests->addChild(primaryTests.release());
- }
+ copyTests->addChild(createCopyImageToFloatBufferTests(testCtx, CMD_BUFFER_PRIMARY));
+ copyTests->addChild(createCopyImageToFloatBufferTests(testCtx, CMD_BUFFER_SECONDARY));
+
return copyTests.release();
}
FillUpdateCopyBufferTestInstance (Context& ctx,
const deUint32 fillValue,
const BufferValidator<T>& validator,
- CmdType cmdType);
+ CmdType cmdType,
+ const CmdBufferType cmdBufferType);
virtual tcu::TestStatus iterate (void);
private:
const deUint32 m_fillValue;
const BufferValidator<T>& m_validator;
CmdType m_cmdType;
+ const CmdBufferType m_cmdBufferType;
};
const std::string& name,
deUint32 fillValue,
ValidationData<T> data,
- CmdType cmdType)
- : TestCase (testCtx, name, getTestTypeName(cmdType))
- , m_fillValue (fillValue)
- , m_validator (data)
- , m_cmdType (cmdType)
+ CmdType cmdType,
+ CmdBufferType cmdBufferType)
+ : TestCase (testCtx, name, getTestTypeName(cmdType))
+ , m_fillValue (fillValue)
+ , m_validator (data)
+ , m_cmdType (cmdType)
+ , m_cmdBufferType (cmdBufferType)
{
}
virtual ~FillUpdateCopyBufferTestCase (void) {}
virtual TestInstance* createInstance (Context& ctx) const
{
- return new FillUpdateCopyBufferTestInstance<T>(ctx, m_fillValue, m_validator, m_cmdType);
+ return new FillUpdateCopyBufferTestInstance<T>(ctx, m_fillValue, m_validator, m_cmdType, m_cmdBufferType);
}
virtual void initPrograms (vk::SourceCollections& programCollection) const
{
deUint32 m_fillValue;
BufferValidator<T> m_validator;
CmdType m_cmdType;
+ CmdBufferType m_cmdBufferType;
};
template<typename T>
FillUpdateCopyBufferTestInstance<T>::FillUpdateCopyBufferTestInstance (Context& ctx,
const deUint32 fillValue,
const BufferValidator<T>& validator,
- CmdType cmdType)
+ CmdType cmdType,
+ const CmdBufferType cmdBufferType)
: ProtectedTestInstance (ctx)
, m_fillValue (fillValue)
, m_validator (validator)
, m_cmdType (cmdType)
+ , m_cmdBufferType (cmdBufferType)
{
}
vk::Unique<vk::VkCommandPool> cmdPool (makeCommandPool(vk, device, PROTECTION_ENABLED, queueFamilyIndex));
vk::Unique<vk::VkCommandBuffer> cmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+ vk::Unique<vk::VkCommandBuffer> secondaryCmdBuffer (vk::allocateCommandBuffer(vk, device, *cmdPool, vk::VK_COMMAND_BUFFER_LEVEL_SECONDARY));
+ vk::VkCommandBuffer targetCmdBuffer = (m_cmdBufferType == CMD_BUFFER_SECONDARY) ? *secondaryCmdBuffer : *cmdBuffer;
// Begin cmd buffer
beginCommandBuffer(vk, *cmdBuffer);
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ // Begin secondary command buffer
+ const vk::VkCommandBufferInheritanceInfo secCmdBufInheritInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
+ DE_NULL,
+ (vk::VkRenderPass)0u, // renderPass
+ 0u, // subpass
+ (vk::VkFramebuffer)0u, // framebuffer
+ VK_FALSE, // occlusionQueryEnable
+ (vk::VkQueryControlFlags)0u, // queryFlags
+ (vk::VkQueryPipelineStatisticFlags)0u, // pipelineStatistics
+ };
+ beginSecondaryCommandBuffer(vk, *secondaryCmdBuffer, secCmdBufInheritInfo);
+ }
+
switch (m_cmdType) {
case FILL_BUFFER:
{
0u, // VkDeviceSize offset
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags) 0,
1, &startFillBufferBarrier,
0, (const vk::VkImageMemoryBarrier *) DE_NULL);
// Fill buffer
- vk.cmdFillBuffer(*cmdBuffer, **dstBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
+ vk.cmdFillBuffer(targetCmdBuffer, **dstBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
break;
}
0u, // VkDeviceSize offset
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags) 0,
deUint32 data[BUFFER_SIZE];
for (size_t ndx = 0; ndx < BUFFER_SIZE; ndx++)
data[ndx] = m_fillValue;
- vk.cmdUpdateBuffer(*cmdBuffer, **dstBuffer, 0u, bufferSize, (const deUint32 *) &data);
+ vk.cmdUpdateBuffer(targetCmdBuffer, **dstBuffer, 0u, bufferSize, (const deUint32 *) &data);
break;
}
0u, // VkDeviceSize offset
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags) 0,
0, (const vk::VkMemoryBarrier *) DE_NULL,
1, &startBufferBarrier,
0, (const vk::VkImageMemoryBarrier *) DE_NULL);
- vk.cmdFillBuffer(*cmdBuffer, **srcBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
+ vk.cmdFillBuffer(targetCmdBuffer, **srcBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
// Barrier to change accessMask to transfer read bit for source buffer
const vk::VkBufferMemoryBarrier startCopyBufferBarrier =
startCopyBufferBarrier,
dstBufferBarrier
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
(vk::VkDependencyFlags)0,
0ull, // VkDeviceSize dstOffset;
bufferSize // VkDeviceSize size;
};
- vk.cmdCopyBuffer(*cmdBuffer, **srcBuffer, **dstBuffer, 1u, ©BufferRegion);
+ vk.cmdCopyBuffer(targetCmdBuffer, **srcBuffer, **dstBuffer, 1u, ©BufferRegion);
break;
}
0u, // VkDeviceSize offset
VK_WHOLE_SIZE, // VkDeviceSize size
};
- vk.cmdPipelineBarrier(*cmdBuffer,
+ vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkImageMemoryBarrier*)DE_NULL);
}
+ if (m_cmdBufferType == CMD_BUFFER_SECONDARY)
+ {
+ VK_CHECK(vk.endCommandBuffer(*secondaryCmdBuffer));
+ vk.cmdExecuteCommands(*cmdBuffer, 1u, &secondaryCmdBuffer.get());
+ }
+
VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
// Submit command buffer
return tcu::TestStatus::fail("Something went really wrong");
}
-tcu::TestCaseGroup* createFillUpdateCopyBufferFloatTests (tcu::TestContext& testCtx, CmdType cmdType)
+tcu::TestCaseGroup* createFillUpdateCopyBufferFloatTests (tcu::TestContext& testCtx, CmdType cmdType, CmdBufferType cmdBufferType)
{
struct {
const union {
const std::string name = "test_" + de::toString(ndx + 1);
staticTests->addChild(new FillUpdateCopyBufferTestCase<tcu::Vec4>(
- testCtx, name.c_str(), testData[ndx].fillValue.uint, testData[ndx].data, cmdType));
+ testCtx, name.c_str(), testData[ndx].fillValue.uint, testData[ndx].data, cmdType, cmdBufferType));
}
/* Add a few randomized tests */
DE_ASSERT(data.positions[2].x() < MAX_POSITION);
DE_ASSERT(data.positions[3].x() < MAX_POSITION);
- randomTests->addChild(new FillUpdateCopyBufferTestCase<tcu::Vec4>(testCtx, name.c_str(), fillValue.uint, data, cmdType));
+ randomTests->addChild(new FillUpdateCopyBufferTestCase<tcu::Vec4>(testCtx, name.c_str(), fillValue.uint, data, cmdType, cmdBufferType));
}
- de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, "float_buffer", desc.c_str()));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryGroup (new tcu::TestCaseGroup(testCtx, "primary", (desc + " using primary command buffer").c_str()));
- primaryGroup->addChild(staticTests.release());
- primaryGroup->addChild(randomTests.release());
+ const std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ de::MovePtr<tcu::TestCaseGroup> primaryGroup (new tcu::TestCaseGroup(testCtx, groupName.c_str(), (desc + " using " + groupName.c_str() + " command buffer").c_str()));
+ primaryGroup->addChild(staticTests.release());
+ primaryGroup->addChild(randomTests.release());
- testGroup->addChild(primaryGroup.release());
- }
+ return primaryGroup.release();
+}
+
+tcu::TestCaseGroup* createFillUpdateCopyBufferFloatTests (tcu::TestContext& testCtx, CmdType cmdType)
+{
+ const std::string desc = std::string(getTestTypeName(cmdType)) + " (float)";
+ de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, "float_buffer", desc.c_str()));
+ testGroup->addChild(createFillUpdateCopyBufferFloatTests(testCtx, cmdType, CMD_BUFFER_PRIMARY));
+ testGroup->addChild(createFillUpdateCopyBufferFloatTests(testCtx, cmdType, CMD_BUFFER_SECONDARY));
return testGroup.release();
}
-tcu::TestCaseGroup* createFillUpdateCopyBufferIntegerTests (tcu::TestContext& testCtx, CmdType cmdType)
+tcu::TestCaseGroup* createFillUpdateCopyBufferIntegerTests (tcu::TestContext& testCtx, CmdType cmdType, CmdBufferType cmdBufferType)
{
struct {
const union {
const std::string name = "test_" + de::toString(ndx + 1);
staticTests->addChild(new FillUpdateCopyBufferTestCase<tcu::IVec4>(
- testCtx, name.c_str(), testData[ndx].fillValue.uint, testData[ndx].data, cmdType));
+ testCtx, name.c_str(), testData[ndx].fillValue.uint, testData[ndx].data, cmdType, cmdBufferType));
}
/* Add a few randomized tests */
DE_ASSERT(data.positions[2].x() < MAX_POSITION);
DE_ASSERT(data.positions[3].x() < MAX_POSITION);
- randomTests->addChild(new FillUpdateCopyBufferTestCase<tcu::IVec4>(testCtx, name.c_str(), fillValue.uint, data, cmdType));
+ randomTests->addChild(new FillUpdateCopyBufferTestCase<tcu::IVec4>(testCtx, name.c_str(), fillValue.uint, data, cmdType, cmdBufferType));
}
- de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, "integer_buffer", desc.c_str()));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryGroup (new tcu::TestCaseGroup(testCtx, "primary", (desc + " using primary command buffer").c_str()));
- primaryGroup->addChild(staticTests.release());
- primaryGroup->addChild(randomTests.release());
+ const std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ de::MovePtr<tcu::TestCaseGroup> primaryGroup (new tcu::TestCaseGroup(testCtx, groupName.c_str(), (desc + " using " + groupName.c_str() + " command buffer").c_str()));
+ primaryGroup->addChild(staticTests.release());
+ primaryGroup->addChild(randomTests.release());
- testGroup->addChild(primaryGroup.release());
- }
+ return primaryGroup.release();
+}
+
+tcu::TestCaseGroup* createFillUpdateCopyBufferIntegerTests (tcu::TestContext& testCtx, CmdType cmdType)
+{
+ const std::string desc = std::string(getTestTypeName(cmdType)) + " (integer)";
+ de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, "integer_buffer", desc.c_str()));
+ testGroup->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, cmdType, CMD_BUFFER_PRIMARY));
+ testGroup->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, cmdType, CMD_BUFFER_SECONDARY));
return testGroup.release();
}
-tcu::TestCaseGroup* createFillUpdateCopyBufferUnsignedTests (tcu::TestContext& testCtx, CmdType cmdType)
+tcu::TestCaseGroup* createFillUpdateCopyBufferUnsignedTests (tcu::TestContext& testCtx, CmdType cmdType, CmdBufferType cmdBufferType)
{
struct {
deUint32 fillValue;
const std::string name = "test_" + de::toString(ndx + 1);
staticTests->addChild(new FillUpdateCopyBufferTestCase<tcu::UVec4>(
- testCtx, name.c_str(), testData[ndx].fillValue, testData[ndx].data, cmdType));
+ testCtx, name.c_str(), testData[ndx].fillValue, testData[ndx].data, cmdType, cmdBufferType));
}
/* Add a few randomized tests */
DE_ASSERT(data.positions[2].x() < MAX_POSITION);
DE_ASSERT(data.positions[3].x() < MAX_POSITION);
- randomTests->addChild(new FillUpdateCopyBufferTestCase<tcu::UVec4>(testCtx, name.c_str(), fillValue, data, cmdType));
+ randomTests->addChild(new FillUpdateCopyBufferTestCase<tcu::UVec4>(testCtx, name.c_str(), fillValue, data, cmdType, cmdBufferType));
}
- de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, "unsigned_buffer", desc.c_str()));
- {
- de::MovePtr<tcu::TestCaseGroup> primaryGroup (new tcu::TestCaseGroup(testCtx, "primary", (desc + " using primary command buffer").c_str()));
- primaryGroup->addChild(staticTests.release());
- primaryGroup->addChild(randomTests.release());
+ const std::string groupName = getCmdBufferTypeStr(cmdBufferType);
+ de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, groupName.c_str(), (desc + " using " + groupName.c_str() + " command buffer").c_str()));
+ testGroup->addChild(staticTests.release());
+ testGroup->addChild(randomTests.release());
- testGroup->addChild(primaryGroup.release());
- }
+ return testGroup.release();
+}
+
+tcu::TestCaseGroup* createFillUpdateCopyBufferUnsignedTests (tcu::TestContext& testCtx, CmdType cmdType)
+{
+ const std::string desc = std::string(getTestTypeName(cmdType)) + " (unsinged)";
+ de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, "unsigned_buffer", desc.c_str()));
+ testGroup->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, cmdType, CMD_BUFFER_PRIMARY));
+ testGroup->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, cmdType, CMD_BUFFER_SECONDARY));
return testGroup.release();
}
} // anonymous
-tcu::TestCaseGroup* createFillBufferTests(tcu::TestContext& testCtx) {
+tcu::TestCaseGroup* createFillBufferTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> testGroup (new tcu::TestCaseGroup(testCtx, "fill", "Fill Buffer Tests"));
+
testGroup->addChild(createFillUpdateCopyBufferFloatTests(testCtx, FILL_BUFFER));
testGroup->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, FILL_BUFFER));
testGroup->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, FILL_BUFFER));
+
return testGroup.release();
}
-tcu::TestCaseGroup* createUpdateBufferTests(tcu::TestContext& testCtx) {
+tcu::TestCaseGroup* createUpdateBufferTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> updateTests (new tcu::TestCaseGroup(testCtx, "update", "Update Buffer Tests"));
- updateTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, UPDATE_BUFFER));
- updateTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, UPDATE_BUFFER));
- updateTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, UPDATE_BUFFER));
+
+ updateTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, FILL_BUFFER));
+ updateTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, FILL_BUFFER));
+ updateTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, FILL_BUFFER));
+
return updateTests.release();
}
-tcu::TestCaseGroup* createCopyBufferTests(tcu::TestContext& testCtx) {
+tcu::TestCaseGroup* createCopyBufferTests (tcu::TestContext& testCtx)
+{
de::MovePtr<tcu::TestCaseGroup> copyTests (new tcu::TestCaseGroup(testCtx, "copy", "Copy Buffer Tests"));
- copyTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, COPY_BUFFER));
- copyTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, COPY_BUFFER));
- copyTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, COPY_BUFFER));
+
+ copyTests->addChild(createFillUpdateCopyBufferFloatTests(testCtx, FILL_BUFFER));
+ copyTests->addChild(createFillUpdateCopyBufferIntegerTests(testCtx, FILL_BUFFER));
+ copyTests->addChild(createFillUpdateCopyBufferUnsignedTests(testCtx, FILL_BUFFER));
+
return copyTests.release();
}
VK_CHECK(vk.beginCommandBuffer(commandBuffer, &beginInfo));
}
+void beginSecondaryCommandBuffer (const vk::DeviceInterface& vk,
+ const vk::VkCommandBuffer secondaryCmdBuffer,
+ const vk::VkCommandBufferInheritanceInfo bufferInheritanceInfo)
+{
+ const vk::VkCommandBufferUsageFlags flags = bufferInheritanceInfo.renderPass != DE_NULL
+ ? (vk::VkCommandBufferUsageFlags)vk::VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
+ : (vk::VkCommandBufferUsageFlags)0u;
+ const vk::VkCommandBufferBeginInfo beginInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // sType
+ DE_NULL, // pNext
+ flags, // flags
+ &bufferInheritanceInfo, // pInheritanceInfo
+ };
+ VK_CHECK(vk.beginCommandBuffer(secondaryCmdBuffer, &beginInfo));
+}
+
vk::VkResult queueSubmit (ProtectedContext& context,
ProtectionMode protectionMode,
return vk::createGraphicsPipeline(vk, device, DE_NULL, &graphicsPipelineParams);
}
+const char* getCmdBufferTypeStr (const CmdBufferType cmdBufferType)
+{
+ switch (cmdBufferType)
+ {
+ case CMD_BUFFER_PRIMARY: return "primary";
+ case CMD_BUFFER_SECONDARY: return "secondary";
+
+ default: DE_FATAL("Invalid command buffer type"); return "";
+ }
+}
+
+
} // ProtectedMem
} // vkt
vk::Move<vk::VkPipelineLayout> createPipelineLayout (ProtectedContext& context,
deUint32 layoutCount,
vk::VkDescriptorSetLayout* setLayouts);
+
+typedef vk::VkCommandBufferInheritanceInfo CmdBuffInheritance;
+enum CmdBufferType {
+ CMD_BUFFER_PRIMARY,
+ CMD_BUFFER_SECONDARY,
+};
+
+const char* getCmdBufferTypeStr (const CmdBufferType cmdBufferType);
+void beginSecondaryCommandBuffer (const vk::DeviceInterface& vk,
+ const vk::VkCommandBuffer secondaryCmdBuffer,
+ const CmdBuffInheritance secCmdBufInheritInfo);
+
void beginCommandBuffer (const vk::DeviceInterface& vk,
const vk::VkCommandBuffer commandBuffer);
vk::VkResult queueSubmit (ProtectedContext& context,
ProtectionMode protectionMode,
const deUint32 queueFamilyIdx);
-
vk::Move<vk::VkPipeline> makeGraphicsPipeline (const vk::DeviceInterface& vk,
const vk::VkDevice device,
const vk::VkPipelineLayout pipelineLayout,
dEQP-VK.protected_memory.attachment.clear_op.primary.random.clear_8
dEQP-VK.protected_memory.attachment.clear_op.primary.random.clear_9
dEQP-VK.protected_memory.attachment.clear_op.primary.random.clear_10
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_1
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_2
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_3
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_4
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_5
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_6
+dEQP-VK.protected_memory.attachment.clear_op.secondary.static.clear_7
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_1
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_2
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_3
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_4
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_5
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_6
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_7
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_8
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_9
+dEQP-VK.protected_memory.attachment.clear_op.secondary.random.clear_10
dEQP-VK.protected_memory.image.copy.primary.static.copy_1
dEQP-VK.protected_memory.image.copy.primary.static.copy_2
dEQP-VK.protected_memory.image.copy.primary.static.copy_3
dEQP-VK.protected_memory.image.copy.primary.random.copy_8
dEQP-VK.protected_memory.image.copy.primary.random.copy_9
dEQP-VK.protected_memory.image.copy.primary.random.copy_10
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_1
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_2
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_3
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_4
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_5
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_6
+dEQP-VK.protected_memory.image.copy.secondary.static.copy_7
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_1
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_2
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_3
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_4
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_5
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_6
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_7
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_8
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_9
+dEQP-VK.protected_memory.image.copy.secondary.random.copy_10
dEQP-VK.protected_memory.image.blit.primary.static.blit_1
dEQP-VK.protected_memory.image.blit.primary.static.blit_2
dEQP-VK.protected_memory.image.blit.primary.static.blit_3
dEQP-VK.protected_memory.image.blit.primary.random.blit_8
dEQP-VK.protected_memory.image.blit.primary.random.blit_9
dEQP-VK.protected_memory.image.blit.primary.random.blit_10
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_1
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_2
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_3
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_4
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_5
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_6
+dEQP-VK.protected_memory.image.blit.secondary.static.blit_7
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_1
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_2
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_3
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_4
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_5
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_6
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_7
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_8
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_9
+dEQP-VK.protected_memory.image.blit.secondary.random.blit_10
dEQP-VK.protected_memory.image.clear_color.primary.static.clear_1
dEQP-VK.protected_memory.image.clear_color.primary.static.clear_2
dEQP-VK.protected_memory.image.clear_color.primary.static.clear_3
dEQP-VK.protected_memory.image.clear_color.primary.random.clear_8
dEQP-VK.protected_memory.image.clear_color.primary.random.clear_9
dEQP-VK.protected_memory.image.clear_color.primary.random.clear_10
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_1
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_2
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_3
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_4
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_5
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_6
+dEQP-VK.protected_memory.image.clear_color.secondary.static.clear_7
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_1
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_2
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_3
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_4
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_5
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_6
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_7
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_8
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_9
+dEQP-VK.protected_memory.image.clear_color.secondary.random.clear_10
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.static.copy_1
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.static.copy_2
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.static.copy_3
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.random.copy_8
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.random.copy_9
dEQP-VK.protected_memory.image.copy_buffer_to_image.primary.random.copy_10
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_1
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_2
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_3
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_4
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_5
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.static.copy_6
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_1
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_2
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_3
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_4
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_5
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_6
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_7
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_8
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_9
+dEQP-VK.protected_memory.image.copy_buffer_to_image.secondary.random.copy_10
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.fill.float_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.fill.float_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.fill.integer_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.fill.integer_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.fill.unsigned_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.update.float_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.update.float_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.update.integer_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.update.integer_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.update.unsigned_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.update.unsigned_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.copy.float_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.copy.float_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.copy.integer_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.copy.integer_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.static.test_1
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.static.test_2
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.static.test_3
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.random.test_8
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.random.test_9
dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.primary.random.test_10
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_1
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_2
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_3
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_4
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_5
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.static.test_6
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_1
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_2
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_3
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_4
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_5
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_6
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_7
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_8
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_9
+dEQP-VK.protected_memory.buffer.copy.unsigned_buffer.secondary.random.test_10
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.static.copy_1
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.static.copy_2
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.static.copy_3
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.random.copy_8
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.random.copy_9
dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.primary.random.copy_10
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_1
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_2
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_3
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_4
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_5
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.static.copy_6
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_1
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_2
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_3
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_4
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_5
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_6
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_7
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_8
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_9
+dEQP-VK.protected_memory.buffer.copy_image_to_float_buffer.secondary.random.copy_10
dEQP-VK.protected_memory.ssbo.ssbo_read.fragment.static.read_1
dEQP-VK.protected_memory.ssbo.ssbo_read.fragment.static.read_2
dEQP-VK.protected_memory.ssbo.ssbo_read.fragment.static.read_3