- Render only values 0 and 1 to all attachments.
- The value depends on attachment, subpass and pixel location.
- Depth formats also sets gl_FragDepth to 0.0 or 1.0 depending on location.
- Stencil uses only values 0 and 0xff.
- Verification requires that the quads are rasterized exactly and
that all result values are either 0 or 1.
- Input attachment containing 1s and 0s are interpreted as true and
false bools and input values are combined with boolean operations and
written to shader outputs.
See #447
Change-Id: I4ebe3d9b5151d40558e473a028ee458cf6285a85
dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.dont_care.clear
dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.dont_care.draw
dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_unorm.clear.clear
dEQP-VK.renderpass.formats.r8_unorm.clear.draw
dEQP-VK.renderpass.formats.r8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_snorm.clear.clear
dEQP-VK.renderpass.formats.r8_snorm.clear.draw
dEQP-VK.renderpass.formats.r8_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r8_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r8_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_uint.clear.clear
dEQP-VK.renderpass.formats.r8_uint.clear.draw
dEQP-VK.renderpass.formats.r8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r8_uint.dont_care.clear
dEQP-VK.renderpass.formats.r8_uint.dont_care.draw
dEQP-VK.renderpass.formats.r8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_sint.clear.clear
dEQP-VK.renderpass.formats.r8_sint.clear.draw
dEQP-VK.renderpass.formats.r8_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r8_sint.dont_care.clear
dEQP-VK.renderpass.formats.r8_sint.dont_care.draw
dEQP-VK.renderpass.formats.r8_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_unorm.clear.clear
dEQP-VK.renderpass.formats.r8g8_unorm.clear.draw
dEQP-VK.renderpass.formats.r8g8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_snorm.clear.clear
dEQP-VK.renderpass.formats.r8g8_snorm.clear.draw
dEQP-VK.renderpass.formats.r8g8_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_uint.clear.clear
dEQP-VK.renderpass.formats.r8g8_uint.clear.draw
dEQP-VK.renderpass.formats.r8g8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_uint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_uint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_sint.clear.clear
dEQP-VK.renderpass.formats.r8g8_sint.clear.draw
dEQP-VK.renderpass.formats.r8g8_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_sint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_sint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_uint.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_uint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_sint.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_sint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.clear.clear
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.clear.draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.clear.clear
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.clear.draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.clear.clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.dont_care.clear
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.dont_care.draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.clear.clear
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.clear.draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_unorm.clear.clear
dEQP-VK.renderpass.formats.r16_unorm.clear.draw
dEQP-VK.renderpass.formats.r16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_snorm.clear.clear
dEQP-VK.renderpass.formats.r16_snorm.clear.draw
dEQP-VK.renderpass.formats.r16_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r16_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r16_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_uint.clear.clear
dEQP-VK.renderpass.formats.r16_uint.clear.draw
dEQP-VK.renderpass.formats.r16_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r16_uint.dont_care.clear
dEQP-VK.renderpass.formats.r16_uint.dont_care.draw
dEQP-VK.renderpass.formats.r16_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_sint.clear.clear
dEQP-VK.renderpass.formats.r16_sint.clear.draw
dEQP-VK.renderpass.formats.r16_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r16_sint.dont_care.clear
dEQP-VK.renderpass.formats.r16_sint.dont_care.draw
dEQP-VK.renderpass.formats.r16_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_sfloat.clear.clear
dEQP-VK.renderpass.formats.r16_sfloat.clear.draw
dEQP-VK.renderpass.formats.r16_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r16_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r16_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r16_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_unorm.clear.clear
dEQP-VK.renderpass.formats.r16g16_unorm.clear.draw
dEQP-VK.renderpass.formats.r16g16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_snorm.clear.clear
dEQP-VK.renderpass.formats.r16g16_snorm.clear.draw
dEQP-VK.renderpass.formats.r16g16_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_uint.clear.clear
dEQP-VK.renderpass.formats.r16g16_uint.clear.draw
dEQP-VK.renderpass.formats.r16g16_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_uint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_uint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_sint.clear.clear
dEQP-VK.renderpass.formats.r16g16_sint.clear.draw
dEQP-VK.renderpass.formats.r16g16_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_sint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_sint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_sfloat.clear.clear
dEQP-VK.renderpass.formats.r16g16_sfloat.clear.draw
dEQP-VK.renderpass.formats.r16g16_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_uint.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_uint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sint.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32_uint.clear.clear
dEQP-VK.renderpass.formats.r32_uint.clear.draw
dEQP-VK.renderpass.formats.r32_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r32_uint.dont_care.clear
dEQP-VK.renderpass.formats.r32_uint.dont_care.draw
dEQP-VK.renderpass.formats.r32_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32_sint.clear.clear
dEQP-VK.renderpass.formats.r32_sint.clear.draw
dEQP-VK.renderpass.formats.r32_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r32_sint.dont_care.clear
dEQP-VK.renderpass.formats.r32_sint.dont_care.draw
dEQP-VK.renderpass.formats.r32_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32_sfloat.clear.clear
dEQP-VK.renderpass.formats.r32_sfloat.clear.draw
dEQP-VK.renderpass.formats.r32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32_uint.clear.clear
dEQP-VK.renderpass.formats.r32g32_uint.clear.draw
dEQP-VK.renderpass.formats.r32g32_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32_uint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32_uint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32_sint.clear.clear
dEQP-VK.renderpass.formats.r32g32_sint.clear.draw
dEQP-VK.renderpass.formats.r32g32_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32_sint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32_sint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32_sfloat.clear.clear
dEQP-VK.renderpass.formats.r32g32_sfloat.clear.draw
dEQP-VK.renderpass.formats.r32g32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r32g32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r32g32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.clear.clear
dEQP-VK.renderpass.formats.r32g32b32a32_uint.clear.draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32b32a32_uint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.clear.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sint.clear.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.clear.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.clear.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d16_unorm.clear.clear
dEQP-VK.renderpass.formats.d16_unorm.clear.draw
dEQP-VK.renderpass.formats.d16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.d16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.d16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.d16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d32_sfloat.clear.clear
dEQP-VK.renderpass.formats.d32_sfloat.clear.draw
dEQP-VK.renderpass.formats.d32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.d32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.d32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.d32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.clear.clear
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.clear.draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.dont_care.clear
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.dont_care.draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.clear.clear
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.clear.draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.dont_care.clear
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.dont_care.draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.attachment.1.0
dEQP-VK.renderpass.attachment.1.1
dEQP-VK.renderpass.attachment.1.2
dEQP-VK.renderpass.attachment_allocation.grow_shrink.97
dEQP-VK.renderpass.attachment_allocation.grow_shrink.98
dEQP-VK.renderpass.attachment_allocation.grow_shrink.99
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.0
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.1
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.2
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.3
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.4
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.5
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.6
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.7
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.8
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.9
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.10
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.11
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.12
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.13
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.14
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.15
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.16
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.17
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.18
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.19
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.20
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.21
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.22
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.23
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.24
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.25
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.26
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.27
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.28
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.29
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.30
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.31
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.32
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.33
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.34
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.35
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.36
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.37
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.38
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.39
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.40
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.41
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.42
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.43
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.44
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.45
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.46
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.47
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.48
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.49
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.50
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.51
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.52
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.53
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.54
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.55
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.56
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.57
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.58
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.59
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.60
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.61
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.62
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.63
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.64
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.65
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.66
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.67
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.68
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.69
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.70
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.71
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.72
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.73
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.74
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.75
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.76
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.77
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.78
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.79
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.80
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.81
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.82
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.83
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.84
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.85
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.86
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.87
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.88
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.89
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.90
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.91
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.92
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.93
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.94
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.95
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.96
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.97
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.98
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.99
+dEQP-VK.renderpass.attachment_allocation.input_output.0
+dEQP-VK.renderpass.attachment_allocation.input_output.1
+dEQP-VK.renderpass.attachment_allocation.input_output.2
+dEQP-VK.renderpass.attachment_allocation.input_output.3
+dEQP-VK.renderpass.attachment_allocation.input_output.4
+dEQP-VK.renderpass.attachment_allocation.input_output.5
+dEQP-VK.renderpass.attachment_allocation.input_output.6
+dEQP-VK.renderpass.attachment_allocation.input_output.7
+dEQP-VK.renderpass.attachment_allocation.input_output.8
+dEQP-VK.renderpass.attachment_allocation.input_output.9
+dEQP-VK.renderpass.attachment_allocation.input_output.10
+dEQP-VK.renderpass.attachment_allocation.input_output.11
+dEQP-VK.renderpass.attachment_allocation.input_output.12
+dEQP-VK.renderpass.attachment_allocation.input_output.13
+dEQP-VK.renderpass.attachment_allocation.input_output.14
+dEQP-VK.renderpass.attachment_allocation.input_output.15
+dEQP-VK.renderpass.attachment_allocation.input_output.16
+dEQP-VK.renderpass.attachment_allocation.input_output.17
+dEQP-VK.renderpass.attachment_allocation.input_output.18
+dEQP-VK.renderpass.attachment_allocation.input_output.19
+dEQP-VK.renderpass.attachment_allocation.input_output.20
+dEQP-VK.renderpass.attachment_allocation.input_output.21
+dEQP-VK.renderpass.attachment_allocation.input_output.22
+dEQP-VK.renderpass.attachment_allocation.input_output.23
+dEQP-VK.renderpass.attachment_allocation.input_output.24
+dEQP-VK.renderpass.attachment_allocation.input_output.25
+dEQP-VK.renderpass.attachment_allocation.input_output.26
+dEQP-VK.renderpass.attachment_allocation.input_output.27
+dEQP-VK.renderpass.attachment_allocation.input_output.28
+dEQP-VK.renderpass.attachment_allocation.input_output.29
+dEQP-VK.renderpass.attachment_allocation.input_output.30
+dEQP-VK.renderpass.attachment_allocation.input_output.31
+dEQP-VK.renderpass.attachment_allocation.input_output.32
+dEQP-VK.renderpass.attachment_allocation.input_output.33
+dEQP-VK.renderpass.attachment_allocation.input_output.34
+dEQP-VK.renderpass.attachment_allocation.input_output.35
+dEQP-VK.renderpass.attachment_allocation.input_output.36
+dEQP-VK.renderpass.attachment_allocation.input_output.37
+dEQP-VK.renderpass.attachment_allocation.input_output.38
+dEQP-VK.renderpass.attachment_allocation.input_output.39
+dEQP-VK.renderpass.attachment_allocation.input_output.40
+dEQP-VK.renderpass.attachment_allocation.input_output.41
+dEQP-VK.renderpass.attachment_allocation.input_output.42
+dEQP-VK.renderpass.attachment_allocation.input_output.43
+dEQP-VK.renderpass.attachment_allocation.input_output.44
+dEQP-VK.renderpass.attachment_allocation.input_output.45
+dEQP-VK.renderpass.attachment_allocation.input_output.46
+dEQP-VK.renderpass.attachment_allocation.input_output.47
+dEQP-VK.renderpass.attachment_allocation.input_output.48
+dEQP-VK.renderpass.attachment_allocation.input_output.49
+dEQP-VK.renderpass.attachment_allocation.input_output.50
+dEQP-VK.renderpass.attachment_allocation.input_output.51
+dEQP-VK.renderpass.attachment_allocation.input_output.52
+dEQP-VK.renderpass.attachment_allocation.input_output.53
+dEQP-VK.renderpass.attachment_allocation.input_output.54
+dEQP-VK.renderpass.attachment_allocation.input_output.55
+dEQP-VK.renderpass.attachment_allocation.input_output.56
+dEQP-VK.renderpass.attachment_allocation.input_output.57
+dEQP-VK.renderpass.attachment_allocation.input_output.58
+dEQP-VK.renderpass.attachment_allocation.input_output.59
+dEQP-VK.renderpass.attachment_allocation.input_output.60
+dEQP-VK.renderpass.attachment_allocation.input_output.61
+dEQP-VK.renderpass.attachment_allocation.input_output.62
+dEQP-VK.renderpass.attachment_allocation.input_output.63
+dEQP-VK.renderpass.attachment_allocation.input_output.64
+dEQP-VK.renderpass.attachment_allocation.input_output.65
+dEQP-VK.renderpass.attachment_allocation.input_output.66
+dEQP-VK.renderpass.attachment_allocation.input_output.67
+dEQP-VK.renderpass.attachment_allocation.input_output.68
+dEQP-VK.renderpass.attachment_allocation.input_output.69
+dEQP-VK.renderpass.attachment_allocation.input_output.70
+dEQP-VK.renderpass.attachment_allocation.input_output.71
+dEQP-VK.renderpass.attachment_allocation.input_output.72
+dEQP-VK.renderpass.attachment_allocation.input_output.73
+dEQP-VK.renderpass.attachment_allocation.input_output.74
+dEQP-VK.renderpass.attachment_allocation.input_output.75
+dEQP-VK.renderpass.attachment_allocation.input_output.76
+dEQP-VK.renderpass.attachment_allocation.input_output.77
+dEQP-VK.renderpass.attachment_allocation.input_output.78
+dEQP-VK.renderpass.attachment_allocation.input_output.79
+dEQP-VK.renderpass.attachment_allocation.input_output.80
+dEQP-VK.renderpass.attachment_allocation.input_output.81
+dEQP-VK.renderpass.attachment_allocation.input_output.82
+dEQP-VK.renderpass.attachment_allocation.input_output.83
+dEQP-VK.renderpass.attachment_allocation.input_output.84
+dEQP-VK.renderpass.attachment_allocation.input_output.85
+dEQP-VK.renderpass.attachment_allocation.input_output.86
+dEQP-VK.renderpass.attachment_allocation.input_output.87
+dEQP-VK.renderpass.attachment_allocation.input_output.88
+dEQP-VK.renderpass.attachment_allocation.input_output.89
+dEQP-VK.renderpass.attachment_allocation.input_output.90
+dEQP-VK.renderpass.attachment_allocation.input_output.91
+dEQP-VK.renderpass.attachment_allocation.input_output.92
+dEQP-VK.renderpass.attachment_allocation.input_output.93
+dEQP-VK.renderpass.attachment_allocation.input_output.94
+dEQP-VK.renderpass.attachment_allocation.input_output.95
+dEQP-VK.renderpass.attachment_allocation.input_output.96
+dEQP-VK.renderpass.attachment_allocation.input_output.97
+dEQP-VK.renderpass.attachment_allocation.input_output.98
+dEQP-VK.renderpass.attachment_allocation.input_output.99
dEQP-VK.ubo.2_level_array.std140.float_vertex
dEQP-VK.ubo.2_level_array.std140.float_fragment
dEQP-VK.ubo.2_level_array.std140.float_both
#include "vktRenderPassTests.hpp"
#include "vktTestCaseUtil.hpp"
+#include "vktTestGroupUtil.hpp"
#include "vkDefs.hpp"
#include "vkDeviceUtil.hpp"
#include "vkStrUtil.hpp"
#include "vkTypeUtil.hpp"
-#include "tcuTestLog.hpp"
-#include "tcuResultCollector.hpp"
-#include "tcuFormatUtil.hpp"
-#include "tcuTextureUtil.hpp"
#include "tcuFloat.hpp"
+#include "tcuFormatUtil.hpp"
#include "tcuMaybe.hpp"
+#include "tcuResultCollector.hpp"
+#include "tcuTestLog.hpp"
+#include "tcuTextureUtil.hpp"
#include "tcuVectorUtil.hpp"
-#include "deUniquePtr.hpp"
+#include "deRandom.hpp"
+#include "deSTLUtil.hpp"
#include "deSharedPtr.hpp"
#include "deStringUtil.hpp"
-#include "deSTLUtil.hpp"
-#include "deRandom.hpp"
+#include "deUniquePtr.hpp"
#include <limits>
+#include <set>
+#include <string>
+#include <vector>
using namespace vk;
-using tcu::Maybe;
-using tcu::nothing;
-using tcu::just;
-using tcu::TestLog;
-using tcu::Vec2;
+using tcu::BVec4;
using tcu::IVec2;
-using tcu::UVec2;
using tcu::IVec4;
+using tcu::UVec2;
using tcu::UVec4;
+using tcu::Vec2;
using tcu::Vec4;
-using tcu::BVec4;
+
+using tcu::Maybe;
+using tcu::just;
+using tcu::nothing;
+
using tcu::ConstPixelBufferAccess;
using tcu::PixelBufferAccess;
+using tcu::TestLog;
+
using de::UniquePtr;
-using std::vector;
+using std::pair;
+using std::set;
using std::string;
+using std::vector;
namespace vkt
{
namespace
{
-enum
+enum BoolOp
{
- STENCIL_VALUE = 84u,
- // Limit integer values that are representable as floats
- MAX_INTEGER_VALUE = ((1u<<22u)-1u)
+ BOOLOP_AND,
+ BOOLOP_OR,
+ BOOLOP_EQ,
+ BOOLOP_NEQ
};
+const char* boolOpToString (BoolOp op)
+{
+ switch (op)
+ {
+ case BOOLOP_OR:
+ return "||";
+
+ case BOOLOP_AND:
+ return "&&";
+
+ case BOOLOP_EQ:
+ return "==";
+
+ case BOOLOP_NEQ:
+ return "!=";
+
+ default:
+ DE_FATAL("Unknown boolean operation.");
+ return DE_NULL;
+ }
+}
+
+bool performBoolOp (BoolOp op, bool a, bool b)
+{
+ switch (op)
+ {
+ case BOOLOP_OR:
+ return a || b;
+
+ case BOOLOP_AND:
+ return a && b;
+
+ case BOOLOP_EQ:
+ return a == b;
+
+ case BOOLOP_NEQ:
+ return a != b;
+
+ default:
+ DE_FATAL("Unknown boolean operation.");
+ return false;
+ }
+}
+
+BoolOp boolOpFromIndex (size_t index)
+{
+ const BoolOp ops[] =
+ {
+ BOOLOP_OR,
+ BOOLOP_AND,
+ BOOLOP_EQ,
+ BOOLOP_NEQ
+ };
+
+ return ops[index % DE_LENGTH_OF_ARRAY(ops)];
+}
+
// Utility functions using flattened structs
Move<VkFence> createFence (const DeviceInterface& vk, VkDevice device, VkFenceCreateFlags flags)
{
VkQueryControlFlags pInheritanceInfo_queryFlags,
VkQueryPipelineStatisticFlags pInheritanceInfo_pipelineStatistics)
{
- const VkCommandBufferInheritanceInfo pInheritanceInfo =
+ const VkCommandBufferInheritanceInfo pInheritanceInfo =
{
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
DE_NULL,
pInheritanceInfo_queryFlags,
pInheritanceInfo_pipelineStatistics,
};
- const VkCommandBufferBeginInfo pBeginInfo =
+ const VkCommandBufferBeginInfo pBeginInfo =
{
VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
DE_NULL,
const vector<AttachmentReference>& colorAttachments,
const vector<AttachmentReference>& resolveAttachments,
AttachmentReference depthStencilAttachment,
- const vector<AttachmentReference>& preserveAttachments)
+ const vector<deUint32>& preserveAttachments)
: m_pipelineBindPoint (pipelineBindPoint)
, m_flags (flags)
, m_inputAttachments (inputAttachments)
const vector<AttachmentReference>& getColorAttachments (void) const { return m_colorAttachments; }
const vector<AttachmentReference>& getResolveAttachments (void) const { return m_resolveAttachments; }
const AttachmentReference& getDepthStencilAttachment (void) const { return m_depthStencilAttachment; }
- const vector<AttachmentReference>& getPreserveAttachments (void) const { return m_preserveAttachments; }
+ const vector<deUint32>& getPreserveAttachments (void) const { return m_preserveAttachments; }
private:
VkPipelineBindPoint m_pipelineBindPoint;
vector<AttachmentReference> m_resolveAttachments;
AttachmentReference m_depthStencilAttachment;
- vector<AttachmentReference> m_preserveAttachments;
+ vector<deUint32> m_preserveAttachments;
};
class SubpassDependency
class Attachment
{
public:
- Attachment (VkFormat format,
- VkSampleCountFlagBits samples,
+ Attachment (VkFormat format,
+ VkSampleCountFlagBits samples,
- VkAttachmentLoadOp loadOp,
- VkAttachmentStoreOp storeOp,
+ VkAttachmentLoadOp loadOp,
+ VkAttachmentStoreOp storeOp,
- VkAttachmentLoadOp stencilLoadOp,
- VkAttachmentStoreOp stencilStoreOp,
+ VkAttachmentLoadOp stencilLoadOp,
+ VkAttachmentStoreOp stencilStoreOp,
- VkImageLayout initialLayout,
- VkImageLayout finalLayout)
+ VkImageLayout initialLayout,
+ VkImageLayout finalLayout)
: m_format (format)
, m_samples (samples)
IMAGEMEMORY_LAZY = (1<<1)
};
- TestConfig (const RenderPass& renderPass_,
- RenderTypes renderTypes_,
- CommandBufferTypes commandBufferTypes_,
- ImageMemory imageMemory_,
- const UVec2& targetSize_,
- const UVec2& renderPos_,
- const UVec2& renderSize_,
- deUint32 seed_)
+ TestConfig (const RenderPass& renderPass_,
+ RenderTypes renderTypes_,
+ CommandBufferTypes commandBufferTypes_,
+ ImageMemory imageMemory_,
+ const UVec2& targetSize_,
+ const UVec2& renderPos_,
+ const UVec2& renderSize_,
+ deUint32 seed_)
: renderPass (renderPass_)
, renderTypes (renderTypes_)
, commandBufferTypes (commandBufferTypes_)
const vector<AttachmentReference>& inputAttachments = subpass.getInputAttachments();
const vector<AttachmentReference>& colorAttachments = subpass.getColorAttachments();
const vector<AttachmentReference>& resolveAttachments = subpass.getResolveAttachments();
- const vector<AttachmentReference>& preserveAttachments = subpass.getPreserveAttachments();
+ const vector<deUint32>& preserveAttachments = subpass.getPreserveAttachments();
if (!inputAttachments.empty())
{
- const tcu::ScopedLogSection inputAttachmentsSection (log, "Inputs", "Inputs");
+ const tcu::ScopedLogSection inputAttachmentsSection (log, "Inputs", "Inputs");
for (size_t inputNdx = 0; inputNdx < inputAttachments.size(); inputNdx++)
{
- const tcu::ScopedLogSection inputAttachmentSection (log, "Input" + de::toString(inputNdx), "Input " + de::toString(inputNdx));
- const AttachmentReference& inputAttachment = inputAttachments[inputNdx];
+ const tcu::ScopedLogSection inputAttachmentSection (log, "Input" + de::toString(inputNdx), "Input " + de::toString(inputNdx));
+ const AttachmentReference& inputAttachment = inputAttachments[inputNdx];
log << TestLog::Message << "Attachment: " << inputAttachment.getAttachment() << TestLog::EndMessage;
log << TestLog::Message << "Layout: " << inputAttachment.getImageLayout() << TestLog::EndMessage;
if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
{
- const tcu::ScopedLogSection depthStencilAttachmentSection (log, "DepthStencil", "DepthStencil");
- const AttachmentReference& depthStencilAttachment = subpass.getDepthStencilAttachment();
+ const tcu::ScopedLogSection depthStencilAttachmentSection (log, "DepthStencil", "DepthStencil");
+ const AttachmentReference& depthStencilAttachment = subpass.getDepthStencilAttachment();
log << TestLog::Message << "Attachment: " << depthStencilAttachment.getAttachment() << TestLog::EndMessage;
log << TestLog::Message << "Layout: " << depthStencilAttachment.getImageLayout() << TestLog::EndMessage;
if (!colorAttachments.empty())
{
- const tcu::ScopedLogSection colorAttachmentsSection (log, "Colors", "Colors");
+ const tcu::ScopedLogSection colorAttachmentsSection (log, "Colors", "Colors");
for (size_t colorNdx = 0; colorNdx < colorAttachments.size(); colorNdx++)
{
- const tcu::ScopedLogSection colorAttachmentSection (log, "Color" + de::toString(colorNdx), "Color " + de::toString(colorNdx));
- const AttachmentReference& colorAttachment = colorAttachments[colorNdx];
+ const tcu::ScopedLogSection colorAttachmentSection (log, "Color" + de::toString(colorNdx), "Color " + de::toString(colorNdx));
+ const AttachmentReference& colorAttachment = colorAttachments[colorNdx];
log << TestLog::Message << "Attachment: " << colorAttachment.getAttachment() << TestLog::EndMessage;
log << TestLog::Message << "Layout: " << colorAttachment.getImageLayout() << TestLog::EndMessage;
if (!resolveAttachments.empty())
{
- const tcu::ScopedLogSection resolveAttachmentsSection (log, "Resolves", "Resolves");
+ const tcu::ScopedLogSection resolveAttachmentsSection (log, "Resolves", "Resolves");
for (size_t resolveNdx = 0; resolveNdx < resolveAttachments.size(); resolveNdx++)
{
- const tcu::ScopedLogSection resolveAttachmentSection (log, "Resolve" + de::toString(resolveNdx), "Resolve " + de::toString(resolveNdx));
- const AttachmentReference& resolveAttachment = resolveAttachments[resolveNdx];
+ const tcu::ScopedLogSection resolveAttachmentSection (log, "Resolve" + de::toString(resolveNdx), "Resolve " + de::toString(resolveNdx));
+ const AttachmentReference& resolveAttachment = resolveAttachments[resolveNdx];
log << TestLog::Message << "Attachment: " << resolveAttachment.getAttachment() << TestLog::EndMessage;
log << TestLog::Message << "Layout: " << resolveAttachment.getImageLayout() << TestLog::EndMessage;
if (!preserveAttachments.empty())
{
- const tcu::ScopedLogSection preserveAttachmentsSection (log, "Preserves", "Preserves");
+ const tcu::ScopedLogSection preserveAttachmentsSection (log, "Preserves", "Preserves");
for (size_t preserveNdx = 0; preserveNdx < preserveAttachments.size(); preserveNdx++)
{
- const tcu::ScopedLogSection preserveAttachmentSection (log, "Preserve" + de::toString(preserveNdx), "Preserve " + de::toString(preserveNdx));
- const AttachmentReference& preserveAttachment = preserveAttachments[preserveNdx];
+ const tcu::ScopedLogSection preserveAttachmentSection (log, "Preserve" + de::toString(preserveNdx), "Preserve " + de::toString(preserveNdx));
+ const deUint32 preserveAttachment = preserveAttachments[preserveNdx];
- log << TestLog::Message << "Attachment: " << preserveAttachment.getAttachment() << TestLog::EndMessage;
- log << TestLog::Message << "Layout: " << preserveAttachment.getImageLayout() << TestLog::EndMessage;
+ log << TestLog::Message << "Attachment: " << preserveAttachment << TestLog::EndMessage;
}
}
}
{
case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER:
{
- const tcu::IVec4 valueMin = tcu::getFormatMinIntValue(format);
- const tcu::IVec4 valueMax = tcu::getFormatMaxIntValue(format);
-
for (int ndx = 0; ndx < 4; ndx++)
{
if (!channelMask[ndx])
clearColor.int32[ndx] = std::numeric_limits<deInt32>::min();
else
- clearColor.uint32[ndx] = rng.getInt(valueMin[ndx], valueMax[ndx]);
+ clearColor.uint32[ndx] = rng.getBool() ? 1u : 0u;
}
break;
}
case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER:
{
- const UVec4 valueMax = tcu::getFormatMaxUintValue(format);
-
for (int ndx = 0; ndx < 4; ndx++)
{
if (!channelMask[ndx])
clearColor.uint32[ndx] = std::numeric_limits<deUint32>::max();
else
- clearColor.uint32[ndx] = rng.getUint32() % valueMax[ndx];
+ clearColor.uint32[ndx] = rng.getBool() ? 1u : 0u;
}
break;
}
case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT:
case tcu::TEXTURECHANNELCLASS_FLOATING_POINT:
{
- const tcu::TextureFormatInfo formatInfo = tcu::getTextureFormatInfo(format);
-
for (int ndx = 0; ndx < 4; ndx++)
{
if (!channelMask[ndx])
clearColor.float32[ndx] = clearNan;
else
- clearColor.float32[ndx] = formatInfo.valueMin[ndx] + rng.getFloat() * (formatInfo.valueMax[ndx] - formatInfo.valueMin[ndx]);
+ clearColor.float32[ndx] = rng.getBool() ? 1.0f : 0.0f;
}
break;
}
{
const VkAttachmentDescription attachmentDescription =
{
- 0, // flags
+ 0, // flags
- attachment.getFormat(), // format
- attachment.getSamples(), // samples
+ attachment.getFormat(), // format
+ attachment.getSamples(), // samples
- attachment.getLoadOp(), // loadOp
- attachment.getStoreOp(), // storeOp
+ attachment.getLoadOp(), // loadOp
+ attachment.getStoreOp(), // storeOp
- attachment.getStencilLoadOp(), // stencilLoadOp
- attachment.getStencilStoreOp(), // stencilStoreOp
+ attachment.getStencilLoadOp(), // stencilLoadOp
+ attachment.getStencilStoreOp(), // stencilStoreOp
- attachment.getInitialLayout(), // initialLayout
- attachment.getFinalLayout(), // finalLayout
+ attachment.getInitialLayout(), // initialLayout
+ attachment.getFinalLayout(), // finalLayout
};
return attachmentDescription;
depthStencilAttachmentReferences.push_back(createAttachmentReference(subpass.getDepthStencilAttachment()));
for (size_t attachmentNdx = 0; attachmentNdx < subpass.getPreserveAttachments().size(); attachmentNdx++)
- preserveAttachmentReferences->push_back(subpass.getPreserveAttachments()[attachmentNdx].getAttachment());
+ preserveAttachmentReferences->push_back(subpass.getPreserveAttachments()[attachmentNdx]);
DE_ASSERT(resolveAttachmentReferences.empty() || colorAttachmentReferences.size() == resolveAttachmentReferences.size());
{
const VkSubpassDependency dependency =
{
- dependencyInfo.getSrcPass(), // srcSubpass;
- dependencyInfo.getDstPass(), // destSubpass;
+ dependencyInfo.getSrcPass(), // srcSubpass;
+ dependencyInfo.getDstPass(), // destSubpass;
- dependencyInfo.getSrcStageMask(), // srcStageMask;
- dependencyInfo.getDstStageMask(), // destStageMask;
+ dependencyInfo.getSrcStageMask(), // srcStageMask;
+ dependencyInfo.getDstStageMask(), // destStageMask;
- dependencyInfo.getOutputMask(), // outputMask;
- dependencyInfo.getInputMask(), // inputMask;
+ dependencyInfo.getOutputMask(), // outputMask;
+ dependencyInfo.getInputMask(), // inputMask;
- dependencyInfo.getFlags() // dependencyFlags;
+ dependencyInfo.getFlags() // dependencyFlags;
};
return dependency;
VkImageUsageFlags usageFlags,
VkImageLayout layout)
{
- const VkExtent3D size_ = { size.x(), size.y(), 1u };
- VkImageUsageFlags targetUsageFlags = 0;
- const tcu::TextureFormat textureFormat = mapVkFormat(format);
+ VkImageUsageFlags targetUsageFlags = 0;
+ const tcu::TextureFormat textureFormat = mapVkFormat(format);
+
+ DE_ASSERT(!(tcu::hasDepthComponent(vk::mapVkFormat(format).order) || tcu::hasStencilComponent(vk::mapVkFormat(format).order))
+ || ((usageFlags & vk::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) == 0));
+
+ DE_ASSERT((tcu::hasDepthComponent(vk::mapVkFormat(format).order) || tcu::hasStencilComponent(vk::mapVkFormat(format).order))
+ || ((usageFlags & vk::VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) == 0));
if (tcu::hasDepthComponent(textureFormat.order) || tcu::hasStencilComponent(textureFormat.order))
- {
targetUsageFlags |= vk::VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
- }
else
- {
targetUsageFlags |= vk::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
- }
return createImage(vk, device,
(VkImageCreateFlags)0,
VK_IMAGE_TYPE_2D,
format,
- size_,
+ vk::makeExtent3D(size.x(), size.y(), 1u),
1u /* mipLevels */,
1u /* arraySize */,
samples,
VkClearValue clearValue;
clearValue.depthStencil.depth = clearNan;
- clearValue.depthStencil.stencil = 255;
+ clearValue.depthStencil.stencil = 0xCDu;
if (tcu::hasStencilComponent(format.order))
- clearValue.depthStencil.stencil = rng.getInt(0, 255);
+ clearValue.depthStencil.stencil = rng.getBool()
+ ? 0xFFu
+ : 0x0u;
if (tcu::hasDepthComponent(format.order))
- clearValue.depthStencil.depth = rng.getFloat();
+ clearValue.depthStencil.depth = rng.getBool()
+ ? 1.0f
+ : 0.0f;
return clearValue;
}
class AttachmentResources
{
public:
- AttachmentResources (const DeviceInterface& vk,
- VkDevice device,
- Allocator& allocator,
- deUint32 queueIndex,
- const UVec2& size,
- const Attachment& attachmentInfo,
- VkImageUsageFlags usageFlags)
+ AttachmentResources (const DeviceInterface& vk,
+ VkDevice device,
+ Allocator& allocator,
+ deUint32 queueIndex,
+ const UVec2& size,
+ const Attachment& attachmentInfo,
+ VkImageUsageFlags usageFlags)
: m_image (createAttachmentImage(vk, device, queueIndex, size, attachmentInfo.getFormat(), attachmentInfo.getSamples(), usageFlags, VK_IMAGE_LAYOUT_UNDEFINED))
, m_imageMemory (createImageMemory(vk, device, allocator, *m_image, ((usageFlags & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) != 0)))
, m_attachmentView (createImageAttachmentView(vk, device, *m_image, attachmentInfo.getFormat(), getImageAspectFlags(attachmentInfo.getFormat())))
{
- if ((usageFlags & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) == 0)
+ const tcu::TextureFormat format = mapVkFormat(attachmentInfo.getFormat());
+ const bool isDepthFormat = tcu::hasDepthComponent(format.order);
+ const bool isStencilFormat = tcu::hasStencilComponent(format.order);
+
+ if (isDepthFormat && isStencilFormat)
{
- const tcu::TextureFormat format = mapVkFormat(attachmentInfo.getFormat());
+ m_depthInputAttachmentView = createImageAttachmentView(vk, device, *m_image, attachmentInfo.getFormat(), VK_IMAGE_ASPECT_DEPTH_BIT);
+ m_stencilInputAttachmentView = createImageAttachmentView(vk, device, *m_image, attachmentInfo.getFormat(), VK_IMAGE_ASPECT_STENCIL_BIT);
+
+ m_inputAttachmentViews = std::make_pair(*m_depthInputAttachmentView, *m_stencilInputAttachmentView);
+ }
+ else
+ m_inputAttachmentViews = std::make_pair(*m_attachmentView, (vk::VkImageView)0u);
+ if ((usageFlags & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) == 0)
+ {
if (tcu::hasDepthComponent(format.order) && tcu::hasStencilComponent(format.order))
{
const tcu::TextureFormat depthFormat = getDepthCopyFormat(attachmentInfo.getFormat());
}
}
+ const pair<VkImageView, VkImageView>& getInputAttachmentViews (void) const
+ {
+ return m_inputAttachmentViews;
+ }
+
~AttachmentResources (void)
{
}
const UniquePtr<Allocation> m_imageMemory;
const Unique<VkImageView> m_attachmentView;
+ Move<VkImageView> m_depthInputAttachmentView;
+ Move<VkImageView> m_stencilInputAttachmentView;
+ pair<VkImageView, VkImageView> m_inputAttachmentViews;
+
Move<VkBuffer> m_buffer;
VkDeviceSize m_bufferSize;
de::MovePtr<Allocation> m_bufferMemory;
class RenderQuad
{
public:
- RenderQuad (const Vec4& posA, const Vec4& posB)
+ RenderQuad (const Vec2& posA, const Vec2& posB)
: m_vertices(6)
{
m_vertices[0] = posA;
- m_vertices[1] = Vec4(posA[0], posB[1], posA[2], posA[3]);
+ m_vertices[1] = Vec2(posA[0], posB[1]);
m_vertices[2] = posB;
m_vertices[3] = posB;
- m_vertices[4] = Vec4(posB[0], posA[1], posB[2], posA[3]);
+ m_vertices[4] = Vec2(posB[0], posA[1]);
m_vertices[5] = posA;
}
- const Vec4& getCornerA (void) const
+ const Vec2& getCornerA (void) const
{
return m_vertices[0];
}
- const Vec4& getCornerB (void) const
+ const Vec2& getCornerB (void) const
{
return m_vertices[2];
}
size_t getVertexDataSize (void) const
{
- return sizeof(Vec4) * m_vertices.size();
+ return sizeof(Vec2) * m_vertices.size();
}
private:
- vector<Vec4> m_vertices;
+ vector<Vec2> m_vertices;
};
class ColorClear
{
public:
- ColorClear (const UVec2& offset,
- const UVec2& size,
- const VkClearColorValue& color)
+ ColorClear (const UVec2& offset,
+ const UVec2& size,
+ const VkClearColorValue& color)
: m_offset (offset)
, m_size (size)
, m_color (color)
{
}
- const UVec2& getOffset (void) const { return m_offset; }
- const UVec2& getSize (void) const { return m_size; }
- const VkClearColorValue& getColor (void) const { return m_color; }
+ const UVec2& getOffset (void) const { return m_offset; }
+ const UVec2& getSize (void) const { return m_size; }
+ const VkClearColorValue& getColor (void) const { return m_color; }
private:
- UVec2 m_offset;
- UVec2 m_size;
- VkClearColorValue m_color;
+ UVec2 m_offset;
+ UVec2 m_size;
+ VkClearColorValue m_color;
};
class DepthStencilClear
{
public:
- DepthStencilClear (const UVec2& offset,
- const UVec2& size,
- float depth,
- deUint32 stencil)
+ DepthStencilClear (const UVec2& offset,
+ const UVec2& size,
+ float depth,
+ deUint32 stencil)
: m_offset (offset)
, m_size (size)
, m_depth (depth)
{
}
- const UVec2& getOffset (void) const { return m_offset; }
- const UVec2& getSize (void) const { return m_size; }
- float getDepth (void) const { return m_depth; }
- deUint32 getStencil (void) const { return m_stencil; }
+ const UVec2& getOffset (void) const { return m_offset; }
+ const UVec2& getSize (void) const { return m_size; }
+ float getDepth (void) const { return m_depth; }
+ deUint32 getStencil (void) const { return m_stencil; }
private:
- UVec2 m_offset;
- UVec2 m_size;
+ const UVec2 m_offset;
+ const UVec2 m_size;
- float m_depth;
- deUint32 m_stencil;
+ const float m_depth;
+ const deUint32 m_stencil;
};
class SubpassRenderInfo
{
public:
- SubpassRenderInfo (const RenderPass& renderPass,
- deUint32 subpassIndex,
+ SubpassRenderInfo (const RenderPass& renderPass,
+ deUint32 subpassIndex,
- bool isSecondary_,
+ bool isSecondary_,
- const UVec2& viewportOffset,
- const UVec2& viewportSize,
+ const UVec2& viewportOffset,
+ const UVec2& viewportSize,
- const Maybe<RenderQuad>& renderQuad,
- const vector<ColorClear>& colorClears,
- const Maybe<DepthStencilClear>& depthStencilClear)
+ const Maybe<RenderQuad>& renderQuad,
+ const vector<ColorClear>& colorClears,
+ const Maybe<DepthStencilClear>& depthStencilClear)
: m_viewportOffset (viewportOffset)
, m_viewportSize (viewportSize)
, m_subpassIndex (subpassIndex)
, m_colorClears (colorClears)
, m_depthStencilClear (depthStencilClear)
, m_colorAttachments (renderPass.getSubpasses()[subpassIndex].getColorAttachments())
+ , m_inputAttachments (renderPass.getSubpasses()[subpassIndex].getInputAttachments())
{
for (deUint32 attachmentNdx = 0; attachmentNdx < (deUint32)m_colorAttachments.size(); attachmentNdx++)
m_colorAttachmentInfo.push_back(renderPass.getAttachments()[m_colorAttachments[attachmentNdx].getAttachment()]);
}
}
- const UVec2& getViewportOffset (void) const { return m_viewportOffset; }
- const UVec2& getViewportSize (void) const { return m_viewportSize; }
+ const UVec2& getViewportOffset (void) const { return m_viewportOffset; }
+ const UVec2& getViewportSize (void) const { return m_viewportSize; }
- deUint32 getSubpassIndex (void) const { return m_subpassIndex; }
- bool isSecondary (void) const { return m_isSecondary; }
+ deUint32 getSubpassIndex (void) const { return m_subpassIndex; }
+ bool isSecondary (void) const { return m_isSecondary; }
- const Maybe<RenderQuad>& getRenderQuad (void) const { return m_renderQuad; }
- const vector<ColorClear>& getColorClears (void) const { return m_colorClears; }
- const Maybe<DepthStencilClear>& getDepthStencilClear (void) const { return m_depthStencilClear; }
+ const Maybe<RenderQuad>& getRenderQuad (void) const { return m_renderQuad; }
+ const vector<ColorClear>& getColorClears (void) const { return m_colorClears; }
+ const Maybe<DepthStencilClear>& getDepthStencilClear (void) const { return m_depthStencilClear; }
+
+ deUint32 getInputAttachmentCount (void) const { return (deUint32)m_inputAttachments.size(); }
+ deUint32 getInputAttachmentIndex (deUint32 attachmentNdx) const { return m_inputAttachments[attachmentNdx].getAttachment(); }
+
+ deUint32 getColorAttachmentCount (void) const { return (deUint32)m_colorAttachments.size(); }
+ VkImageLayout getColorAttachmentLayout (deUint32 attachmentNdx) const { return m_colorAttachments[attachmentNdx].getImageLayout(); }
+ deUint32 getColorAttachmentIndex (deUint32 attachmentNdx) const { return m_colorAttachments[attachmentNdx].getAttachment(); }
+ const Attachment& getColorAttachment (deUint32 attachmentNdx) const { return m_colorAttachmentInfo[attachmentNdx]; }
+ Maybe<VkImageLayout> getDepthStencilAttachmentLayout (void) const { return m_depthStencilAttachment ? tcu::just(m_depthStencilAttachment->getImageLayout()) : tcu::nothing<VkImageLayout>(); }
+ Maybe<deUint32> getDepthStencilAttachmentIndex (void) const { return m_depthStencilAttachment ? tcu::just(m_depthStencilAttachment->getAttachment()) : tcu::nothing<deUint32>(); };
+ const Maybe<Attachment>& getDepthStencilAttachment (void) const { return m_depthStencilAttachmentInfo; }
+ VkSubpassDescriptionFlags getSubpassFlags (void) const { return m_flags; }
- deUint32 getColorAttachmentCount (void) const { return (deUint32)m_colorAttachments.size(); }
- VkImageLayout getColorAttachmentLayout (deUint32 attachmentNdx) const { return m_colorAttachments[attachmentNdx].getImageLayout(); }
- deUint32 getColorAttachmentIndex (deUint32 attachmentNdx) const { return m_colorAttachments[attachmentNdx].getAttachment(); }
- const Attachment& getColorAttachment (deUint32 attachmentNdx) const { return m_colorAttachmentInfo[attachmentNdx]; }
- Maybe<VkImageLayout> getDepthStencilAttachmentLayout (void) const { return m_depthStencilAttachment ? tcu::just(m_depthStencilAttachment->getImageLayout()) : tcu::nothing<VkImageLayout>(); }
- Maybe<deUint32> getDepthStencilAttachmentIndex (void) const { return m_depthStencilAttachment ? tcu::just(m_depthStencilAttachment->getAttachment()) : tcu::nothing<deUint32>(); };
- const Maybe<Attachment>& getDepthStencilAttachment (void) const { return m_depthStencilAttachmentInfo; }
- VkSubpassDescriptionFlags getSubpassFlags (void) const { return m_flags; }
private:
- UVec2 m_viewportOffset;
- UVec2 m_viewportSize;
+ UVec2 m_viewportOffset;
+ UVec2 m_viewportSize;
- deUint32 m_subpassIndex;
- bool m_isSecondary;
- VkSubpassDescriptionFlags m_flags;
+ deUint32 m_subpassIndex;
+ bool m_isSecondary;
+ VkSubpassDescriptionFlags m_flags;
- Maybe<RenderQuad> m_renderQuad;
- vector<ColorClear> m_colorClears;
- Maybe<DepthStencilClear> m_depthStencilClear;
+ Maybe<RenderQuad> m_renderQuad;
+ vector<ColorClear> m_colorClears;
+ Maybe<DepthStencilClear> m_depthStencilClear;
- vector<AttachmentReference> m_colorAttachments;
- vector<Attachment> m_colorAttachmentInfo;
+ vector<AttachmentReference> m_colorAttachments;
+ vector<Attachment> m_colorAttachmentInfo;
- Maybe<AttachmentReference> m_depthStencilAttachment;
- Maybe<Attachment> m_depthStencilAttachmentInfo;
+ Maybe<AttachmentReference> m_depthStencilAttachment;
+ Maybe<Attachment> m_depthStencilAttachmentInfo;
+
+ vector<AttachmentReference> m_inputAttachments;
};
Move<VkPipeline> createSubpassPipeline (const DeviceInterface& vk,
for (deUint32 attachmentNdx = 0; attachmentNdx < renderInfo.getColorAttachmentCount(); attachmentNdx++)
{
- const Attachment& attachment = renderInfo.getColorAttachment(attachmentNdx);
+ const Attachment& attachment = renderInfo.getColorAttachment(attachmentNdx);
DE_ASSERT(!rasterSamples || *rasterSamples == attachment.getSamples());
const VkVertexInputBindingDescription vertexBinding =
{
0u, // binding
- (deUint32)sizeof(tcu::Vec4), // strideInBytes
+ (deUint32)sizeof(tcu::Vec2), // strideInBytes
VK_VERTEX_INPUT_RATE_VERTEX, // stepRate
};
const VkVertexInputAttributeDescription vertexAttrib =
VK_FALSE, // alphaToCoverageEnable
VK_FALSE, // alphaToOneEnable
};
+ const size_t stencilIndex = renderInfo.getSubpassIndex();
const VkPipelineDepthStencilStateCreateInfo depthStencilState =
{
VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // sType
VK_COMPARE_OP_ALWAYS, // stencilCompareOp
~0u, // stencilCompareMask
~0u, // stencilWriteMask
- STENCIL_VALUE // stencilReference
+ ((stencilIndex % 2) == 0) ? ~0x0u : 0x0u // stencilReference
}, // front
{
VK_STENCIL_OP_REPLACE, // stencilFailOp
VK_COMPARE_OP_ALWAYS, // stencilCompareOp
~0u, // stencilCompareMask
~0u, // stencilWriteMask
- STENCIL_VALUE // stencilReference
+ ((stencilIndex % 2) == 0) ? ~0x0u : 0x0u // stencilReference
}, // back
0.0f, // minDepthBounds;
};
const VkGraphicsPipelineCreateInfo createInfo =
{
- VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, // sType
- DE_NULL, // pNext
+ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, // sType
+ DE_NULL, // pNext
(VkPipelineCreateFlags)0u,
- 2, // stageCount
- shaderStages, // pStages
-
- &vertexInputState, // pVertexInputState
- &inputAssemblyState, // pInputAssemblyState
- DE_NULL, // pTessellationState
- &viewportState, // pViewportState
- &rasterState, // pRasterState
- &multisampleState, // pMultisampleState
- &depthStencilState, // pDepthStencilState
- &blendState, // pColorBlendState
- (const VkPipelineDynamicStateCreateInfo*)DE_NULL, // pDynamicState
- pipelineLayout, // layout
-
- renderPass, // renderPass
- renderInfo.getSubpassIndex(), // subpass
- DE_NULL, // basePipelineHandle
- 0u // basePipelineIndex
+ 2, // stageCount
+ shaderStages, // pStages
+
+ &vertexInputState, // pVertexInputState
+ &inputAssemblyState, // pInputAssemblyState
+ DE_NULL, // pTessellationState
+ &viewportState, // pViewportState
+ &rasterState, // pRasterState
+ &multisampleState, // pMultisampleState
+ &depthStencilState, // pDepthStencilState
+ &blendState, // pColorBlendState
+ (const VkPipelineDynamicStateCreateInfo*)DE_NULL, // pDynamicState
+ pipelineLayout, // layout
+
+ renderPass, // renderPass
+ renderInfo.getSubpassIndex(), // subpass
+ DE_NULL, // basePipelineHandle
+ 0u // basePipelineIndex
};
return createGraphicsPipeline(vk, device, DE_NULL, &createInfo);
class SubpassRenderer
{
public:
- SubpassRenderer (Context& context,
- const DeviceInterface& vk,
- VkDevice device,
- Allocator& allocator,
- VkRenderPass renderPass,
- VkFramebuffer framebuffer,
- VkCommandPool commandBufferPool,
- deUint32 queueFamilyIndex,
- const SubpassRenderInfo& renderInfo)
+ SubpassRenderer (Context& context,
+ const DeviceInterface& vk,
+ VkDevice device,
+ Allocator& allocator,
+ VkRenderPass renderPass,
+ VkFramebuffer framebuffer,
+ VkCommandPool commandBufferPool,
+ deUint32 queueFamilyIndex,
+ const vector<VkImage>& attachmentImages,
+ const vector<pair<VkImageView, VkImageView> >& attachmentViews,
+ const SubpassRenderInfo& renderInfo,
+ const vector<Attachment>& attachmentInfos)
: m_renderInfo (renderInfo)
{
- const deUint32 subpassIndex = renderInfo.getSubpassIndex();
+ const deUint32 subpassIndex = renderInfo.getSubpassIndex();
+ vector<VkDescriptorSetLayoutBinding> bindings;
+
+ for (deUint32 colorAttachmentNdx = 0; colorAttachmentNdx < renderInfo.getColorAttachmentCount(); colorAttachmentNdx++)
+ m_colorAttachmentImages.push_back(attachmentImages[renderInfo.getColorAttachmentIndex(colorAttachmentNdx)]);
+
+ if (renderInfo.getDepthStencilAttachmentIndex())
+ m_depthStencilAttachmentImage = attachmentImages[*renderInfo.getDepthStencilAttachmentIndex()];
if (renderInfo.getRenderQuad())
{
- const RenderQuad& renderQuad = *renderInfo.getRenderQuad();
+ const RenderQuad& renderQuad = *renderInfo.getRenderQuad();
+
+ if (renderInfo.getInputAttachmentCount() > 0)
+ {
+ deUint32 bindingIndex = 0;
+
+ for (deUint32 inputAttachmentNdx = 0; inputAttachmentNdx < renderInfo.getInputAttachmentCount(); inputAttachmentNdx++)
+ {
+ const Attachment attachmentInfo = attachmentInfos[renderInfo.getInputAttachmentIndex(inputAttachmentNdx)];
+ const tcu::TextureFormat format = mapVkFormat(attachmentInfo.getFormat());
+ const bool isDepthFormat = tcu::hasDepthComponent(format.order);
+ const bool isStencilFormat = tcu::hasStencilComponent(format.order);
+ const deUint32 bindingCount = isDepthFormat && isStencilFormat ? 2u : 1u;
+
+ for (deUint32 bindingNdx = 0; bindingNdx < bindingCount; bindingNdx++)
+ {
+ const VkDescriptorSetLayoutBinding binding =
+ {
+ bindingIndex,
+ vk::VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
+ 1u,
+ vk::VK_SHADER_STAGE_FRAGMENT_BIT,
+ DE_NULL
+ };
+
+ bindings.push_back(binding);
+ bindingIndex++;
+ }
+ }
+
+ const VkDescriptorSetLayoutCreateInfo createInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
+ DE_NULL,
+
+ 0u,
+ (deUint32)bindings.size(),
+ &bindings[0]
+ };
+
+ m_descriptorSetLayout = vk::createDescriptorSetLayout(vk, device, &createInfo);
+ }
+
+ const VkDescriptorSetLayout descriptorSetLayout = *m_descriptorSetLayout;
const VkPipelineLayoutCreateInfo pipelineLayoutParams =
{
- VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // sType;
- DE_NULL, // pNext;
+ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // sType;
+ DE_NULL, // pNext;
(vk::VkPipelineLayoutCreateFlags)0,
- 0u, // descriptorSetCount;
- DE_NULL, // pSetLayouts;
- 0u, // pushConstantRangeCount;
- DE_NULL, // pPushConstantRanges;
+ m_descriptorSetLayout ? 1u :0u , // setLayoutCount;
+ m_descriptorSetLayout ? &descriptorSetLayout : DE_NULL, // pSetLayouts;
+ 0u, // pushConstantRangeCount;
+ DE_NULL, // pPushConstantRanges;
};
m_vertexShaderModule = createShaderModule(vk, device, context.getBinaryCollection().get(de::toString(subpassIndex) + "-vert"), 0u);
bindBufferMemory(vk, device, *m_vertexBuffer, m_vertexBufferMemory->getMemory(), m_vertexBufferMemory->getOffset());
uploadBufferData(vk, device, *m_vertexBufferMemory, renderQuad.getVertexDataSize(), renderQuad.getVertexPointer());
+
+ if (renderInfo.getInputAttachmentCount() > 0)
+ {
+ {
+ const VkDescriptorPoolSize poolSize =
+ {
+ vk::VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
+ // \note Reserve 2 per input attachment since depthStencil attachments require 2.
+ renderInfo.getInputAttachmentCount() * 2u
+ };
+ const VkDescriptorPoolCreateInfo createInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
+ DE_NULL,
+ VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,
+
+ // \note Reserve 2 per input attachment since depthStencil attachments require 2.
+ renderInfo.getInputAttachmentCount() * 2u,
+ 1u,
+ &poolSize
+ };
+
+ m_descriptorPool = vk::createDescriptorPool(vk, device, &createInfo);
+ }
+ {
+ const VkDescriptorSetAllocateInfo allocateInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
+ DE_NULL,
+
+ *m_descriptorPool,
+ 1u,
+ &descriptorSetLayout
+ };
+
+ m_descriptorSet = vk::allocateDescriptorSet(vk, device, &allocateInfo);
+ }
+ {
+ vector<VkWriteDescriptorSet> writes (bindings.size());
+ vector<VkDescriptorImageInfo> imageInfos (bindings.size());
+ deUint32 bindingIndex = 0;
+
+ for (deUint32 inputAttachmentNdx = 0; inputAttachmentNdx < renderInfo.getInputAttachmentCount(); inputAttachmentNdx++)
+ {
+ const Attachment attachmentInfo = attachmentInfos[renderInfo.getInputAttachmentIndex(inputAttachmentNdx)];
+ const tcu::TextureFormat format = mapVkFormat(attachmentInfo.getFormat());
+ const bool isDepthFormat = tcu::hasDepthComponent(format.order);
+ const bool isStencilFormat = tcu::hasStencilComponent(format.order);
+
+ if (isDepthFormat && isStencilFormat)
+ {
+ {
+ const VkDescriptorImageInfo imageInfo =
+ {
+ (VkSampler)0,
+ attachmentViews[renderInfo.getInputAttachmentIndex(inputAttachmentNdx)].first,
+ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
+ };
+ imageInfos[bindingIndex] = imageInfo;
+
+ {
+ const VkWriteDescriptorSet write =
+ {
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
+ DE_NULL,
+
+ *m_descriptorSet,
+ bindingIndex,
+ 0u,
+ 1u,
+ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
+ &imageInfos[bindingIndex],
+ DE_NULL,
+ DE_NULL
+ };
+ writes[bindingIndex] = write;
+
+ bindingIndex++;
+ }
+ }
+ {
+ const VkDescriptorImageInfo imageInfo =
+ {
+ (VkSampler)0,
+ attachmentViews[renderInfo.getInputAttachmentIndex(inputAttachmentNdx)].second,
+ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
+ };
+ imageInfos[bindingIndex] = imageInfo;
+
+ {
+ const VkWriteDescriptorSet write =
+ {
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
+ DE_NULL,
+
+ *m_descriptorSet,
+ bindingIndex,
+ 0u,
+ 1u,
+ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
+ &imageInfos[bindingIndex],
+ DE_NULL,
+ DE_NULL
+ };
+ writes[bindingIndex] = write;
+
+ bindingIndex++;
+ }
+ }
+ }
+ else
+ {
+ const VkDescriptorImageInfo imageInfo =
+ {
+ (VkSampler)0,
+ attachmentViews[renderInfo.getInputAttachmentIndex(inputAttachmentNdx)].first,
+ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
+ };
+ imageInfos[bindingIndex] = imageInfo;
+
+ {
+ const VkWriteDescriptorSet write =
+ {
+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
+ DE_NULL,
+
+ *m_descriptorSet,
+ bindingIndex,
+ 0u,
+ 1u,
+ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
+ &imageInfos[bindingIndex],
+ DE_NULL,
+ DE_NULL
+ };
+ writes[bindingIndex] = write;
+
+ bindingIndex++;
+ }
+ }
+ }
+
+ vk.updateDescriptorSets(device, (deUint32)writes.size(), &writes[0], 0u, DE_NULL);
+ }
+ }
}
if (renderInfo.isSecondary())
if (m_renderInfo.getDepthStencilClear())
{
- const DepthStencilClear& depthStencilClear = *m_renderInfo.getDepthStencilClear();
- const deUint32 attachmentNdx = m_renderInfo.getColorAttachmentCount();
- tcu::TextureFormat format = mapVkFormat(m_renderInfo.getDepthStencilAttachment()->getFormat());
- const VkClearAttachment attachment =
+ const DepthStencilClear& depthStencilClear = *m_renderInfo.getDepthStencilClear();
+ const deUint32 attachmentNdx = m_renderInfo.getColorAttachmentCount();
+ tcu::TextureFormat format = mapVkFormat(m_renderInfo.getDepthStencilAttachment()->getFormat());
+ const VkClearAttachment attachment =
{
(VkImageAspectFlags)((hasDepthComponent(format.order) ? VK_IMAGE_ASPECT_DEPTH_BIT : 0)
| (hasStencilComponent(format.order) ? VK_IMAGE_ASPECT_STENCIL_BIT : 0)),
vk.cmdClearAttachments(commandBuffer, 1u, &attachment, 1u, &rect);
}
+ vector<VkImageMemoryBarrier> selfDeps;
+ VkPipelineStageFlags srcStages = 0;
+ VkPipelineStageFlags dstStages = 0;
+
+ for (deUint32 inputAttachmentNdx = 0; inputAttachmentNdx < m_renderInfo.getInputAttachmentCount(); inputAttachmentNdx++)
+ {
+ for (deUint32 colorAttachmentNdx = 0; colorAttachmentNdx < m_renderInfo.getColorAttachmentCount(); colorAttachmentNdx++)
+ {
+ if (m_renderInfo.getInputAttachmentIndex(inputAttachmentNdx) == m_renderInfo.getColorAttachmentIndex(colorAttachmentNdx))
+ {
+ const VkImageMemoryBarrier barrier =
+ {
+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // sType
+ DE_NULL, // pNext
+
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // srcAccessMask
+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, // dstAccessMask
+
+ VK_IMAGE_LAYOUT_GENERAL, // oldLayout
+ VK_IMAGE_LAYOUT_GENERAL, // newLayout
+
+ VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex
+ VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex
+
+ m_colorAttachmentImages[colorAttachmentNdx], // image
+ { // subresourceRange
+ VK_IMAGE_ASPECT_COLOR_BIT, // aspect
+ 0, // baseMipLevel
+ 1, // mipLevels
+ 0, // baseArraySlice
+ 1 // arraySize
+ }
+ };
+
+ srcStages |= VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
+ dstStages |= VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
+
+ selfDeps.push_back(barrier);
+ }
+ }
+
+ if (m_renderInfo.getDepthStencilAttachmentIndex() && (m_renderInfo.getInputAttachmentIndex(inputAttachmentNdx) == *m_renderInfo.getDepthStencilAttachmentIndex()))
+ {
+ const VkImageMemoryBarrier barrier =
+ {
+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // sType;
+ DE_NULL, // pNext;
+
+ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, // srcAccessMask
+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, // dstAccessMask
+
+ VK_IMAGE_LAYOUT_GENERAL, // oldLayout
+ VK_IMAGE_LAYOUT_GENERAL, // newLayout;
+
+ VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex;
+ VK_QUEUE_FAMILY_IGNORED, // destQueueFamilyIndex;
+
+ m_depthStencilAttachmentImage, // image;
+ { // subresourceRange;
+ VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT, // aspect;
+ 0, // baseMipLevel;
+ 1, // mipLevels;
+ 0, // baseArraySlice;
+ 1 // arraySize;
+ }
+ };
+
+ srcStages |= VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT;
+ dstStages |= VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
+
+ selfDeps.push_back(barrier);
+ }
+ }
+
+ if (!selfDeps.empty())
+ vk.cmdPipelineBarrier(commandBuffer, srcStages, dstStages, VK_DEPENDENCY_BY_REGION_BIT, 0, DE_NULL, 0, DE_NULL, (deUint32)selfDeps.size(), &selfDeps[0]);
+
if (m_renderInfo.getRenderQuad())
{
const VkDeviceSize offset = 0;
const VkBuffer vertexBuffer = *m_vertexBuffer;
vk.cmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
+
+ if (m_descriptorSet)
+ {
+ const VkDescriptorSet descriptorSet = *m_descriptorSet;
+ vk.cmdBindDescriptorSets(commandBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipelineLayout, 0u, 1u, &descriptorSet, 0u, NULL);
+ }
+
vk.cmdBindVertexBuffers(commandBuffer, 0u, 1u, &vertexBuffer, &offset);
vk.cmdDraw(commandBuffer, 6u, 1u, 0u, 0u);
}
}
private:
- const SubpassRenderInfo m_renderInfo;
- Move<VkCommandBuffer> m_commandBuffer;
- Move<VkPipeline> m_pipeline;
- Move<VkPipelineLayout> m_pipelineLayout;
-
- Move<VkShaderModule> m_vertexShaderModule;
-
- Move<VkShaderModule> m_fragmentShaderModule;
-
- Move<VkBuffer> m_vertexBuffer;
- de::MovePtr<Allocation> m_vertexBufferMemory;
+ const SubpassRenderInfo m_renderInfo;
+ Move<VkCommandBuffer> m_commandBuffer;
+ Move<VkPipeline> m_pipeline;
+ Move<VkDescriptorSetLayout> m_descriptorSetLayout;
+ Move<VkPipelineLayout> m_pipelineLayout;
+
+ Move<VkShaderModule> m_vertexShaderModule;
+ Move<VkShaderModule> m_fragmentShaderModule;
+
+ Move<VkDescriptorPool> m_descriptorPool;
+ Move<VkDescriptorSet> m_descriptorSet;
+ Move<VkBuffer> m_vertexBuffer;
+ de::MovePtr<Allocation> m_vertexBufferMemory;
+ vector<VkImage> m_colorAttachmentImages;
+ VkImage m_depthStencilAttachmentImage;
};
void pushImageInitializationCommands (const DeviceInterface& vk,
{
const float clearNan = tcu::Float32::nan().asFloat();
const float clearDepth = hasDepthComponent(format.order) ? clearValues[attachmentNdx]->depthStencil.depth : clearNan;
- const deUint32 clearStencil = hasStencilComponent(format.order) ? clearValues[attachmentNdx]->depthStencil.stencil : ~0u;
+ const deUint32 clearStencil = hasStencilComponent(format.order) ? clearValues[attachmentNdx]->depthStencil.stencil : 0xDEu;
const VkClearDepthStencilValue depthStencil =
{
clearDepth,
{
const VkImageSubresourceRange range =
{
- VK_IMAGE_ASPECT_COLOR_BIT, // aspectMask;
- 0, // baseMipLevel;
- 1, // mipLevels;
- 0, // baseArrayLayer;
- 1 // layerCount;
+ VK_IMAGE_ASPECT_COLOR_BIT, // aspectMask;
+ 0, // baseMipLevel;
+ 1, // mipLevels;
+ 0, // baseArrayLayer;
+ 1 // layerCount;
};
const VkClearColorValue clearColor = clearValues[attachmentNdx]->color;
for (size_t attachmentNdx = 0; attachmentNdx < attachmentInfo.size(); attachmentNdx++)
{
- const VkImageLayout oldLayout = clearValues[attachmentNdx] ? VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL : VK_IMAGE_LAYOUT_UNDEFINED;
- const VkImageMemoryBarrier barrier =
+ const VkImageLayout oldLayout = clearValues[attachmentNdx] ? VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL : VK_IMAGE_LAYOUT_UNDEFINED;
+ const VkImageMemoryBarrier barrier =
{
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // sType;
DE_NULL, // pNext;
}
}
-void pushRenderPassCommands (const DeviceInterface& vk,
- VkCommandBuffer commandBuffer,
- VkRenderPass renderPass,
- VkFramebuffer framebuffer,
- const vector<de::SharedPtr<SubpassRenderer> >& subpassRenderers,
- const UVec2& renderPos,
- const UVec2& renderSize,
- const vector<Maybe<VkClearValue> >& renderPassClearValues,
- TestConfig::RenderTypes render)
+void pushRenderPassCommands (const DeviceInterface& vk,
+ VkCommandBuffer commandBuffer,
+ VkRenderPass renderPass,
+ VkFramebuffer framebuffer,
+ const vector<de::SharedPtr<SubpassRenderer> >& subpassRenderers,
+ const UVec2& renderPos,
+ const UVec2& renderSize,
+ const vector<Maybe<VkClearValue> >& renderPassClearValues,
+ TestConfig::RenderTypes render)
{
const float clearNan = tcu::Float32::nan().asFloat();
vector<VkClearValue> attachmentClearValues;
{
const VkBufferImageCopy stencilRect =
{
- 0, // bufferOffset
- 0, // bufferRowLength
- 0, // bufferImageHeight
+ 0, // bufferOffset
+ 0, // bufferRowLength
+ 0, // bufferImageHeight
{ // imageSubresource
VK_IMAGE_ASPECT_STENCIL_BIT, // aspect
0, // mipLevel
0, // arraySlice
- 1 // arraySize
+ 1 // arraySize
},
- { 0, 0, 0 }, // imageOffset
- { targetSize.x(), targetSize.y(), 1u } // imageExtent
+ { 0, 0, 0 }, // imageOffset
+ { targetSize.x(), targetSize.y(), 1u } // imageExtent
};
vk.cmdCopyImageToBuffer(commandBuffer, attachmentResources[attachmentNdx]->getImage(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, attachmentResources[attachmentNdx]->getSecondaryBuffer(), 1, &stencilRect);
}
}
-void clear (const PixelBufferAccess& access, const VkClearValue& value)
+class PixelValue
+{
+public:
+ PixelValue (const Maybe<bool>& x = nothing<bool>(),
+ const Maybe<bool>& y = nothing<bool>(),
+ const Maybe<bool>& z = nothing<bool>(),
+ const Maybe<bool>& w = nothing<bool>());
+
+ void setUndefined (size_t ndx);
+ void setValue (size_t ndx, bool value);
+ Maybe<bool> getValue (size_t ndx) const;
+
+private:
+ deUint16 m_status;
+};
+
+PixelValue::PixelValue (const Maybe<bool>& x,
+ const Maybe<bool>& y,
+ const Maybe<bool>& z,
+ const Maybe<bool>& w)
+ : m_status (0)
{
- const tcu::TextureFormat& format = access.getFormat();
+ const Maybe<bool> values[] =
+ {
+ x, y, z, w
+ };
- if (tcu::hasDepthComponent(format.order) || tcu::hasStencilComponent(format.order))
+ for (size_t ndx = 0; ndx < DE_LENGTH_OF_ARRAY(values); ndx++)
{
- if (tcu::hasDepthComponent(format.order))
- tcu::clearDepth(access, value.depthStencil.depth);
+ if (values[ndx])
+ setValue(ndx, *values[ndx]);
+ else
+ setUndefined(ndx);
+ }
- if (tcu::hasStencilComponent(format.order))
- tcu::clearStencil(access, value.depthStencil.stencil);
+ DE_ASSERT(m_status <= 0xFFu);
+}
+
+void PixelValue::setUndefined (size_t ndx)
+{
+ DE_ASSERT(ndx < 4);
+ DE_ASSERT(m_status <= 0xFFu);
+
+ m_status &= (deUint16)~(0x1u << (deUint16)(ndx * 2));
+ DE_ASSERT(m_status <= 0xFFu);
+}
+
+void PixelValue::setValue (size_t ndx, bool value)
+{
+ DE_ASSERT(ndx < 4);
+ DE_ASSERT(m_status <= 0xFFu);
+
+ m_status |= (deUint16)(0x1u << (ndx * 2));
+
+ if (value)
+ m_status |= (deUint16)(0x1u << (ndx * 2 + 1));
+ else
+ m_status &= (deUint16)~(0x1u << (deUint16)(ndx * 2 + 1));
+
+ DE_ASSERT(m_status <= 0xFFu);
+}
+
+Maybe<bool> PixelValue::getValue (size_t ndx) const
+{
+ DE_ASSERT(ndx < 4);
+ DE_ASSERT(m_status <= 0xFFu);
+
+ if ((m_status & (0x1u << (deUint16)(ndx * 2))) != 0)
+ {
+ return just((m_status & (0x1u << (deUint32)(ndx * 2 + 1))) != 0);
}
else
+ return nothing<bool>();
+}
+
+void clearReferenceValues (vector<PixelValue>& values,
+ const UVec2& targetSize,
+ const UVec2& offset,
+ const UVec2& size,
+ const BVec4& mask,
+ const PixelValue& value)
+{
+ DE_ASSERT(targetSize.x() * targetSize.y() == (deUint32)values.size());
+ DE_ASSERT(offset.x() + size.x() <= targetSize.x());
+ DE_ASSERT(offset.y() + size.y() <= targetSize.y());
+
+ for (deUint32 y = offset.y(); y < offset.y() + size.y(); y++)
+ for (deUint32 x = offset.x(); x < offset.x() + size.x(); x++)
{
- if (tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_FLOATING_POINT
- || tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT
- || tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT)
+ for (int compNdx = 0; compNdx < 4; compNdx++)
{
- const tcu::Vec4 color (value.color.float32[0],
- value.color.float32[1],
- value.color.float32[2],
- value.color.float32[3]);
+ if (mask[compNdx])
+ {
+ if (value.getValue(compNdx))
+ values[x + y * targetSize.x()].setValue(compNdx, *value.getValue(compNdx));
+ else
+ values[x + y * targetSize.x()].setUndefined(compNdx);
+ }
+ }
+ }
+}
- if (tcu::isSRGB(format))
- tcu::clear(access, tcu::linearToSRGB(color));
- else
- tcu::clear(access, color);
+void markUndefined (vector<PixelValue>& values,
+ const BVec4& mask,
+ const UVec2& targetSize,
+ const UVec2& offset,
+ const UVec2& size)
+{
+ DE_ASSERT(targetSize.x() * targetSize.y() == (deUint32)values.size());
+
+ for (deUint32 y = offset.y(); y < offset.y() + size.y(); y++)
+ for (deUint32 x = offset.x(); x < offset.x() + size.x(); x++)
+ {
+ for (int compNdx = 0; compNdx < 4; compNdx++)
+ {
+ if (mask[compNdx])
+ values[x + y * targetSize.x()].setUndefined(compNdx);
}
- else if (tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER)
+ }
+}
+
+PixelValue clearValueToPixelValue (const VkClearValue& value,
+ const tcu::TextureFormat& format)
+{
+ const bool isDepthAttachment = hasDepthComponent(format.order);
+ const bool isStencilAttachment = hasStencilComponent(format.order);
+ const bool isDepthOrStencilAttachment = isDepthAttachment || isStencilAttachment;
+ PixelValue pixelValue;
+
+ if (isDepthOrStencilAttachment)
+ {
+ if (isDepthAttachment)
{
- const tcu::UVec4 color (value.color.uint32[0],
- value.color.uint32[1],
- value.color.uint32[2],
- value.color.uint32[3]);
+ if (value.depthStencil.depth == 1.0f)
+ pixelValue.setValue(0, true);
+ else if (value.depthStencil.depth == 0.0f)
+ pixelValue.setValue(0, false);
+ else
+ DE_FATAL("Unknown depth value");
+ }
- tcu::clear(access, color);
+ if (isStencilAttachment)
+ {
+ if (value.depthStencil.stencil == 0xFFu)
+ pixelValue.setValue(1, true);
+ else if (value.depthStencil.stencil == 0x0u)
+ pixelValue.setValue(1, false);
+ else
+ DE_FATAL("Unknown stencil value");
}
- else if (tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER)
+ }
+ else
+ {
+ const tcu::TextureChannelClass channelClass = tcu::getTextureChannelClass(format.type);
+ const tcu::BVec4 channelMask = tcu::getTextureFormatChannelMask(format);
+
+ switch (channelClass)
{
- const tcu::IVec4 color (value.color.int32[0],
- value.color.int32[1],
- value.color.int32[2],
- value.color.int32[3]);
+ case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER:
+ for (int i = 0; i < 4; i++)
+ {
+ if (channelMask[i])
+ {
+ if (value.color.int32[i] == 1)
+ pixelValue.setValue(i, true);
+ else if (value.color.int32[i] == 0)
+ pixelValue.setValue(i, false);
+ else
+ DE_FATAL("Unknown clear color value");
+ }
+ }
+ break;
+
+ case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER:
+ for (int i = 0; i < 4; i++)
+ {
+ if (channelMask[i])
+ {
+ if (value.color.uint32[i] == 1u)
+ pixelValue.setValue(i, true);
+ else if (value.color.uint32[i] == 0u)
+ pixelValue.setValue(i, false);
+ else
+ DE_FATAL("Unknown clear color value");
+ }
+ }
+ break;
+
+ case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT:
+ case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT:
+ case tcu::TEXTURECHANNELCLASS_FLOATING_POINT:
+ for (int i = 0; i < 4; i++)
+ {
+ if (channelMask[i])
+ {
+ if (value.color.float32[i] == 1.0f)
+ pixelValue.setValue(i, true);
+ else if (value.color.float32[i] == 0.0f)
+ pixelValue.setValue(i, false);
+ else
+ DE_FATAL("Unknown clear color value");
+ }
+ }
+ break;
- tcu::clear(access, color);
+ default:
+ DE_FATAL("Unknown channel class");
}
- else
- DE_FATAL("Unknown channel class");
}
-}
-
-Vec4 computeUvs (const IVec2& posA, const IVec2& posB, const IVec2& pos)
-{
- const float u = de::clamp((float)(pos.x() - posA.x()) / (float)(posB.x() - posA.x()), 0.0f, 1.0f);
- const float v = de::clamp((float)(pos.y() - posA.y()) / (float)(posB.y() - posA.y()), 0.0f, 1.0f);
- return Vec4(u, v, u * v, (u + v) / 2.0f);
+ return pixelValue;
}
-void renderReferenceImages (vector<tcu::TextureLevel>& referenceAttachments,
+void renderReferenceValues (vector<vector<PixelValue> >& referenceAttachments,
const RenderPass& renderPassInfo,
const UVec2& targetSize,
const vector<Maybe<VkClearValue> >& imageClearValues,
for (size_t attachmentNdx = 0; attachmentNdx < renderPassInfo.getAttachments().size(); attachmentNdx++)
{
- const Attachment attachment = renderPassInfo.getAttachments()[attachmentNdx];
- const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
- const tcu::TextureFormatInfo textureInfo = tcu::getTextureFormatInfo(format);
- tcu::TextureLevel& reference = referenceAttachments[attachmentNdx];
- const bool isDepthOrStencilAttachment = hasDepthComponent(format.order) || hasStencilComponent(format.order);
+ const Attachment attachment = renderPassInfo.getAttachments()[attachmentNdx];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ vector<PixelValue>& reference = referenceAttachments[attachmentNdx];
- reference = tcu::TextureLevel(format, targetSize.x(), targetSize.y());
+ reference.resize(targetSize.x() * targetSize.y());
if (imageClearValues[attachmentNdx])
- clear(reference.getAccess(), *imageClearValues[attachmentNdx]);
- else
- {
- // Fill with grid if image contentst are undefined before renderpass
- if (isDepthOrStencilAttachment)
- {
- if (tcu::hasDepthComponent(format.order))
- tcu::fillWithGrid(tcu::getEffectiveDepthStencilAccess(reference.getAccess(), tcu::Sampler::MODE_DEPTH), 2, textureInfo.valueMin, textureInfo.valueMax);
-
- if (tcu::hasStencilComponent(format.order))
- tcu::fillWithGrid(tcu::getEffectiveDepthStencilAccess(reference.getAccess(), tcu::Sampler::MODE_STENCIL), 2, textureInfo.valueMin, textureInfo.valueMax);
- }
- else
- tcu::fillWithGrid(reference.getAccess(), 2, textureInfo.valueMin, textureInfo.valueMax);
- }
+ clearReferenceValues(reference, targetSize, UVec2(0, 0), targetSize, BVec4(true), clearValueToPixelValue(*imageClearValues[attachmentNdx], format));
}
for (size_t subpassNdx = 0; subpassNdx < subpasses.size(); subpassNdx++)
if (!attachmentUsed[attachmentIndex])
{
- const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
- tcu::TextureLevel& reference = referenceAttachments[attachmentIndex];
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
- DE_ASSERT(!tcu::hasDepthComponent(reference.getFormat().order));
- DE_ASSERT(!tcu::hasStencilComponent(reference.getFormat().order));
+ DE_ASSERT(!tcu::hasDepthComponent(format.order));
+ DE_ASSERT(!tcu::hasStencilComponent(format.order));
if (attachment.getLoadOp() == VK_ATTACHMENT_LOAD_OP_CLEAR)
- clear(tcu::getSubregion(reference.getAccess(), renderPos.x(), renderPos.y(), renderSize.x(), renderSize.y()), *renderPassClearValues[attachmentIndex]);
+ clearReferenceValues(reference, targetSize, renderPos, renderSize, BVec4(true), clearValueToPixelValue(*renderPassClearValues[attachmentIndex], format));
else if (attachment.getLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)
- {
- const tcu::TextureFormatInfo textureInfo = tcu::getTextureFormatInfo(reference.getFormat());
-
- tcu::fillWithGrid(tcu::getSubregion(reference.getAccess(), renderPos.x(), renderPos.y(), renderSize.x(), renderSize.y()), 2, textureInfo.valueMin, textureInfo.valueMax);
- }
+ markUndefined(reference, BVec4(true), targetSize, renderPos, renderSize);
attachmentUsed[attachmentIndex] = true;
}
}
// Apply load op to depth/stencil attachment if it was used for the first time
- if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED && !attachmentUsed[subpass.getDepthStencilAttachment().getAttachment()])
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
{
const deUint32 attachmentIndex = subpass.getDepthStencilAttachment().getAttachment();
// Apply load op if attachment was used for the first time
if (!attachmentUsed[attachmentIndex])
{
- const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
- tcu::TextureLevel& reference = referenceAttachments[attachmentIndex];
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
- if (tcu::hasDepthComponent(reference.getFormat().order))
+ if (tcu::hasDepthComponent(format.order))
{
if (attachment.getLoadOp() == VK_ATTACHMENT_LOAD_OP_CLEAR)
- clear(tcu::getSubregion(tcu::getEffectiveDepthStencilAccess(reference.getAccess(), tcu::Sampler::MODE_DEPTH), renderPos.x(), renderPos.y(), renderSize.x(), renderSize.y()), *renderPassClearValues[attachmentIndex]);
+ clearReferenceValues(reference, targetSize, renderPos, renderSize, BVec4(true, false, false, false), clearValueToPixelValue(*renderPassClearValues[attachmentIndex], format));
else if (attachment.getLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)
- {
- const tcu::TextureFormatInfo textureInfo = tcu::getTextureFormatInfo(reference.getFormat());
-
- tcu::fillWithGrid(tcu::getSubregion(tcu::getEffectiveDepthStencilAccess(reference.getAccess(), tcu::Sampler::MODE_DEPTH), renderPos.x(), renderPos.y(), renderSize.x(), renderSize.y()), 2, textureInfo.valueMin, textureInfo.valueMax);
- }
+ markUndefined(reference, BVec4(true, false, false, false), targetSize, renderPos, renderSize);
}
- if (tcu::hasStencilComponent(reference.getFormat().order))
+ if (tcu::hasStencilComponent(format.order))
{
if (attachment.getStencilLoadOp() == VK_ATTACHMENT_LOAD_OP_CLEAR)
- clear(tcu::getSubregion(tcu::getEffectiveDepthStencilAccess(reference.getAccess(), tcu::Sampler::MODE_STENCIL), renderPos.x(), renderPos.y(), renderSize.x(), renderSize.y()), *renderPassClearValues[attachmentIndex]);
+ clearReferenceValues(reference, targetSize, renderPos, renderSize, BVec4(false, true, false, false), clearValueToPixelValue(*renderPassClearValues[attachmentIndex], format));
else if (attachment.getStencilLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)
- {
- const tcu::TextureFormatInfo textureInfo = tcu::getTextureFormatInfo(reference.getFormat());
+ markUndefined(reference, BVec4(false, true, false, false), targetSize, renderPos, renderSize);
+ }
- tcu::fillWithGrid(tcu::getSubregion(tcu::getEffectiveDepthStencilAccess(reference.getAccess(), tcu::Sampler::MODE_STENCIL), renderPos.x(), renderPos.y(), renderSize.x(), renderSize.y()), 2, textureInfo.valueMin, textureInfo.valueMax);
- }
- }
+ attachmentUsed[attachmentIndex] = true;
}
-
- attachmentUsed[attachmentIndex] = true;
}
for (size_t colorClearNdx = 0; colorClearNdx < renderInfo.getColorClears().size(); colorClearNdx++)
{
- const ColorClear& colorClear = renderInfo.getColorClears()[colorClearNdx];
- const UVec2 offset = colorClear.getOffset();
- const UVec2 size = colorClear.getSize();
- tcu::TextureLevel& reference = referenceAttachments[subpass.getColorAttachments()[colorClearNdx].getAttachment()];
- VkClearValue value;
+ const ColorClear& colorClear = renderInfo.getColorClears()[colorClearNdx];
+ const UVec2 offset = colorClear.getOffset();
+ const UVec2 size = colorClear.getSize();
+ const deUint32 attachmentIndex = subpass.getColorAttachments()[colorClearNdx].getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+ VkClearValue value;
value.color = colorClear.getColor();
- clear(tcu::getSubregion(reference.getAccess(), offset.x(), offset.y(), 0, size.x(), size.y(), 1), value);
+ clearReferenceValues(reference, targetSize, offset, size, BVec4(true), clearValueToPixelValue(value, format));
}
if (renderInfo.getDepthStencilClear())
{
- const DepthStencilClear& dsClear = *renderInfo.getDepthStencilClear();
- const UVec2 offset = dsClear.getOffset();
- const UVec2 size = dsClear.getSize();
- tcu::TextureLevel& reference = referenceAttachments[subpass.getDepthStencilAttachment().getAttachment()];
+ const DepthStencilClear& dsClear = *renderInfo.getDepthStencilClear();
+ const UVec2 offset = dsClear.getOffset();
+ const UVec2 size = dsClear.getSize();
+ const deUint32 attachmentIndex = subpass.getDepthStencilAttachment().getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const bool hasStencil = tcu::hasStencilComponent(format.order);
+ const bool hasDepth = tcu::hasDepthComponent(format.order);
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+ VkClearValue value;
- if (tcu::hasDepthComponent(reference.getFormat().order))
- clearDepth(tcu::getSubregion(reference.getAccess(), offset.x(), offset.y(), 0, size.x(), size.y(), 1), dsClear.getDepth());
+ value.depthStencil.depth = dsClear.getDepth();
+ value.depthStencil.stencil = dsClear.getStencil();
- if (tcu::hasStencilComponent(reference.getFormat().order))
- clearStencil(tcu::getSubregion(reference.getAccess(), offset.x(), offset.y(), 0, size.x(), size.y(), 1), dsClear.getStencil());
+ clearReferenceValues(reference, targetSize, offset, size, BVec4(hasDepth, hasStencil, false, false), clearValueToPixelValue(value, format));
}
if (renderInfo.getRenderQuad())
{
const RenderQuad& renderQuad = *renderInfo.getRenderQuad();
- const Vec4 posA = renderQuad.getCornerA();
- const Vec4 posB = renderQuad.getCornerB();
+ const Vec2 posA = renderQuad.getCornerA();
+ const Vec2 posB = renderQuad.getCornerB();
const Vec2 origin = Vec2((float)renderInfo.getViewportOffset().x(), (float)renderInfo.getViewportOffset().y()) + Vec2((float)renderInfo.getViewportSize().x(), (float)renderInfo.getViewportSize().y()) / Vec2(2.0f);
const Vec2 p = Vec2((float)renderInfo.getViewportSize().x(), (float)renderInfo.getViewportSize().y()) / Vec2(2.0f);
- const IVec2 posAI ((deInt32)(origin.x() + (p.x() * posA.x())),
- (deInt32)(origin.y() + (p.y() * posA.y())));
- const IVec2 posBI ((deInt32)(origin.x() + (p.x() * posB.x())),
- (deInt32)(origin.y() + (p.y() * posB.y())));
+ const IVec2 posAI (deRoundFloatToInt32(origin.x() + (p.x() * posA.x())),
+ deRoundFloatToInt32(origin.y() + (p.y() * posA.y())));
+ const IVec2 posBI (deRoundFloatToInt32(origin.x() + (p.x() * posB.x())),
+ deRoundFloatToInt32(origin.y() + (p.y() * posB.y())));
- for (size_t attachmentRefNdx = 0; attachmentRefNdx < subpass.getColorAttachments().size(); attachmentRefNdx++)
- {
- const Attachment attachment = renderPassInfo.getAttachments()[subpass.getColorAttachments()[attachmentRefNdx].getAttachment()];
- const tcu::TextureFormatInfo textureInfo = tcu::getTextureFormatInfo(mapVkFormat(attachment.getFormat()));
- tcu::TextureLevel& referenceTexture = referenceAttachments[subpass.getColorAttachments()[attachmentRefNdx].getAttachment()];
- const bool srgb = tcu::isSRGB(referenceTexture.getFormat());
- const PixelBufferAccess reference = referenceTexture.getAccess();
- const float clampMin = (float)(-MAX_INTEGER_VALUE);
- const float clampMax = (float)(MAX_INTEGER_VALUE);
- const Vec4 valueMax (de::clamp(textureInfo.valueMax[0], clampMin, clampMax),
- de::clamp(textureInfo.valueMax[1], clampMin, clampMax),
- de::clamp(textureInfo.valueMax[2], clampMin, clampMax),
- de::clamp(textureInfo.valueMax[3], clampMin, clampMax));
-
- const Vec4 valueMin (de::clamp(textureInfo.valueMin[0], clampMin, clampMax),
- de::clamp(textureInfo.valueMin[1], clampMin, clampMax),
- de::clamp(textureInfo.valueMin[2], clampMin, clampMax),
- de::clamp(textureInfo.valueMin[3], clampMin, clampMax));
+ DE_ASSERT(posAI.x() < posBI.x());
+ DE_ASSERT(posAI.y() < posBI.y());
- DE_ASSERT(posAI.x() < posBI.x());
- DE_ASSERT(posAI.y() < posBI.y());
+ if (subpass.getInputAttachments().empty())
+ {
+ for (size_t attachmentRefNdx = 0; attachmentRefNdx < subpass.getColorAttachments().size(); attachmentRefNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getColorAttachments()[attachmentRefNdx].getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const tcu::BVec4 channelMask = tcu::getTextureFormatChannelMask(format);
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+
+ for (int y = posAI.y(); y < (int)posBI.y(); y++)
+ for (int x = posAI.x(); x < (int)posBI.x(); x++)
+ {
+ for (int compNdx = 0; compNdx < 4; compNdx++)
+ {
+ const size_t index = subpassNdx + attachmentIndex + compNdx;
+ const BoolOp op = boolOpFromIndex(index);
+ const bool boolX = x % 2 == (int)(index % 2);
+ const bool boolY = y % 2 == (int)((index / 2) % 2);
+
+ if (channelMask[compNdx])
+ reference[x + y * targetSize.x()].setValue(compNdx, performBoolOp(op, boolX, boolY));
+ }
+ }
+ }
- for (int y = posAI.y(); y <= (int)posBI.y(); y++)
- for (int x = posAI.x(); x <= (int)posBI.x(); x++)
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
{
- const Vec4 uvs = computeUvs(posAI, posBI, IVec2(x, y));
- const Vec4 color = valueMax * uvs + valueMin * (Vec4(1.0f) - uvs);
+ const deUint32 attachmentIndex = subpass.getDepthStencilAttachment().getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
- if (srgb)
- reference.setPixel(tcu::linearToSRGB(color), x, y);
- else
- reference.setPixel(color, x, y);
+ for (int y = posAI.y(); y < (int)posBI.y(); y++)
+ for (int x = posAI.x(); x < (int)posBI.x(); x++)
+ {
+ if (tcu::hasDepthComponent(format.order))
+ {
+ const size_t index = subpassNdx + 1;
+ const BoolOp op = boolOpFromIndex(index);
+ const bool boolX = x % 2 == (int)(index % 2);
+ const bool boolY = y % 2 == (int)((index / 2) % 2);
+
+ reference[x + y * targetSize.x()].setValue(0, performBoolOp(op, boolX, boolY));
+ }
+
+ if (tcu::hasStencilComponent(format.order))
+ {
+ const size_t index = subpassNdx;
+ reference[x + y * targetSize.x()].setValue(1, (index % 2) == 0);
+ }
+ }
}
}
-
- if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
+ else
{
- tcu::TextureLevel& referenceTexture = referenceAttachments[subpass.getDepthStencilAttachment().getAttachment()];
- const PixelBufferAccess reference = referenceTexture.getAccess();
+ size_t outputComponentCount = 0;
+ vector<Maybe<bool> > inputs;
DE_ASSERT(posAI.x() < posBI.x());
DE_ASSERT(posAI.y() < posBI.y());
- for (int y = posAI.y(); y <= (int)posBI.y(); y++)
- for (int x = posAI.x(); x <= (int)posBI.x(); x++)
+ for (size_t attachmentRefNdx = 0; attachmentRefNdx < subpass.getColorAttachments().size(); attachmentRefNdx++)
{
- const Vec4 uvs = computeUvs(posAI, posBI, IVec2(x, y));
-
- if (tcu::hasDepthComponent(reference.getFormat().order))
- reference.setPixDepth(uvs.x(), x, y);
+ const deUint32 attachmentIndex = subpass.getColorAttachments()[attachmentRefNdx].getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const int componentCount = tcu::getNumUsedChannels(format.order);
- if (tcu::hasStencilComponent(reference.getFormat().order))
- reference.setPixStencil(STENCIL_VALUE, x, y);
+ outputComponentCount += (size_t)componentCount;
}
- }
- }
- }
- // Mark all attachments that were used but not stored as undefined
- for (size_t attachmentNdx = 0; attachmentNdx < renderPassInfo.getAttachments().size(); attachmentNdx++)
- {
- const Attachment attachment = renderPassInfo.getAttachments()[attachmentNdx];
- const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
- const tcu::TextureFormatInfo textureInfo = tcu::getTextureFormatInfo(format);
- tcu::TextureLevel& reference = referenceAttachments[attachmentNdx];
-
- if (attachmentUsed[attachmentNdx] && renderPassInfo.getAttachments()[attachmentNdx].getStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)
- tcu::fillWithGrid(tcu::getSubregion(reference.getAccess(), renderPos.x(), renderPos.y(), renderSize.x(), renderSize.y()), 2, textureInfo.valueMin, textureInfo.valueMax);
- }
-}
-
-Maybe<deUint32> findColorAttachment (const Subpass& subpass,
- deUint32 attachmentIndex)
-{
- for (size_t colorAttachmentNdx = 0; colorAttachmentNdx < subpass.getColorAttachments().size(); colorAttachmentNdx++)
- {
- if (subpass.getColorAttachments()[colorAttachmentNdx].getAttachment() == attachmentIndex)
- return tcu::just((deUint32)colorAttachmentNdx);
- }
-
- return tcu::nothing<deUint32>();
-}
-
-int calcFloatDiff (float a, float b)
-{
- const deUint32 au = tcu::Float32(a).bits();
- const deUint32 bu = tcu::Float32(b).bits();
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
+ outputComponentCount++;
- const bool asign = (au & (0x1u << 31u)) != 0u;
- const bool bsign = (bu & (0x1u << 31u)) != 0u;
+ for (int y = posAI.y(); y < (int)posBI.y(); y++)
+ for (int x = posAI.x(); x < (int)posBI.x(); x++)
+ {
+ for (size_t inputAttachmentNdx = 0; inputAttachmentNdx < subpass.getInputAttachments().size(); inputAttachmentNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getInputAttachments()[inputAttachmentNdx].getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const int componentCount = tcu::getNumUsedChannels(format.order);
- const deUint32 avalue = (au & ((0x1u << 31u) - 1u));
- const deUint32 bvalue = (bu & ((0x1u << 31u) - 1u));
+ for (int compNdx = 0; compNdx < componentCount; compNdx++)
+ inputs.push_back(referenceAttachments[attachmentIndex][x + y * targetSize.x()].getValue(compNdx));
+ }
- if (asign != bsign)
- return avalue + bvalue + 1u;
- else if (avalue < bvalue)
- return bvalue - avalue;
- else
- return avalue - bvalue;
-}
+ const size_t inputsPerOutput = inputs.size() >= outputComponentCount
+ ? ((inputs.size() / outputComponentCount)
+ + ((inputs.size() % outputComponentCount) != 0 ? 1 : 0))
+ : 1;
-bool comparePixelToDepthClearValue (const ConstPixelBufferAccess& access,
- int x,
- int y,
- float ref)
-{
- const tcu::TextureFormat format = tcu::getEffectiveDepthStencilTextureFormat(access.getFormat(), tcu::Sampler::MODE_DEPTH);
- const tcu::TextureChannelClass channelClass = tcu::getTextureChannelClass(format.type);
+ size_t outputValueNdx = 0;
- switch (channelClass)
- {
- case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT:
- case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT:
- {
- const int bitDepth = tcu::getTextureFormatBitDepth(format).x();
- const float depth = access.getPixDepth(x, y);
- const float threshold = 2.0f / (float)((1 << bitDepth) - 1);
+ for (size_t attachmentRefNdx = 0; attachmentRefNdx < subpass.getColorAttachments().size(); attachmentRefNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getColorAttachments()[attachmentRefNdx].getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+ const int componentCount = tcu::getNumUsedChannels(format.order);
+
+ for (int compNdx = 0; compNdx < componentCount; compNdx++)
+ {
+ const size_t index = subpassNdx + attachmentIndex + outputValueNdx;
+ const BoolOp op = boolOpFromIndex(index);
+ const bool boolX = x % 2 == (int)(index % 2);
+ const bool boolY = y % 2 == (int)((index / 2) % 2);
+ Maybe<bool> output = tcu::just(performBoolOp(op, boolX, boolY));
+
+ for (size_t i = 0; i < inputsPerOutput; i++)
+ {
+ if (!output)
+ break;
+ else if (!inputs[((outputValueNdx + compNdx) * inputsPerOutput + i) % inputs.size()])
+ output = tcu::nothing<bool>();
+ else
+ output = (*output) == (*inputs[((outputValueNdx + compNdx) * inputsPerOutput + i) % inputs.size()]);
+ }
+
+ if (output)
+ reference[x + y * targetSize.x()].setValue(compNdx, *output);
+ else
+ reference[x + y * targetSize.x()].setUndefined(compNdx);
+ }
+
+ outputValueNdx += componentCount;
+ }
- return deFloatAbs(depth - ref) <= threshold;
- }
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
+ {
+ const deUint32 attachmentIndex = subpass.getDepthStencilAttachment().getAttachment();
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+ const size_t index = subpassNdx + attachmentIndex;
+ const BoolOp op = boolOpFromIndex(index);
+ const bool boolX = x % 2 == (int)(index % 2);
+ const bool boolY = y % 2 == (int)((index / 2) % 2);
+ Maybe<bool> output = tcu::just(performBoolOp(op, boolX, boolY));
+
+ for (size_t i = 0; i < inputsPerOutput; i++)
+ {
+ if (!output)
+ break;
+ else if (inputs[(outputValueNdx * inputsPerOutput + i) % inputs.size()])
+ output = (*output) == (*inputs[(outputValueNdx * inputsPerOutput + i) % inputs.size()]);
+ else
+ output = tcu::nothing<bool>();
+ }
+
+ if (output)
+ reference[x + y * targetSize.x()].setValue(0, *output);
+ else
+ reference[x + y * targetSize.x()].setUndefined(0);
+ }
- case tcu::TEXTURECHANNELCLASS_FLOATING_POINT:
- {
- const float depth = access.getPixDepth(x, y);
- const int mantissaBits = tcu::getTextureFormatMantissaBitDepth(format).x();
- const int threshold = 10 * 1 << (23 - mantissaBits);
+ inputs.clear();
+ }
- DE_ASSERT(mantissaBits <= 23);
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
+ {
+ const deUint32 attachmentIndex = subpass.getDepthStencilAttachment().getAttachment();
+ const Attachment& attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
- return calcFloatDiff(depth, ref) <= threshold;
+ if (tcu::hasStencilComponent(format.order))
+ {
+ for (int y = posAI.y(); y < (int)posBI.y(); y++)
+ for (int x = posAI.x(); x < (int)posBI.x(); x++)
+ {
+ const size_t index = subpassNdx;
+ reference[x + y * targetSize.x()].setValue(1, (index % 2) == 0);
+ }
+ }
+ }
+ }
}
-
- default:
- DE_FATAL("Invalid channel class");
- return false;
}
-}
-
-bool comparePixelToStencilClearValue (const ConstPixelBufferAccess& access,
- int x,
- int y,
- deUint32 ref)
-{
- const deUint32 stencil = access.getPixStencil(x, y);
-
- return stencil == ref;
-}
-bool comparePixelToColorClearValue (const ConstPixelBufferAccess& access,
- int x,
- int y,
- const VkClearColorValue& ref)
-{
- const tcu::TextureFormat format = access.getFormat();
- const tcu::TextureChannelClass channelClass = tcu::getTextureChannelClass(format.type);
- const BVec4 channelMask = tcu::getTextureFormatChannelMask(format);
-
- switch (channelClass)
+ // Mark all attachments that were used but not stored as undefined
+ for (size_t attachmentIndex = 0; attachmentIndex < renderPassInfo.getAttachments().size(); attachmentIndex++)
{
- case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT:
- case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT:
- {
- const IVec4 bitDepth (tcu::getTextureFormatBitDepth(format));
- const Vec4 resColor (access.getPixel(x, y));
- const Vec4 refColor (ref.float32[0],
- ref.float32[1],
- ref.float32[2],
- ref.float32[3]);
- const Vec4 threshold (bitDepth[0] > 0 ? 20.0f / (float)((1 << bitDepth[0]) - 1) : 1.0f,
- bitDepth[1] > 0 ? 20.0f / (float)((1 << bitDepth[1]) - 1) : 1.0f,
- bitDepth[2] > 0 ? 20.0f / (float)((1 << bitDepth[2]) - 1) : 1.0f,
- bitDepth[3] > 0 ? 20.0f / (float)((1 << bitDepth[3]) - 1) : 1.0f);
-
- if (tcu::isSRGB(access.getFormat()))
- return !(tcu::anyNotEqual(tcu::logicalAnd(lessThanEqual(tcu::absDiff(resColor, tcu::linearToSRGB(refColor)), threshold), channelMask), channelMask));
- else
- return !(tcu::anyNotEqual(tcu::logicalAnd(lessThanEqual(tcu::absDiff(resColor, refColor), threshold), channelMask), channelMask));
- }
-
- case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER:
- {
- const UVec4 resColor (access.getPixelUint(x, y));
- const UVec4 refColor (ref.uint32[0],
- ref.uint32[1],
- ref.uint32[2],
- ref.uint32[3]);
- const UVec4 threshold (1);
-
- return !(tcu::anyNotEqual(tcu::logicalAnd(lessThanEqual(tcu::absDiff(resColor, refColor), threshold), channelMask), channelMask));
- }
+ const Attachment attachment = renderPassInfo.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ vector<PixelValue>& reference = referenceAttachments[attachmentIndex];
+ const bool isStencilAttachment = hasStencilComponent(format.order);
+ const bool isDepthOrStencilAttachment = hasDepthComponent(format.order) || isStencilAttachment;
- case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER:
+ if (attachmentUsed[attachmentIndex] && renderPassInfo.getAttachments()[attachmentIndex].getStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)
{
- const IVec4 resColor (access.getPixelInt(x, y));
- const IVec4 refColor (ref.int32[0],
- ref.int32[1],
- ref.int32[2],
- ref.int32[3]);
- const IVec4 threshold (1);
-
- return !(tcu::anyNotEqual(tcu::logicalAnd(lessThanEqual(tcu::absDiff(resColor, refColor), threshold), channelMask), channelMask));
- }
-
- case tcu::TEXTURECHANNELCLASS_FLOATING_POINT:
- {
- const Vec4 resColor (access.getPixel(x, y));
- const Vec4 refColor (ref.float32[0],
- ref.float32[1],
- ref.float32[2],
- ref.float32[3]);
- const IVec4 mantissaBits (tcu::getTextureFormatMantissaBitDepth(format));
- const IVec4 threshold (10 * IVec4(1) << (23 - mantissaBits));
-
- DE_ASSERT(tcu::allEqual(greaterThanEqual(threshold, IVec4(0)), BVec4(true)));
-
- for (int ndx = 0; ndx < 4; ndx++)
- {
- if (calcFloatDiff(resColor[ndx], refColor[ndx]) > threshold[ndx] && channelMask[ndx])
- return false;
- }
-
- return true;
+ if (isDepthOrStencilAttachment)
+ markUndefined(reference, BVec4(true, false, false, false), targetSize, renderPos, renderSize);
+ else
+ markUndefined(reference, BVec4(true), targetSize, renderPos, renderSize);
}
- default:
- DE_FATAL("Invalid channel class");
- return false;
+ if (attachmentUsed[attachmentIndex] && isStencilAttachment && renderPassInfo.getAttachments()[attachmentIndex].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)
+ markUndefined(reference, BVec4(false, true, false, false), targetSize, renderPos, renderSize);
}
}
-class PixelStatus
-{
-public:
- enum Status
- {
- STATUS_UNDEFINED = 0,
- STATUS_OK = 1,
- STATUS_FAIL = 2,
-
- STATUS_LAST
- };
-
- PixelStatus (Status color, Status depth, Status stencil)
- : m_status ((deUint8)((color << COLOR_OFFSET)
- | (depth << DEPTH_OFFSET)
- | (stencil << STENCIL_OFFSET)))
- {
- }
-
- Status getColorStatus (void) const { return (Status)((m_status & COLOR_MASK) >> COLOR_OFFSET); }
- Status getDepthStatus (void) const { return (Status)((m_status & DEPTH_MASK) >> DEPTH_OFFSET); }
- Status getStencilStatus (void) const { return (Status)((m_status & STENCIL_MASK) >> STENCIL_OFFSET); }
-
- void setColorStatus (Status status)
- {
- DE_ASSERT(getColorStatus() == STATUS_UNDEFINED);
- m_status |= (deUint8)(status << COLOR_OFFSET);
- }
-
- void setDepthStatus (Status status)
- {
- DE_ASSERT(getDepthStatus() == STATUS_UNDEFINED);
- m_status |= (deUint8)(status << DEPTH_OFFSET);
- }
-
- void setStencilStatus (Status status)
- {
- DE_ASSERT(getStencilStatus() == STATUS_UNDEFINED);
- m_status |= (deUint8)(status << STENCIL_OFFSET);
- }
-
-private:
- enum
- {
- COLOR_OFFSET = 0,
- DEPTH_OFFSET = 2,
- STENCIL_OFFSET = 4,
-
- COLOR_MASK = (3<<COLOR_OFFSET),
- DEPTH_MASK = (3<<DEPTH_OFFSET),
- STENCIL_MASK = (3<<STENCIL_OFFSET),
- };
- deUint8 m_status;
-};
-
-void checkDepthRenderQuad (const ConstPixelBufferAccess& result,
- const IVec2& posA,
- const IVec2& posB,
- vector<PixelStatus>& status)
+void renderReferenceImagesFromValues (vector<tcu::TextureLevel>& referenceImages,
+ const vector<vector<PixelValue> >& referenceValues,
+ const UVec2& targetSize,
+ const RenderPass& renderPassInfo)
{
- for (int y = posA.y(); y <= posB.y(); y++)
- for (int x = posA.x(); x <= posB.x(); x++)
- {
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
+ referenceImages.resize(referenceValues.size());
- if (pixelStatus.getDepthStatus() == PixelStatus::STATUS_UNDEFINED)
- {
- const Vec4 minUvs = computeUvs(posA, posB, IVec2(x-1, y-1));
- const Vec4 maxUvs = computeUvs(posA, posB, IVec2(x+1, y+1));
- const bool softCheck = std::abs(x - posA.x()) <= 1 || std::abs(x - posB.x()) <= 1
- || std::abs(y - posA.y()) <= 1 || std::abs(y - posB.y()) <= 1;
- const float resDepth = result.getPixDepth(x, y);
-
- if (resDepth >= minUvs.x() && resDepth <= maxUvs.x())
- pixelStatus.setDepthStatus(PixelStatus::STATUS_OK);
- else if (!softCheck)
- pixelStatus.setDepthStatus(PixelStatus::STATUS_FAIL);
- }
- }
-}
-
-void checkStencilRenderQuad (const ConstPixelBufferAccess& result,
- const IVec2& posA,
- const IVec2& posB,
- vector<PixelStatus>& status)
-{
- for (int y = posA.y(); y <= posB.y(); y++)
- for (int x = posA.x(); x <= posB.x(); x++)
+ for (size_t attachmentNdx = 0; attachmentNdx < renderPassInfo.getAttachments().size(); attachmentNdx++)
{
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
-
- if (pixelStatus.getStencilStatus() == PixelStatus::STATUS_UNDEFINED)
- {
- const bool softCheck = std::abs(x - posA.x()) <= 1 || std::abs(x - posB.x()) <= 1
- || std::abs(y - posA.y()) <= 1 || std::abs(y - posB.y()) <= 1;
-
- if (result.getPixStencil(x, y) == STENCIL_VALUE)
- pixelStatus.setStencilStatus(PixelStatus::STATUS_OK);
- else if (!softCheck)
- pixelStatus.setStencilStatus(PixelStatus::STATUS_FAIL);
- }
- }
-}
+ const Attachment attachment = renderPassInfo.getAttachments()[attachmentNdx];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const vector<PixelValue>& reference = referenceValues[attachmentNdx];
+ const bool hasDepth = tcu::hasDepthComponent(format.order);
+ const bool hasStencil = tcu::hasStencilComponent(format.order);
+ const bool hasDepthOrStencil = hasDepth || hasStencil;
+ tcu::TextureLevel& referenceImage = referenceImages[attachmentNdx];
-void checkColorRenderQuad (const ConstPixelBufferAccess& result,
- const IVec2& posA,
- const IVec2& posB,
- vector<PixelStatus>& status)
-{
- const tcu::TextureFormat& format = result.getFormat();
- const bool srgb = tcu::isSRGB(format);
- const tcu::TextureChannelClass channelClass = tcu::getTextureChannelClass(format.type);
- const tcu::TextureFormatInfo textureInfo = tcu::getTextureFormatInfo(format);
- const float clampMin = (float)(-MAX_INTEGER_VALUE);
- const float clampMax = (float)(MAX_INTEGER_VALUE);
- const Vec4 valueMax (de::clamp(textureInfo.valueMax[0], clampMin, clampMax),
- de::clamp(textureInfo.valueMax[1], clampMin, clampMax),
- de::clamp(textureInfo.valueMax[2], clampMin, clampMax),
- de::clamp(textureInfo.valueMax[3], clampMin, clampMax));
-
- const Vec4 valueMin (de::clamp(textureInfo.valueMin[0], clampMin, clampMax),
- de::clamp(textureInfo.valueMin[1], clampMin, clampMax),
- de::clamp(textureInfo.valueMin[2], clampMin, clampMax),
- de::clamp(textureInfo.valueMin[3], clampMin, clampMax));
- const BVec4 channelMask = tcu::getTextureFormatChannelMask(format);
-
- IVec4 formatBitDepths = tcu::getTextureFormatBitDepth(format);
- Vec4 threshold = Vec4(1.0f) / Vec4((float)(1 << formatBitDepths.x()),
- (float)(1 << formatBitDepths.y()),
- (float)(1 << formatBitDepths.z()),
- (float)(1 << formatBitDepths.w()));
+ referenceImage.setStorage(format, targetSize.x(), targetSize.y());
- switch (channelClass)
- {
- case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT:
- case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT:
- case tcu::TEXTURECHANNELCLASS_FLOATING_POINT:
+ if (hasDepthOrStencil)
{
- for (int y = posA.y(); y <= posB.y(); y++)
- for (int x = posA.x(); x <= posB.x(); x++)
+ if (hasDepth)
{
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
+ const PixelBufferAccess depthAccess (tcu::getEffectiveDepthStencilAccess(referenceImage.getAccess(), tcu::Sampler::MODE_DEPTH));
- if (pixelStatus.getColorStatus() == PixelStatus::STATUS_UNDEFINED)
+ for (deUint32 y = 0; y < targetSize.y(); y++)
+ for (deUint32 x = 0; x < targetSize.x(); x++)
{
- const Vec4 minDiff = Vec4(1.0f) / (IVec4(1) << tcu::getTextureFormatMantissaBitDepth(format)).cast<float>();
- const Vec4 minUvs = computeUvs(posA, posB, IVec2(x-1, y-1));
- const Vec4 maxUvs = computeUvs(posA, posB, IVec2(x+1, y+1));
- const bool softCheck = std::abs(x - posA.x()) <= 1 || std::abs(x - posB.x()) <= 1
- || std::abs(y - posA.y()) <= 1 || std::abs(y - posB.y()) <= 1;
-
- const Vec4 resColor (result.getPixel(x, y));
-
- Vec4 minRefColor = srgb ? tcu::linearToSRGB(valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs))
- : valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs) - threshold;
- Vec4 maxRefColor = srgb ? tcu::linearToSRGB(valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs))
- : valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs) + threshold;
-
- // Take into account rounding and quantization
- if (channelClass == tcu::TEXTURECHANNELCLASS_FLOATING_POINT)
- {
- minRefColor = tcu::min(minRefColor * (Vec4(1.0f) - minDiff), minRefColor * (Vec4(1.0f) + minDiff));
- maxRefColor = tcu::max(maxRefColor * (Vec4(1.0f) - minDiff), maxRefColor * (Vec4(1.0f) + minDiff));
- }
- else
- {
- minRefColor = minRefColor - minDiff;
- maxRefColor = maxRefColor + minDiff;
- }
-
- DE_ASSERT(minRefColor[0] <= maxRefColor[0]);
- DE_ASSERT(minRefColor[1] <= maxRefColor[1]);
- DE_ASSERT(minRefColor[2] <= maxRefColor[2]);
- DE_ASSERT(minRefColor[3] <= maxRefColor[3]);
-
- if (tcu::anyNotEqual(tcu::logicalAnd(
- tcu::logicalAnd(greaterThanEqual(resColor, minRefColor),
- lessThanEqual(resColor, maxRefColor)),
- channelMask), channelMask))
+ if (reference[x + y * targetSize.x()].getValue(0))
{
- if (!softCheck)
- pixelStatus.setColorStatus(PixelStatus::STATUS_FAIL);
+ if (*reference[x + y * targetSize.x()].getValue(0))
+ depthAccess.setPixDepth(1.0f, x, y);
+ else
+ depthAccess.setPixDepth(0.0f, x, y);
}
- else
- pixelStatus.setColorStatus(PixelStatus::STATUS_OK);
+ else // Fill with 3x3 grid
+ depthAccess.setPixDepth(((x / 3) % 2) == ((y / 3) % 2) ? 0.33f : 0.66f, x, y);
}
}
- break;
- }
-
- case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER:
- {
- for (int y = posA.y(); y <= posB.y(); y++)
- for (int x = posA.x(); x <= posB.x(); x++)
+ if (hasStencil)
{
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
+ const PixelBufferAccess stencilAccess (tcu::getEffectiveDepthStencilAccess(referenceImage.getAccess(), tcu::Sampler::MODE_STENCIL));
- if (pixelStatus.getColorStatus() == PixelStatus::STATUS_UNDEFINED)
+ for (deUint32 y = 0; y < targetSize.y(); y++)
+ for (deUint32 x = 0; x < targetSize.x(); x++)
{
- const Vec4 minUvs = computeUvs(posA, posB, IVec2(x-1, y-1));
- const Vec4 maxUvs = computeUvs(posA, posB, IVec2(x+1, y+1));
- const bool softCheck = std::abs(x - posA.x()) <= 1 || std::abs(x - posB.x()) <= 1
- || std::abs(y - posA.y()) <= 1 || std::abs(y - posB.y()) <= 1;
-
- const UVec4 resColor (result.getPixelUint(x, y));
-
- const Vec4 minRefColorF = valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs);
- const Vec4 maxRefColorF = valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs);
-
- const UVec4 minRefColor (minRefColorF.asUint());
- const UVec4 maxRefColor (maxRefColorF.asUint());
-
- DE_ASSERT(minRefColor[0] <= maxRefColor[0]);
- DE_ASSERT(minRefColor[1] <= maxRefColor[1]);
- DE_ASSERT(minRefColor[2] <= maxRefColor[2]);
- DE_ASSERT(minRefColor[3] <= maxRefColor[3]);
-
- if (tcu::anyNotEqual(tcu::logicalAnd(
- tcu::logicalAnd(greaterThanEqual(resColor, minRefColor),
- lessThanEqual(resColor, maxRefColor)),
- channelMask), channelMask))
+ if (reference[x + y * targetSize.x()].getValue(1))
{
- if (!softCheck)
- pixelStatus.setColorStatus(PixelStatus::STATUS_FAIL);
+ if (*reference[x + y * targetSize.x()].getValue(1))
+ stencilAccess.setPixStencil(0xFFu, x, y);
+ else
+ stencilAccess.setPixStencil(0x0u, x, y);
}
- else
- pixelStatus.setColorStatus(PixelStatus::STATUS_OK);
+ else // Fill with 3x3 grid
+ stencilAccess.setPixStencil(((x / 3) % 2) == ((y / 3) % 2) ? 85 : 170, x, y);
}
}
-
- break;
}
-
- case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER:
+ else
{
- for (int y = posA.y(); y <= posB.y(); y++)
- for (int x = posA.x(); x <= posB.x(); x++)
+ for (deUint32 y = 0; y < targetSize.y(); y++)
+ for (deUint32 x = 0; x < targetSize.x(); x++)
{
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
+ tcu::Vec4 color;
- if (pixelStatus.getColorStatus() == PixelStatus::STATUS_UNDEFINED)
+ for (int compNdx = 0; compNdx < 4; compNdx++)
{
- const Vec4 minUvs = computeUvs(posA, posB, IVec2(x-1, y-1));
- const Vec4 maxUvs = computeUvs(posA, posB, IVec2(x+1, y+1));
- const bool softCheck = std::abs(x - posA.x()) <= 1 || std::abs(x - posB.x()) <= 1
- || std::abs(y - posA.y()) <= 1 || std::abs(y - posB.y()) <= 1;
-
- const IVec4 resColor (result.getPixelInt(x, y));
-
- const Vec4 minRefColorF = valueMax * minUvs + valueMin * (Vec4(1.0f) - minUvs);
- const Vec4 maxRefColorF = valueMax * maxUvs + valueMin * (Vec4(1.0f) - maxUvs);
-
- const IVec4 minRefColor (minRefColorF.asInt());
- const IVec4 maxRefColor (maxRefColorF.asInt());
-
- DE_ASSERT(minRefColor[0] <= maxRefColor[0]);
- DE_ASSERT(minRefColor[1] <= maxRefColor[1]);
- DE_ASSERT(minRefColor[2] <= maxRefColor[2]);
- DE_ASSERT(minRefColor[3] <= maxRefColor[3]);
-
- if (tcu::anyNotEqual(tcu::logicalAnd(
- tcu::logicalAnd(greaterThanEqual(resColor, minRefColor),
- lessThanEqual(resColor, maxRefColor)),
- channelMask), channelMask))
+ if (reference[x + y * targetSize.x()].getValue(compNdx))
{
- if (!softCheck)
- pixelStatus.setColorStatus(PixelStatus::STATUS_FAIL);
+ if (*reference[x + y * targetSize.x()].getValue(compNdx))
+ color[compNdx] = 1.0f;
+ else
+ color[compNdx] = 0.0f;
}
- else
- pixelStatus.setColorStatus(PixelStatus::STATUS_OK);
+ else // Fill with 3x3 grid
+ color[compNdx] = ((compNdx + (x / 3)) % 2) == ((y / 3) % 2) ? 0.33f : 0.66f;
}
- }
- break;
+ referenceImage.getAccess().setPixel(color, x, y);
+ }
}
-
- default:
- DE_FATAL("Invalid channel class");
}
}
-void checkColorClear (const ConstPixelBufferAccess& result,
- const UVec2& offset,
- const UVec2& size,
- vector<PixelStatus>& status,
- const VkClearColorValue& color)
+bool verifyColorAttachment (const vector<PixelValue>& reference,
+ const ConstPixelBufferAccess& result,
+ const PixelBufferAccess& errorImage)
{
- DE_ASSERT(offset.x() + size.x() <= (deUint32)result.getWidth());
- DE_ASSERT(offset.y() + size.y() <= (deUint32)result.getHeight());
+ const Vec4 red (1.0f, 0.0f, 0.0f, 1.0f);
+ const Vec4 green (0.0f, 1.0f, 0.0f, 1.0f);
+ bool ok = true;
- DE_ASSERT(result.getWidth() * result.getHeight() == (int)status.size());
+ DE_ASSERT(result.getWidth() * result.getHeight() == (int)reference.size());
+ DE_ASSERT(result.getWidth() == errorImage.getWidth());
+ DE_ASSERT(result.getHeight() == errorImage.getHeight());
- for (int y = offset.y(); y < (int)(offset.y() + size.y()); y++)
- for (int x = offset.x(); x < (int)(offset.x() + size.x()); x++)
+ for (int y = 0; y < result.getHeight(); y++)
+ for (int x = 0; x < result.getWidth(); x++)
{
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
-
- DE_ASSERT(x + y * result.getWidth() < (int)status.size());
+ const Vec4 resultColor = result.getPixel(x, y);
+ const PixelValue& referenceValue = reference[x + y * result.getWidth()];
+ bool pixelOk = true;
- if (pixelStatus.getColorStatus() == PixelStatus::STATUS_UNDEFINED)
+ for (int compNdx = 0; compNdx < 4; compNdx++)
{
- if (comparePixelToColorClearValue(result, x, y, color))
- pixelStatus.setColorStatus(PixelStatus::STATUS_OK);
- else
- pixelStatus.setColorStatus(PixelStatus::STATUS_FAIL);
- }
- }
-}
+ const Maybe<bool> maybeValue = referenceValue.getValue(compNdx);
-void checkDepthClear (const ConstPixelBufferAccess& result,
- const UVec2& offset,
- const UVec2& size,
- vector<PixelStatus>& status,
- float depth)
-{
- for (int y = offset.y(); y < (int)(offset.y() + size.y()); y++)
- for (int x = offset.x(); x < (int)(offset.x() + size.x()); x++)
- {
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
+ if (maybeValue)
+ {
+ const bool value = *maybeValue;
- if (pixelStatus.getDepthStatus() == PixelStatus::STATUS_UNDEFINED)
- {
- if (comparePixelToDepthClearValue(result, x, y, depth))
- pixelStatus.setDepthStatus(PixelStatus::STATUS_OK);
- else
- pixelStatus.setDepthStatus(PixelStatus::STATUS_FAIL);
+ if ((value && (resultColor[compNdx] != 1.0f))
+ || (!value && resultColor[compNdx] != 0.0f))
+ pixelOk = false;
+ }
}
- }
-}
-
-void checkStencilClear (const ConstPixelBufferAccess& result,
- const UVec2& offset,
- const UVec2& size,
- vector<PixelStatus>& status,
- deUint32 stencil)
-{
- for (int y = offset.y(); y < (int)(offset.y() + size.y()); y++)
- for (int x = offset.x(); x < (int)(offset.x() + size.x()); x++)
- {
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
- if (pixelStatus.getStencilStatus() == PixelStatus::STATUS_UNDEFINED)
+ if (!pixelOk)
{
- if (comparePixelToStencilClearValue(result, x, y, stencil))
- pixelStatus.setStencilStatus(PixelStatus::STATUS_OK);
- else
- pixelStatus.setStencilStatus(PixelStatus::STATUS_FAIL);
+ errorImage.setPixel(red, x, y);
+ ok = false;
}
+ else
+ errorImage.setPixel(green, x, y);
}
+
+ return ok;
}
-bool verifyAttachment (const ConstPixelBufferAccess& result,
- const Maybe<ConstPixelBufferAccess>& secondaryResult,
- const RenderPass& renderPassInfo,
- const Maybe<VkClearValue>& renderPassClearValue,
- const Maybe<VkClearValue>& imageClearValue,
- const vector<Subpass>& subpasses,
- const vector<SubpassRenderInfo>& subpassRenderInfo,
- const PixelBufferAccess& errorImage,
- deUint32 attachmentIndex,
- const UVec2& renderPos,
- const UVec2& renderSize)
+bool verifyDepthAttachment (const vector<PixelValue>& reference,
+ const ConstPixelBufferAccess& result,
+ const PixelBufferAccess& errorImage)
{
- const tcu::TextureFormat& format = result.getFormat();
- const bool hasDepth = tcu::hasDepthComponent(format.order);
- const bool hasStencil = tcu::hasStencilComponent(format.order);
- const bool isColorFormat = !hasDepth && !hasStencil;
- const PixelStatus initialStatus (isColorFormat ? PixelStatus::STATUS_UNDEFINED : PixelStatus::STATUS_OK,
- hasDepth ? PixelStatus::STATUS_UNDEFINED : PixelStatus::STATUS_OK,
- hasStencil ? PixelStatus::STATUS_UNDEFINED : PixelStatus::STATUS_OK);
-
- bool attachmentIsUsed = false;
- vector<PixelStatus> status (result.getWidth() * result.getHeight(), initialStatus);
- tcu::clear(errorImage, Vec4(0.0f, 1.0f, 0.0f, 1.0f));
-
- // Check if attachment is used
- for (int subpassNdx = 0; subpassNdx < (int)subpasses.size(); subpassNdx++)
- {
- const Subpass& subpass = subpasses[subpassNdx];
- const Maybe<deUint32> attachmentNdx = findColorAttachment(subpass, attachmentIndex);
-
- if (attachmentNdx || subpass.getDepthStencilAttachment().getAttachment() == attachmentIndex)
- attachmentIsUsed = true;
- }
+ const Vec4 red (1.0f, 0.0f, 0.0f, 1.0f);
+ const Vec4 green (0.0f, 1.0f, 0.0f, 1.0f);
+ bool ok = true;
- // Set all pixels that have undefined values to OK
- if (attachmentIsUsed && (((isColorFormat || hasDepth) && renderPassInfo.getAttachments()[attachmentIndex].getStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)
- || (hasStencil && renderPassInfo.getAttachments()[attachmentIndex].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)))
- {
- for(int y = renderPos.y(); y < (int)(renderPos.y() + renderSize.y()); y++)
- for(int x = renderPos.x(); x < (int)(renderPos.x() + renderSize.x()); x++)
- {
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
-
- if (isColorFormat && renderPassInfo.getAttachments()[attachmentIndex].getStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)
- pixelStatus.setColorStatus(PixelStatus::STATUS_OK);
- else
- {
- if (hasDepth && renderPassInfo.getAttachments()[attachmentIndex].getStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)
- pixelStatus.setDepthStatus(PixelStatus::STATUS_OK);
-
- if (hasStencil && renderPassInfo.getAttachments()[attachmentIndex].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_DONT_CARE)
- pixelStatus.setStencilStatus(PixelStatus::STATUS_OK);
- }
- }
- }
+ DE_ASSERT(result.getWidth() * result.getHeight() == (int)reference.size());
+ DE_ASSERT(result.getWidth() == errorImage.getWidth());
+ DE_ASSERT(result.getHeight() == errorImage.getHeight());
- // Check renderpass rendering results
- if (renderPassInfo.getAttachments()[attachmentIndex].getStoreOp() == VK_ATTACHMENT_STORE_OP_STORE
- || (hasStencil && renderPassInfo.getAttachments()[attachmentIndex].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_STORE))
+ for (int y = 0; y < result.getHeight(); y++)
+ for (int x = 0; x < result.getWidth(); x++)
{
- // Check subpass rendering results
- for (int subpassNdx = (int)subpasses.size() - 1; subpassNdx >= 0; subpassNdx--)
- {
- const Subpass& subpass = subpasses[subpassNdx];
- const SubpassRenderInfo& renderInfo = subpassRenderInfo[subpassNdx];
- const Maybe<deUint32> attachmentNdx = findColorAttachment(subpass, attachmentIndex);
-
- // Check rendered quad
- if (renderInfo.getRenderQuad() && (attachmentNdx || subpass.getDepthStencilAttachment().getAttachment() == attachmentIndex))
- {
- const RenderQuad& renderQuad = *renderInfo.getRenderQuad();
- const Vec4 posA = renderQuad.getCornerA();
- const Vec4 posB = renderQuad.getCornerB();
- const Vec2 origin = Vec2((float)renderInfo.getViewportOffset().x(), (float)renderInfo.getViewportOffset().y()) + Vec2((float)renderInfo.getViewportSize().x(), (float)renderInfo.getViewportSize().y()) / Vec2(2.0f);
- const Vec2 p = Vec2((float)renderInfo.getViewportSize().x(), (float)renderInfo.getViewportSize().y()) / Vec2(2.0f);
- const IVec2 posAI ((deInt32)(origin.x() + (p.x() * posA.x())),
- (deInt32)(origin.y() + (p.y() * posA.y())));
- const IVec2 posBI ((deInt32)(origin.x() + (p.x() * posB.x())),
- (deInt32)(origin.y() + (p.y() * posB.y())));
-
- if (isColorFormat)
- checkColorRenderQuad(result, posAI, posBI, status);
- else
- {
- if (hasDepth)
- checkDepthRenderQuad(result, posAI, posBI, status);
-
- if (hasDepth && hasStencil)
- checkStencilRenderQuad(*secondaryResult, posAI, posBI, status);
- else if (hasStencil)
- checkStencilRenderQuad(result, posAI, posBI, status);
- }
- }
-
- // Check color attachment clears
- if (attachmentNdx && !renderInfo.getColorClears().empty())
- {
- const ColorClear& clear = renderInfo.getColorClears()[*attachmentNdx];
+ bool pixelOk = true;
- checkColorClear(result, clear.getOffset(), clear.getSize(), status, clear.getColor());
- }
+ const float resultDepth = result.getPixDepth(x, y);
+ const PixelValue& referenceValue = reference[x + y * result.getWidth()];
+ const Maybe<bool> maybeValue = referenceValue.getValue(0);
- // Check depth/stencil attachment clears
- if (subpass.getDepthStencilAttachment().getAttachment() == attachmentIndex && renderInfo.getDepthStencilClear())
- {
- const DepthStencilClear clear = *renderInfo.getDepthStencilClear();
-
- if (hasDepth)
- checkDepthClear(result, clear.getOffset(), clear.getSize(), status, clear.getDepth());
+ if (maybeValue)
+ {
+ const bool value = *maybeValue;
- if (hasDepth && hasStencil)
- checkStencilClear(*secondaryResult, clear.getOffset(), clear.getSize(), status, clear.getStencil());
- else if (hasStencil)
- checkStencilClear(result, clear.getOffset(), clear.getSize(), status, clear.getStencil());
- }
+ if ((value && (resultDepth != 1.0f))
+ || (!value && resultDepth != 0.0f))
+ pixelOk = false;
}
- // Check renderpas clear results
- if (attachmentIsUsed && renderPassClearValue)
+ if (!pixelOk)
{
- if (isColorFormat)
- {
- if (renderPassInfo.getAttachments()[attachmentIndex].getLoadOp() == VK_ATTACHMENT_LOAD_OP_CLEAR)
- checkColorClear(result, renderPos, renderSize, status, renderPassClearValue->color);
- }
- else
- {
- if (hasDepth && renderPassInfo.getAttachments()[attachmentIndex].getLoadOp() == VK_ATTACHMENT_LOAD_OP_CLEAR)
- checkDepthClear(result, renderPos, renderSize, status, renderPassClearValue->depthStencil.depth);
-
- if (hasDepth && hasStencil && renderPassInfo.getAttachments()[attachmentIndex].getStencilLoadOp() == VK_ATTACHMENT_LOAD_OP_CLEAR)
- checkStencilClear(*secondaryResult, renderPos, renderSize, status, renderPassClearValue->depthStencil.stencil);
- else if (hasStencil && renderPassInfo.getAttachments()[attachmentIndex].getStencilLoadOp() == VK_ATTACHMENT_LOAD_OP_CLEAR)
- checkStencilClear(result, renderPos, renderSize, status, renderPassClearValue->depthStencil.stencil);
- }
+ errorImage.setPixel(red, x, y);
+ ok = false;
}
+ else
+ errorImage.setPixel(green, x, y);
}
- // Set all pixels that have undefined values fater renderpass to OK
- if (attachmentIsUsed && (((isColorFormat || hasDepth) && renderPassInfo.getAttachments()[attachmentIndex].getLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)
- || (hasStencil && renderPassInfo.getAttachments()[attachmentIndex].getStencilLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)))
- {
- for(int y = renderPos.y(); y < (int)(renderPos.y() + renderSize.y()); y++)
- for(int x = renderPos.x(); x < (int)(renderPos.x() + renderSize.x()); x++)
- {
- PixelStatus& pixelStatus = status[x + y * result.getWidth()];
+ return ok;
+}
- if (pixelStatus.getColorStatus() == PixelStatus::STATUS_UNDEFINED
- && isColorFormat && renderPassInfo.getAttachments()[attachmentIndex].getLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)
- pixelStatus.setColorStatus(PixelStatus::STATUS_OK);
- else
- {
- if (pixelStatus.getDepthStatus() == PixelStatus::STATUS_UNDEFINED
- && hasDepth && renderPassInfo.getAttachments()[attachmentIndex].getLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)
- pixelStatus.setDepthStatus(PixelStatus::STATUS_OK);
+bool verifyStencilAttachment (const vector<PixelValue>& reference,
+ const ConstPixelBufferAccess& result,
+ const PixelBufferAccess& errorImage)
+{
+ const Vec4 red (1.0f, 0.0f, 0.0f, 1.0f);
+ const Vec4 green (0.0f, 1.0f, 0.0f, 1.0f);
+ bool ok = true;
- if (pixelStatus.getStencilStatus() == PixelStatus::STATUS_UNDEFINED
- && hasStencil && renderPassInfo.getAttachments()[attachmentIndex].getStencilLoadOp() == VK_ATTACHMENT_LOAD_OP_DONT_CARE)
- pixelStatus.setStencilStatus(PixelStatus::STATUS_OK);
- }
- }
- }
+ DE_ASSERT(result.getWidth() * result.getHeight() == (int)reference.size());
+ DE_ASSERT(result.getWidth() == errorImage.getWidth());
+ DE_ASSERT(result.getHeight() == errorImage.getHeight());
- if (imageClearValue)
+ for (int y = 0; y < result.getHeight(); y++)
+ for (int x = 0; x < result.getWidth(); x++)
{
- if (isColorFormat)
- checkColorClear(result, UVec2(0, 0), UVec2(result.getWidth(), result.getHeight()), status, imageClearValue->color);
- else
- {
- if (hasDepth)
- checkDepthClear(result, UVec2(0, 0), UVec2(result.getWidth(), result.getHeight()), status, imageClearValue->depthStencil.depth);
-
- if (hasDepth && hasStencil)
- checkStencilClear(*secondaryResult, UVec2(0, 0), UVec2(secondaryResult->getWidth(), result.getHeight()), status, imageClearValue->depthStencil.stencil);
- else if (hasStencil)
- checkStencilClear(result, UVec2(0, 0), UVec2(result.getWidth(), result.getHeight()), status, imageClearValue->depthStencil.stencil);
- }
- }
+ bool pixelOk = true;
- {
- bool isOk = true;
+ const deUint32 resultStencil = result.getPixStencil(x, y);
+ const PixelValue& referenceValue = reference[x + y * result.getWidth()];
+ const Maybe<bool> maybeValue = referenceValue.getValue(1);
- for(int y = 0; y < result.getHeight(); y++)
- for(int x = 0; x < result.getWidth(); x++)
+ if (maybeValue)
{
- const PixelStatus& pixelStatus = status[x + y * result.getWidth()];
-
- if (isColorFormat)
- {
- if (pixelStatus.getColorStatus() != PixelStatus::STATUS_OK)
- {
- if (pixelStatus.getColorStatus() == PixelStatus::STATUS_UNDEFINED)
- errorImage.setPixel(Vec4(1.0f, 1.0f, 0.0f, 1.0f), x, y);
- else if (pixelStatus.getColorStatus() == PixelStatus::STATUS_FAIL)
- errorImage.setPixel(Vec4(1.0f, 0.0f, 0.0f, 1.0f), x, y);
-
- isOk = false;
- }
- }
- else
- {
- if (hasDepth && pixelStatus.getDepthStatus() != PixelStatus::STATUS_OK)
- {
- errorImage.setPixel(Vec4(1.0f, 0.0f, 0.0f, 1.0f), x, y);
- isOk = false;
- }
+ const bool value = *maybeValue;
- if (hasStencil && pixelStatus.getStencilStatus() != PixelStatus::STATUS_OK)
- {
- errorImage.setPixel(Vec4(1.0f, 0.0f, 0.0f, 1.0f), x, y);
- isOk = false;
- }
- }
+ if ((value && (resultStencil != 0xFFu))
+ || (!value && resultStencil != 0x0u))
+ pixelOk = false;
}
- return isOk;
+ if (!pixelOk)
+ {
+ errorImage.setPixel(red, x, y);
+ ok = false;
+ }
+ else
+ errorImage.setPixel(green, x, y);
}
+
+ return ok;
}
bool logAndVerifyImages (TestLog& log,
const UVec2& targetSize,
const TestConfig& config)
{
+ vector<vector<PixelValue> > referenceValues;
vector<tcu::TextureLevel> referenceAttachments;
bool isOk = true;
- log << TestLog::Message << "Reference images fill undefined pixels with grid pattern." << TestLog::EndMessage;
+ log << TestLog::Message << "Reference images fill undefined pixels with 3x3 grid pattern." << TestLog::EndMessage;
- renderReferenceImages(referenceAttachments, renderPassInfo, targetSize, imageClearValues, renderPassClearValues, subpassRenderInfo, config.renderPos, config.renderSize);
+ renderReferenceValues(referenceValues, renderPassInfo, targetSize, imageClearValues, renderPassClearValues, subpassRenderInfo, config.renderPos, config.renderSize);
+ renderReferenceImagesFromValues(referenceAttachments, referenceValues, targetSize, renderPassInfo);
for (size_t attachmentNdx = 0; attachmentNdx < renderPassInfo.getAttachments().size(); attachmentNdx++)
{
if (tcu::hasDepthComponent(format.order) && tcu::hasStencilComponent(format.order))
{
- const tcu::TextureFormat depthFormat = getDepthCopyFormat(attachment.getFormat());
- const VkDeviceSize depthBufferSize = targetSize.x() * targetSize.y() * depthFormat.getPixelSize();
- void* const depthPtr = attachmentResources[attachmentNdx]->getResultMemory().getHostPtr();
+ const tcu::TextureFormat depthFormat = getDepthCopyFormat(attachment.getFormat());
+ const VkDeviceSize depthBufferSize = targetSize.x() * targetSize.y() * depthFormat.getPixelSize();
+ void* const depthPtr = attachmentResources[attachmentNdx]->getResultMemory().getHostPtr();
const tcu::TextureFormat stencilFormat = getStencilCopyFormat(attachment.getFormat());
const VkDeviceSize stencilBufferSize = targetSize.x() * targetSize.y() * stencilFormat.getPixelSize();
void* const stencilPtr = attachmentResources[attachmentNdx]->getSecondaryResultMemory().getHostPtr();
- const VkMappedMemoryRange ranges[] =
+ const VkMappedMemoryRange ranges[] =
{
{
VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, // sType;
VK_CHECK(vk.invalidateMappedMemoryRanges(device, 2u, ranges));
{
- const ConstPixelBufferAccess depthAccess (depthFormat, targetSize.x(), targetSize.y(), 1, depthPtr);
- const ConstPixelBufferAccess stencilAccess (stencilFormat, targetSize.x(), targetSize.y(), 1, stencilPtr);
- tcu::TextureLevel errorImage (tcu::TextureFormat(tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8), targetSize.x(), targetSize.y());
+ const ConstPixelBufferAccess depthAccess (depthFormat, targetSize.x(), targetSize.y(), 1, depthPtr);
+ const ConstPixelBufferAccess stencilAccess (stencilFormat, targetSize.x(), targetSize.y(), 1, stencilPtr);
+ tcu::TextureLevel depthErrorImage (tcu::TextureFormat(tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8), targetSize.x(), targetSize.y());
+ tcu::TextureLevel stencilErrorImage (tcu::TextureFormat(tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8), targetSize.x(), targetSize.y());
log << TestLog::Image("Attachment" + de::toString(attachmentNdx) + "Depth", "Attachment " + de::toString(attachmentNdx) + " Depth", depthAccess);
log << TestLog::Image("Attachment" + de::toString(attachmentNdx) + "Stencil", "Attachment " + de::toString(attachmentNdx) + " Stencil", stencilAccess);
log << TestLog::Image("AttachmentReference" + de::toString(attachmentNdx), "Attachment reference " + de::toString(attachmentNdx), referenceAttachments[attachmentNdx].getAccess());
- if ((renderPassInfo.getAttachments()[attachmentNdx].getStoreOp() == VK_ATTACHMENT_STORE_OP_STORE || renderPassInfo.getAttachments()[attachmentNdx].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_STORE)
- && !verifyAttachment(depthAccess, tcu::just(stencilAccess), renderPassInfo, renderPassClearValues[attachmentNdx], imageClearValues[attachmentNdx], renderPassInfo.getSubpasses(), subpassRenderInfo, errorImage.getAccess(), (deUint32)attachmentNdx, config.renderPos, config.renderSize))
+ if (renderPassInfo.getAttachments()[attachmentNdx].getStoreOp() == VK_ATTACHMENT_STORE_OP_STORE
+ && !verifyDepthAttachment(referenceValues[attachmentNdx], depthAccess, depthErrorImage.getAccess()))
{
- log << TestLog::Image("AttachmentError" + de::toString(attachmentNdx), "Attachment Error " + de::toString(attachmentNdx), errorImage.getAccess());
+ log << TestLog::Image("DepthAttachmentError" + de::toString(attachmentNdx), "Depth Attachment Error " + de::toString(attachmentNdx), depthErrorImage.getAccess());
+ isOk = false;
+ }
+
+ if (renderPassInfo.getAttachments()[attachmentNdx].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_STORE
+ && !verifyStencilAttachment(referenceValues[attachmentNdx], stencilAccess, stencilErrorImage.getAccess()))
+ {
+ log << TestLog::Image("StencilAttachmentError" + de::toString(attachmentNdx), "Stencil Attachment Error " + de::toString(attachmentNdx), stencilErrorImage.getAccess());
isOk = false;
}
}
const VkDeviceSize bufferSize = targetSize.x() * targetSize.y() * format.getPixelSize();
void* const ptr = attachmentResources[attachmentNdx]->getResultMemory().getHostPtr();
- const VkMappedMemoryRange range =
+ const VkMappedMemoryRange range =
{
VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, // sType;
DE_NULL, // pNext;
};
VK_CHECK(vk.invalidateMappedMemoryRanges(device, 1u, &range));
+ if (tcu::hasDepthComponent(format.order))
+ {
+ const ConstPixelBufferAccess access (format, targetSize.x(), targetSize.y(), 1, ptr);
+ tcu::TextureLevel errorImage (tcu::TextureFormat(tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8), targetSize.x(), targetSize.y());
+
+ log << TestLog::Image("Attachment" + de::toString(attachmentNdx), "Attachment " + de::toString(attachmentNdx), access);
+ log << TestLog::Image("AttachmentReference" + de::toString(attachmentNdx), "Attachment reference " + de::toString(attachmentNdx), referenceAttachments[attachmentNdx].getAccess());
+
+ if ((renderPassInfo.getAttachments()[attachmentNdx].getStoreOp() == VK_ATTACHMENT_STORE_OP_STORE || renderPassInfo.getAttachments()[attachmentNdx].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_STORE)
+ && !verifyDepthAttachment(referenceValues[attachmentNdx], access, errorImage.getAccess()))
+ {
+ log << TestLog::Image("AttachmentError" + de::toString(attachmentNdx), "Attachment Error " + de::toString(attachmentNdx), errorImage.getAccess());
+ isOk = false;
+ }
+ }
+ else if (tcu::hasStencilComponent(format.order))
+ {
+ const ConstPixelBufferAccess access (format, targetSize.x(), targetSize.y(), 1, ptr);
+ tcu::TextureLevel errorImage (tcu::TextureFormat(tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8), targetSize.x(), targetSize.y());
+
+ log << TestLog::Image("Attachment" + de::toString(attachmentNdx), "Attachment " + de::toString(attachmentNdx), access);
+ log << TestLog::Image("AttachmentReference" + de::toString(attachmentNdx), "Attachment reference " + de::toString(attachmentNdx), referenceAttachments[attachmentNdx].getAccess());
+
+ if ((renderPassInfo.getAttachments()[attachmentNdx].getStoreOp() == VK_ATTACHMENT_STORE_OP_STORE || renderPassInfo.getAttachments()[attachmentNdx].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_STORE)
+ && !verifyStencilAttachment(referenceValues[attachmentNdx], access, errorImage.getAccess()))
+ {
+ log << TestLog::Image("AttachmentError" + de::toString(attachmentNdx), "Attachment Error " + de::toString(attachmentNdx), errorImage.getAccess());
+ isOk = false;
+ }
+ }
+ else
{
const ConstPixelBufferAccess access (format, targetSize.x(), targetSize.y(), 1, ptr);
tcu::TextureLevel errorImage (tcu::TextureFormat(tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8), targetSize.x(), targetSize.y());
log << TestLog::Image("AttachmentReference" + de::toString(attachmentNdx), "Attachment reference " + de::toString(attachmentNdx), referenceAttachments[attachmentNdx].getAccess());
if ((renderPassInfo.getAttachments()[attachmentNdx].getStoreOp() == VK_ATTACHMENT_STORE_OP_STORE || renderPassInfo.getAttachments()[attachmentNdx].getStencilStoreOp() == VK_ATTACHMENT_STORE_OP_STORE)
- && !verifyAttachment(access, tcu::nothing<ConstPixelBufferAccess>(), renderPassInfo, renderPassClearValues[attachmentNdx], imageClearValues[attachmentNdx], renderPassInfo.getSubpasses(), subpassRenderInfo, errorImage.getAccess(), (deUint32)attachmentNdx, config.renderPos, config.renderSize))
+ && !verifyColorAttachment(referenceValues[attachmentNdx], access, errorImage.getAccess()))
{
log << TestLog::Image("AttachmentError" + de::toString(attachmentNdx), "Attachment Error " + de::toString(attachmentNdx), errorImage.getAccess());
isOk = false;
return isOk;
}
+std::string getInputAttachmentType (VkFormat vkFormat)
+{
+ const tcu::TextureFormat format = mapVkFormat(vkFormat);
+ const tcu::TextureChannelClass channelClass = tcu::getTextureChannelClass(format.type);
+
+ switch (channelClass)
+ {
+ case tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER:
+ return "isubpassInput";
+
+ case tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER:
+ return "usubpassInput";
+
+ case tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT:
+ case tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT:
+ case tcu::TEXTURECHANNELCLASS_FLOATING_POINT:
+ return "subpassInput";
+
+ default:
+ DE_FATAL("Unknown channel class");
+ return "";
+ }
+}
+
std::string getAttachmentType (VkFormat vkFormat)
{
const tcu::TextureFormat format = mapVkFormat(vkFormat);
for (size_t subpassNdx = 0; subpassNdx < subpasses.size(); subpassNdx++)
{
- const Subpass& subpass = subpasses[subpassNdx];
+ const Subpass& subpass = subpasses[subpassNdx];
+ deUint32 inputAttachmentBinding = 0;
std::ostringstream vertexShader;
std::ostringstream fragmentShader;
vertexShader << "#version 310 es\n"
- << "layout(location = 0) in highp vec4 a_position;\n"
- << "layout(location = 0) out highp vec2 v_color;\n"
+ << "layout(location = 0) in highp vec2 a_position;\n"
<< "void main (void) {\n"
- << "\thighp float a = 0.5 + a_position.x;\n"
- << "\thighp float b = 0.5 + a_position.y;\n"
- << "\tv_color = vec2(a, b);\n"
- << "\tgl_Position = a_position;\n"
+ << "\tgl_Position = vec4(a_position, 1.0, 1.0);\n"
<< "}\n";
fragmentShader << "#version 310 es\n"
- << "layout(location = 0) in highp vec2 v_color;\n";
+ << "precision highp float;\n";
+
+ for (size_t attachmentNdx = 0; attachmentNdx < subpass.getInputAttachments().size(); attachmentNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getInputAttachments()[attachmentNdx].getAttachment();
+ const Attachment attachment = config.renderPass.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const bool isDepthFormat = tcu::hasDepthComponent(format.order);
+ const bool isStencilFormat = tcu::hasStencilComponent(format.order);
+
+ if (isDepthFormat || isStencilFormat)
+ {
+ if (isDepthFormat)
+ {
+ fragmentShader << "layout(input_attachment_index = " << attachmentNdx << ", set=0, binding=" << inputAttachmentBinding << ") uniform highp subpassInput i_depth" << attachmentNdx << ";\n";
+ inputAttachmentBinding++;
+ }
+
+ if (isStencilFormat)
+ {
+ fragmentShader << "layout(input_attachment_index = " << attachmentNdx << ", set=0, binding=" << inputAttachmentBinding << ") uniform highp usubpassInput i_stencil" << attachmentNdx << ";\n";
+ inputAttachmentBinding++;
+ }
+ }
+ else
+ {
+ const std::string attachmentType = getInputAttachmentType(attachment.getFormat());
+
+ fragmentShader << "layout(input_attachment_index = " << attachmentNdx << ", set=0, binding=" << inputAttachmentBinding << ") uniform highp " << attachmentType << " i_color" << attachmentNdx << ";\n";
+ inputAttachmentBinding++;
+ }
+ }
for (size_t attachmentNdx = 0; attachmentNdx < subpass.getColorAttachments().size(); attachmentNdx++)
{
fragmentShader << "layout(location = " << attachmentNdx << ") out highp " << attachmentType << " o_color" << attachmentNdx << ";\n";
}
- fragmentShader << "void main (void) {\n"
- << "\thighp vec4 scale = vec4(v_color.x, v_color.y, v_color.x * v_color.y, (v_color.x + v_color.y) / 2.0);\n";
+ fragmentShader << "void main (void) {\n";
- for (size_t attachmentNdx = 0; attachmentNdx < subpass.getColorAttachments().size(); attachmentNdx++)
+ if (subpass.getInputAttachments().empty())
+ {
+ for (size_t attachmentNdx = 0; attachmentNdx < subpass.getColorAttachments().size(); attachmentNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getColorAttachments()[attachmentNdx].getAttachment();
+ const std::string attachmentType = getAttachmentType(config.renderPass.getAttachments()[attachmentIndex].getFormat());
+
+ fragmentShader << "\to_color" << attachmentNdx << " = " << attachmentType << "(vec4(";
+
+ for (size_t compNdx = 0; compNdx < 4; compNdx++)
+ {
+ const size_t index = subpassNdx + attachmentIndex + compNdx;
+ const BoolOp op = boolOpFromIndex(index);
+
+ if (compNdx > 0)
+ fragmentShader << ",\n\t\t";
+
+ fragmentShader << "((int(gl_FragCoord.x) % 2 == " << (index % 2)
+ << ") " << boolOpToString(op) << " ("
+ << "int(gl_FragCoord.y) % 2 == " << ((index / 2) % 2)
+ << ") ? 1.0 : 0.0)";
+ }
+
+ fragmentShader << "));\n";
+ }
+
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
+ {
+ const size_t index = subpassNdx + 1;
+ const BoolOp op = boolOpFromIndex(index);
+
+ fragmentShader << "\tgl_FragDepth = ((int(gl_FragCoord.x) % 2 == " << (index % 2)
+ << ") " << boolOpToString(op) << " ("
+ << "int(gl_FragCoord.y) % 2 == " << ((index / 2) % 2)
+ << ") ? 1.0 : 0.0);\n";
+ }
+ }
+ else
{
- const tcu::TextureFormat format = mapVkFormat(config.renderPass.getAttachments()[subpass.getColorAttachments()[attachmentNdx].getAttachment()].getFormat());
- const tcu::TextureFormatInfo formatInfo = tcu::getTextureFormatInfo(format);
- const float clampMin = (float)(-MAX_INTEGER_VALUE);
- const float clampMax = (float)(MAX_INTEGER_VALUE);
- const Vec4 valueMax (de::clamp(formatInfo.valueMax[0], clampMin, clampMax),
- de::clamp(formatInfo.valueMax[1], clampMin, clampMax),
- de::clamp(formatInfo.valueMax[2], clampMin, clampMax),
- de::clamp(formatInfo.valueMax[3], clampMin, clampMax));
-
- const Vec4 valueMin (de::clamp(formatInfo.valueMin[0], clampMin, clampMax),
- de::clamp(formatInfo.valueMin[1], clampMin, clampMax),
- de::clamp(formatInfo.valueMin[2], clampMin, clampMax),
- de::clamp(formatInfo.valueMin[3], clampMin, clampMax));
- const std::string attachmentType = getAttachmentType(config.renderPass.getAttachments()[subpass.getColorAttachments()[attachmentNdx].getAttachment()].getFormat());
-
- fragmentShader << "\to_color" << attachmentNdx << " = " << attachmentType << "(vec4" << valueMin << " + vec4" << (valueMax - valueMin) << " * scale);\n";
+ size_t inputComponentCount = 0;
+ size_t outputComponentCount = 0;
+
+ for (size_t attachmentNdx = 0; attachmentNdx < subpass.getInputAttachments().size(); attachmentNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getInputAttachments()[attachmentNdx].getAttachment();
+ const Attachment attachment = config.renderPass.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const size_t componentCount = (size_t)tcu::getNumUsedChannels(format.order);
+
+ inputComponentCount += componentCount;
+ }
+
+ for (size_t attachmentNdx = 0; attachmentNdx < subpass.getColorAttachments().size(); attachmentNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getColorAttachments()[attachmentNdx].getAttachment();
+ const Attachment attachment = config.renderPass.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const size_t componentCount = (size_t)tcu::getNumUsedChannels(format.order);
+
+ outputComponentCount += componentCount;
+ }
+
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
+ outputComponentCount++;
+
+ const size_t inputsPerOutput = inputComponentCount >= outputComponentCount
+ ? ((inputComponentCount / outputComponentCount)
+ + ((inputComponentCount % outputComponentCount) != 0 ? 1 : 0))
+ : 1;
+
+ fragmentShader << "\tbool inputs[" << inputComponentCount << "];\n"
+ "\tbool outputs[" << outputComponentCount << "];\n";
+
+ size_t inputValueNdx = 0;
+
+ for (size_t attachmentNdx = 0; attachmentNdx < subpass.getInputAttachments().size(); attachmentNdx++)
+ {
+ const char* const components[] =
+ {
+ "x", "y", "z", "w"
+ };
+ const deUint32 attachmentIndex = subpass.getInputAttachments()[attachmentNdx].getAttachment();
+ const Attachment attachment = config.renderPass.getAttachments()[attachmentIndex];
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const size_t componentCount = (size_t)tcu::getNumUsedChannels(format.order);
+ const bool isDepthFormat = tcu::hasDepthComponent(format.order);
+ const bool isStencilFormat = tcu::hasStencilComponent(format.order);
+
+ if (isDepthFormat || isStencilFormat)
+ {
+ if (isDepthFormat)
+ {
+ fragmentShader << "\tinputs[" << inputValueNdx << "] = 1.0 == float(subpassLoad(i_depth" << attachmentNdx << ").x);\n";
+ inputValueNdx++;
+ }
+
+ if (isStencilFormat)
+ {
+ fragmentShader << "\tinputs[" << inputValueNdx << "] = 255u == subpassLoad(i_stencil" << attachmentNdx << ").x;\n";
+ inputValueNdx++;
+ }
+ }
+ else
+ {
+ for (size_t compNdx = 0; compNdx < componentCount; compNdx++)
+ {
+ fragmentShader << "\tinputs[" << inputValueNdx << "] = 1.0 == float(subpassLoad(i_color" << attachmentNdx << ")." << components[compNdx] << ");\n";
+ inputValueNdx++;
+ }
+ }
+ }
+
+ size_t outputValueNdx = 0;
+
+ for (size_t attachmentNdx = 0; attachmentNdx < subpass.getColorAttachments().size(); attachmentNdx++)
+ {
+ const deUint32 attachmentIndex = subpass.getColorAttachments()[attachmentNdx].getAttachment();
+ const Attachment attachment = config.renderPass.getAttachments()[attachmentIndex];
+ const std::string attachmentType = getAttachmentType(config.renderPass.getAttachments()[attachmentIndex].getFormat());
+ const tcu::TextureFormat format = mapVkFormat(attachment.getFormat());
+ const size_t componentCount = (size_t)tcu::getNumUsedChannels(format.order);
+
+ for (size_t compNdx = 0; compNdx < componentCount; compNdx++)
+ {
+ const size_t index = subpassNdx + attachmentIndex + outputValueNdx;
+ const BoolOp op = boolOpFromIndex(index);
+
+ fragmentShader << "\toutputs[" << outputValueNdx + compNdx << "] = "
+ << "(int(gl_FragCoord.x) % 2 == " << (index % 2)
+ << ") " << boolOpToString(op) << " ("
+ << "int(gl_FragCoord.y) % 2 == " << ((index / 2) % 2)
+ << ");\n";
+
+ for (size_t i = 0; i < inputsPerOutput; i++)
+ fragmentShader << "\toutputs[" << outputValueNdx + compNdx << "] = outputs[" << outputValueNdx + compNdx << "] == inputs[" << ((outputValueNdx + compNdx) * inputsPerOutput + i) % inputComponentCount << "];\n";
+ }
+
+ fragmentShader << "\to_color" << attachmentNdx << " = " << attachmentType << "(";
+
+ for (size_t compNdx = 0; compNdx < 4; compNdx++)
+ {
+ if (compNdx > 0)
+ fragmentShader << ", ";
+
+ if (compNdx < componentCount)
+ fragmentShader << "outputs[" << outputValueNdx + compNdx << "]";
+ else
+ fragmentShader << "0";
+ }
+
+ outputValueNdx += componentCount;
+
+ fragmentShader << ");\n";
+ }
+
+ if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
+ {
+ const deUint32 attachmentIndex = subpass.getDepthStencilAttachment().getAttachment();
+ const size_t index = subpassNdx + attachmentIndex;
+ const BoolOp op = boolOpFromIndex(index);
+
+ fragmentShader << "\toutputs[" << outputValueNdx << "] = "
+ << "(int(gl_FragCoord.x) % 2 == " << (index % 2)
+ << ") " << boolOpToString(op) << " ("
+ << "int(gl_FragCoord.y) % 2 == " << ((index / 2) % 2)
+ << ");\n";
+
+ for (size_t i = 0; i < inputsPerOutput; i++)
+ fragmentShader << "\toutputs[" << outputValueNdx << "] = outputs[" << outputValueNdx << "] == inputs[" << (outputValueNdx * inputsPerOutput + i) % inputComponentCount << "];\n";
+
+ fragmentShader << "\tgl_FragDepth = outputs[" << outputValueNdx << "] ? 1.0 : 0.0;";
+ }
}
fragmentShader << "}\n";
ATTACHMENTREFTYPE_RESOLVE,
};
-VkImageUsageFlags getImageUsageFromLayout(VkImageLayout layout)
+VkImageUsageFlags getImageUsageFromLayout (VkImageLayout layout)
{
switch (layout)
{
case VK_IMAGE_LAYOUT_GENERAL:
case VK_IMAGE_LAYOUT_PREINITIALIZED:
return 0;
+
case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
return VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:
return VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
+
case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
return VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
+
case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
return VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
+
case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
return VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+
default:
DE_FATAL("Unexpected image layout");
return 0;
case ATTACHMENTREFTYPE_RESOLVE:
usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
break;
+
case ATTACHMENTREFTYPE_DEPTH_STENCIL:
usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
break;
+
case ATTACHMENTREFTYPE_INPUT:
usage = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
break;
+
default:
DE_FATAL("Unexpected attachment reference type");
usage = 0;
for (size_t attachmentNdx = 0; attachmentNdx < renderPassInfo.getAttachments().size(); attachmentNdx++)
{
const Attachment& attachment = renderPassInfo.getAttachments()[attachmentNdx];
-
- const VkFormatProperties formatProperties = getPhysicalDeviceFormatProperties(context.getInstanceInterface(), context.getPhysicalDevice(), attachment.getFormat());
- const VkFormatFeatureFlags supportedFeatures = formatProperties.optimalTilingFeatures;
+ const VkFormatProperties formatProperties = getPhysicalDeviceFormatProperties(context.getInstanceInterface(), context.getPhysicalDevice(), attachment.getFormat());
+ const VkFormatFeatureFlags supportedFeatures = formatProperties.optimalTilingFeatures;
if ((supportedFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) != 0)
attachmentImageUsage[attachmentNdx] |= VK_IMAGE_USAGE_SAMPLED_BIT;
{
const RenderQuad& renderQuad = *info.getRenderQuad();
- log << TestLog::Message << "Rendering gradient quad to " << renderQuad.getCornerA() << " -> " << renderQuad.getCornerB() << TestLog::EndMessage;
+ log << TestLog::Message << "Rendering grid quad to " << renderQuad.getCornerA() << " -> " << renderQuad.getCornerB() << TestLog::EndMessage;
}
}
-void logTestCaseInfo (TestLog& log,
- const TestConfig& config,
- const vector<bool>& attachmentIsLazy,
- const vector<Maybe<VkClearValue> >& imageClearValues,
- const vector<Maybe<VkClearValue> >& renderPassClearValues,
- const vector<SubpassRenderInfo>& subpassRenderInfo)
+void logTestCaseInfo (TestLog& log,
+ const TestConfig& config,
+ const vector<bool>& attachmentIsLazy,
+ const vector<Maybe<VkClearValue> >& imageClearValues,
+ const vector<Maybe<VkClearValue> >& renderPassClearValues,
+ const vector<SubpassRenderInfo>& subpassRenderInfo)
{
const RenderPass& renderPass = config.renderPass;
}
}
+float roundToViewport (float x, deUint32 offset, deUint32 size)
+{
+ const float origin = (float)(offset) + ((float(size) / 2.0f));
+ const float p = (float)(size) / 2.0f;
+ const deInt32 xi = deRoundFloatToInt32(origin + (p * x));
+
+ return (((float)xi) - origin) / p;
+}
+
void initializeSubpassRenderInfo (vector<SubpassRenderInfo>& renderInfos, de::Random& rng, const RenderPass& renderPass, const TestConfig& config)
{
const TestConfig::CommandBufferTypes commandBuffer = config.commandBufferTypes;
if (subpass.getDepthStencilAttachment().getAttachment() != VK_ATTACHMENT_UNUSED)
{
- const Attachment& attachment = renderPass.getAttachments()[subpass.getDepthStencilAttachment().getAttachment()];
- const UVec2 size ((viewportSize * UVec2(2)) / UVec2(3));
- const UVec2 offset (viewportOffset.x() + ((deUint32)colorAttachments.size() % 2u) * (viewportSize.x() / 3u),
- viewportOffset.y() + (((deUint32)colorAttachments.size() / 2u) % 2u) * (viewportSize.y() / 3u));
- const VkClearValue value = randomClearValue(attachment, rng);
+ const Attachment& attachment = renderPass.getAttachments()[subpass.getDepthStencilAttachment().getAttachment()];
+ const UVec2 size ((viewportSize * UVec2(2)) / UVec2(3));
+ const UVec2 offset (viewportOffset.x() + ((deUint32)colorAttachments.size() % 2u) * (viewportSize.x() / 3u),
+ viewportOffset.y() + (((deUint32)colorAttachments.size() / 2u) % 2u) * (viewportSize.y() / 3u));
+ const VkClearValue value = randomClearValue(attachment, rng);
depthStencilClear = tcu::just(DepthStencilClear(offset, size, value.depthStencil.depth, value.depthStencil.stencil));
}
if (config.renderTypes & TestConfig::RENDERTYPES_DRAW)
{
- // (-0.5,-0.5) - (0.5,0.5) rounded to pixel edges
- const float x = (float)(viewportSize.x() / 4) / (float)(viewportSize.x() / 2);
- const float y = (float)(viewportSize.y() / 4) / (float)(viewportSize.y() / 2);
- renderQuad = tcu::just(RenderQuad(tcu::Vec4(-x, -y, 0.0f, 1.0f), tcu::Vec4(x, y, 1.0f, 1.0f)));
+ const float w = (subpassNdx % 2) == 0 ? 1.0f : 1.25f;
+ const float h = (subpassNdx % 2) == 0 ? 1.25f : 1.0f;
+
+ const float x0 = roundToViewport((subpassNdx % 2) == 0 ? 1.0f - w : -1.0f, viewportOffset.x(), viewportSize.x());
+ const float x1 = roundToViewport((subpassNdx % 2) == 0 ? 1.0f : -1.0f + w, viewportOffset.x(), viewportSize.x());
+
+ const float y0 = roundToViewport(((subpassNdx / 2) % 2) == 0 ? 1.0f - h : -1.0f, viewportOffset.y(), viewportSize.y());
+ const float y1 = roundToViewport(((subpassNdx / 2) % 2) == 0 ? 1.0f : -1.0f + h, viewportOffset.y(), viewportSize.y());
+
+ renderQuad = tcu::just(RenderQuad(tcu::Vec2(x0, y0), tcu::Vec2(x1, y1)));
}
renderInfos.push_back(SubpassRenderInfo(renderPass, subpassNdx, subpassIsSecondary, viewportOffset, viewportSize, renderQuad, colorClears, depthStencilClear));
vector<de::SharedPtr<AttachmentResources> > attachmentResources;
vector<de::SharedPtr<SubpassRenderer> > subpassRenderers;
+ vector<VkImage> attachmentImages;
vector<VkImageView> attachmentViews;
+ vector<pair<VkImageView, VkImageView> > inputAttachmentViews;
for (size_t attachmentNdx = 0; attachmentNdx < renderPassInfo.getAttachments().size(); attachmentNdx++)
{
attachmentResources.push_back(de::SharedPtr<AttachmentResources>(new AttachmentResources(vk, device, allocator, queueIndex, targetSize, attachmentInfo, attachmentImageUsage[attachmentNdx])));
attachmentViews.push_back(attachmentResources[attachmentNdx]->getAttachmentView());
+ attachmentImages.push_back(attachmentResources[attachmentNdx]->getImage());
+
+ inputAttachmentViews.push_back(attachmentResources[attachmentNdx]->getInputAttachmentViews());
}
beginCommandBuffer(vk, *initializeImagesCommandBuffer, (VkCommandBufferUsageFlags)0, DE_NULL, 0, DE_NULL, VK_FALSE, (VkQueryControlFlags)0, (VkQueryPipelineStatisticFlags)0);
const Unique<VkFramebuffer> framebuffer (createFramebuffer(vk, device, *renderPass, targetSize, attachmentViews));
for (size_t subpassNdx = 0; subpassNdx < renderPassInfo.getSubpasses().size(); subpassNdx++)
- subpassRenderers.push_back(de::SharedPtr<SubpassRenderer>(new SubpassRenderer(context, vk, device, allocator, *renderPass, *framebuffer, *commandBufferPool, queueIndex, subpassRenderInfo[subpassNdx])));
+ subpassRenderers.push_back(de::SharedPtr<SubpassRenderer>(new SubpassRenderer(context, vk, device, allocator, *renderPass, *framebuffer, *commandBufferPool, queueIndex, attachmentImages, inputAttachmentViews, subpassRenderInfo[subpassNdx], config.renderPass.getAttachments())));
beginCommandBuffer(vk, *renderCommandBuffer, (VkCommandBufferUsageFlags)0, DE_NULL, 0, DE_NULL, VK_FALSE, (VkQueryControlFlags)0, (VkQueryPipelineStatisticFlags)0);
pushRenderPassCommands(vk, *renderCommandBuffer, *renderPass, *framebuffer, subpassRenderers, renderPos, renderSize, renderPassClearValues, config.renderTypes);
VK_FORMAT_D32_SFLOAT_S8_UINT
};
-de::MovePtr<tcu::TestCaseGroup> createAttachmentTestCaseGroup (tcu::TestContext& testCtx)
+void addAttachmentTests (tcu::TestCaseGroup* group)
{
const deUint32 attachmentCounts[] = { 1, 3, 4, 8 };
const VkAttachmentLoadOp loadOps[] =
UVec2(60, 47)
};
- de::Random rng (1433774382u);
- de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(testCtx, "attachment", "Attachment format and count tests with load and store ops and image layouts"));
+ tcu::TestContext& testCtx = group->getTestContext();
+ de::Random rng (1433774382u);
for (size_t attachmentCountNdx = 0; attachmentCountNdx < DE_LENGTH_OF_ARRAY(attachmentCounts); attachmentCountNdx++)
{
if (useDepthStencil)
{
- const VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_1_BIT;
- const VkFormat format = rng.choose<VkFormat>(DE_ARRAY_BEGIN(s_coreDepthStencilFormats), DE_ARRAY_END(s_coreDepthStencilFormats));
- const VkAttachmentLoadOp loadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
- const VkAttachmentStoreOp storeOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
+ const VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_1_BIT;
+ const VkFormat format = rng.choose<VkFormat>(DE_ARRAY_BEGIN(s_coreDepthStencilFormats), DE_ARRAY_END(s_coreDepthStencilFormats));
+ const VkAttachmentLoadOp loadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
+ const VkAttachmentStoreOp storeOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
- const VkImageLayout initialLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalDepthStencilLayouts), DE_ARRAY_END(initialAndFinalDepthStencilLayouts));
- const VkImageLayout finalizeLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalDepthStencilLayouts), DE_ARRAY_END(initialAndFinalDepthStencilLayouts));
+ const VkImageLayout initialLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalDepthStencilLayouts), DE_ARRAY_END(initialAndFinalDepthStencilLayouts));
+ const VkImageLayout finalizeLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalDepthStencilLayouts), DE_ARRAY_END(initialAndFinalDepthStencilLayouts));
- const VkAttachmentLoadOp stencilLoadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
- const VkAttachmentStoreOp stencilStoreOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
+ const VkAttachmentLoadOp stencilLoadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
+ const VkAttachmentStoreOp stencilStoreOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
depthStencilLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(depthStencilLayouts), DE_ARRAY_END(depthStencilLayouts));
attachments.push_back(Attachment(format, sampleCount, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalizeLayout));
const TestConfig::RenderTypes render = rng.choose<TestConfig::RenderTypes>(DE_ARRAY_BEGIN(renderCommands), DE_ARRAY_END(renderCommands));
const TestConfig::CommandBufferTypes commandBuffer = rng.choose<TestConfig::CommandBufferTypes>(DE_ARRAY_BEGIN(commandBuffers), DE_ARRAY_END(commandBuffers));
const TestConfig::ImageMemory imageMemory = rng.choose<TestConfig::ImageMemory>(DE_ARRAY_BEGIN(imageMemories), DE_ARRAY_END(imageMemories));
- const vector<Subpass> subpasses (1, Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u, vector<AttachmentReference>(), colorAttachmentReferences, vector<AttachmentReference>(), AttachmentReference((useDepthStencil ? (deUint32)(attachments.size() - 1) : VK_ATTACHMENT_UNUSED), depthStencilLayout), vector<AttachmentReference>()));
+ const vector<Subpass> subpasses (1, Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u, vector<AttachmentReference>(), colorAttachmentReferences, vector<AttachmentReference>(), AttachmentReference((useDepthStencil ? (deUint32)(attachments.size() - 1) : VK_ATTACHMENT_UNUSED), depthStencilLayout), vector<deUint32>()));
const vector<SubpassDependency> deps;
const string testCaseName = de::toString(attachmentCountNdx * testCaseCount + testCaseNdx);
group->addChild(attachmentCountGroup.release());
}
+}
+
+template<typename T>
+T chooseRandom (de::Random& rng, const set<T>& values)
+{
+ size_t ndx = ((size_t)rng.getUint32()) % values.size();
+ typename set<T>::const_iterator iter = values.begin();
+
+ for (; ndx > 0; ndx--)
+ iter++;
- return group;
+ return *iter;
}
-de::MovePtr<tcu::TestCaseGroup> createAttachmentAllocationTestGroup (tcu::TestContext& testCtx)
+void addAttachmentAllocationTests (tcu::TestCaseGroup* group)
{
const deUint32 attachmentCounts[] = { 4, 8 };
const VkAttachmentLoadOp loadOps[] =
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
};
+ const VkImageLayout initialAndFinalDepthStencilLayouts[] =
+ {
+ VK_IMAGE_LAYOUT_GENERAL,
+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
+ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
+ };
+
const VkImageLayout subpassLayouts[] =
{
VK_IMAGE_LAYOUT_GENERAL,
// Each pass drops one attachment and picks up new one
ALLOCATIONTYPE_ROLL,
// Start by growing and end by shrinking
- ALLOCATIONTYPE_GROW_SHRINK
+ ALLOCATIONTYPE_GROW_SHRINK,
+ // Each subpass has single input and single output attachment
+ ALLOCATIONTYPE_IO_CHAIN,
+ // Each subpass has multiple inputs and multiple outputs attachment
+ ALLOCATIONTYPE_IO_GENERIC
};
const AllocationType allocationTypes[] =
ALLOCATIONTYPE_GROW,
ALLOCATIONTYPE_SHRINK,
ALLOCATIONTYPE_ROLL,
- ALLOCATIONTYPE_GROW_SHRINK
+ ALLOCATIONTYPE_GROW_SHRINK,
+ ALLOCATIONTYPE_IO_CHAIN,
+ ALLOCATIONTYPE_IO_GENERIC
};
const char* const allocationTypeStr[] =
"grow",
"shrink",
"roll",
- "grow_shrink"
+ "grow_shrink",
+ "input_output_chain",
+ "input_output",
};
const TestConfig::RenderTypes renderCommands[] =
UVec2(60, 47)
};
- de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(testCtx, "attachment_allocation", "Attachment allocation tests"));
+ tcu::TestContext& testCtx = group->getTestContext();
de::Random rng (3700649827u);
for (size_t allocationTypeNdx = 0; allocationTypeNdx < DE_LENGTH_OF_ARRAY(allocationTypes); allocationTypeNdx++)
for (size_t testCaseNdx = 0; testCaseNdx < testCaseCount; testCaseNdx++)
{
- const deUint32 attachmentCount = rng.choose<deUint32>(DE_ARRAY_BEGIN(attachmentCounts), DE_ARRAY_END(attachmentCounts));
- vector<Attachment> attachments;
- vector<Subpass> subpasses;
-
- for (size_t attachmentNdx = 0; attachmentNdx < attachmentCount; attachmentNdx++)
+ if (allocationType == ALLOCATIONTYPE_IO_GENERIC)
{
- const VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_1_BIT;
- const VkFormat format = rng.choose<VkFormat>(DE_ARRAY_BEGIN(s_coreColorFormats), DE_ARRAY_END(s_coreColorFormats));
- const VkAttachmentLoadOp loadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
- const VkAttachmentStoreOp storeOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
+ const deUint32 attachmentCount = 4u + rng.getUint32() % 31u;
+ const deUint32 subpassCount = 4u + rng.getUint32() % 31u;
+ vector<Attachment> attachments;
- const VkImageLayout initialLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts));
- const VkImageLayout finalizeLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts));
-
- const VkAttachmentLoadOp stencilLoadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
- const VkAttachmentStoreOp stencilStoreOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
+ set<deUint32> definedAttachments;
- attachments.push_back(Attachment(format, sampleCount, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalizeLayout));
- }
+ vector<Subpass> subpasses;
+ set<deUint32> colorAttachments;
+ set<deUint32> depthStencilAttachments;
- if (allocationType == ALLOCATIONTYPE_GROW)
- {
- for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
+ for (deUint32 attachmentIndex = 0; attachmentIndex < attachmentCount; attachmentIndex++)
{
- vector<AttachmentReference> colorAttachmentReferences;
-
- for (size_t attachmentNdx = 0; attachmentNdx < subpassNdx + 1; attachmentNdx++)
+ const bool isDepthStencilAttachment = rng.getFloat() < 0.01f;
+ const VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_1_BIT;
+ const VkAttachmentLoadOp loadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
+ const VkAttachmentStoreOp storeOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
+
+ const VkImageLayout initialLayout = isDepthStencilAttachment
+ ? rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalDepthStencilLayouts), DE_ARRAY_END(initialAndFinalDepthStencilLayouts))
+ : rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts));
+ const VkImageLayout finalizeLayout = isDepthStencilAttachment
+ ? rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalDepthStencilLayouts), DE_ARRAY_END(initialAndFinalDepthStencilLayouts))
+ : rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts));
+
+ const VkAttachmentLoadOp stencilLoadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
+ const VkAttachmentStoreOp stencilStoreOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
+
+ if (isDepthStencilAttachment)
{
- const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
+ const VkFormat format = rng.choose<VkFormat>(DE_ARRAY_BEGIN(s_coreDepthStencilFormats), DE_ARRAY_END(s_coreDepthStencilFormats));
+
+ if (loadOp == VK_ATTACHMENT_LOAD_OP_LOAD || loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR
+ || stencilLoadOp == VK_ATTACHMENT_LOAD_OP_LOAD || stencilLoadOp == VK_ATTACHMENT_LOAD_OP_CLEAR)
+ definedAttachments.insert(attachmentIndex);
- colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
+ depthStencilAttachments.insert(attachmentIndex);
+
+ attachments.push_back(Attachment(format, sampleCount, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalizeLayout));
}
+ else
+ {
+ const VkFormat format = rng.choose<VkFormat>(DE_ARRAY_BEGIN(s_coreColorFormats), DE_ARRAY_END(s_coreColorFormats));
+
+ if (loadOp == VK_ATTACHMENT_LOAD_OP_LOAD || loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR)
+ definedAttachments.insert(attachmentIndex);
- subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u, vector<AttachmentReference>(), colorAttachmentReferences, vector<AttachmentReference>(), AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL), vector<AttachmentReference>()));
+ colorAttachments.insert(attachmentIndex);
+
+ attachments.push_back(Attachment(format, sampleCount, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalizeLayout));
+ }
}
- }
- else if (allocationType == ALLOCATIONTYPE_SHRINK)
- {
- for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
+ vector<Maybe<deUint32> > lastUseOfAttachment (attachments.size(), nothing<deUint32>());
+ vector<SubpassDependency> deps;
+
+ for (deUint32 subpassIndex = 0; subpassIndex < subpassCount; subpassIndex++)
{
- vector<AttachmentReference> colorAttachmentReferences;
+ const deUint32 colorAttachmentCount = depthStencilAttachments.empty()
+ ? 1 + rng.getUint32() % de::min(4u, (deUint32)colorAttachments.size())
+ : rng.getUint32() % (de::min(4u, (deUint32)colorAttachments.size()) + 1u);
+ const deUint32 inputAttachmentCount = rng.getUint32() % (deUint32)(de::min<size_t>(4, definedAttachments.size()) + 1);
+ const bool useDepthStencilAttachment = !depthStencilAttachments.empty() && (colorAttachmentCount == 0 || rng.getBool());
+ std::vector<deUint32> subpassColorAttachments (colorAttachmentCount);
+ std::vector<deUint32> subpassInputAttachments (inputAttachmentCount);
+ Maybe<deUint32> depthStencilAttachment (useDepthStencilAttachment
+ ? just(chooseRandom(rng, depthStencilAttachments))
+ : nothing<deUint32>());
+ std::vector<deUint32> subpassPreserveAttachments;
+
+ rng.choose(colorAttachments.begin(), colorAttachments.end(), subpassColorAttachments.begin(), colorAttachmentCount);
+ rng.choose(definedAttachments.begin(), definedAttachments.end(), subpassInputAttachments.begin(), inputAttachmentCount);
+
+ for (size_t colorAttachmentNdx = 0; colorAttachmentNdx < subpassColorAttachments.size(); colorAttachmentNdx++)
+ definedAttachments.insert(subpassColorAttachments[colorAttachmentNdx]);
+
+ if (depthStencilAttachment)
+ definedAttachments.insert(*depthStencilAttachment);
- for (size_t attachmentNdx = 0; attachmentNdx < (attachmentCount - subpassNdx); attachmentNdx++)
{
- const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
-
- colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
+ std::vector<AttachmentReference> inputAttachmentReferences;
+ std::vector<AttachmentReference> colorAttachmentReferences;
+ AttachmentReference depthStencilAttachmentReference (VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL);
+
+ for (size_t colorAttachmentNdx = 0; colorAttachmentNdx < subpassColorAttachments.size(); colorAttachmentNdx++)
+ {
+ const deUint32 colorAttachmentIndex = subpassColorAttachments[colorAttachmentNdx];
+ // \todo [mika 2016-08-25] Check if attachment is not used as input attachment and use other image layouts
+ const VkImageLayout subpassLayout = VK_IMAGE_LAYOUT_GENERAL;
+
+ if (lastUseOfAttachment[colorAttachmentIndex])
+ {
+ const bool byRegion = rng.getBool();
+
+ deps.push_back(SubpassDependency(*lastUseOfAttachment[colorAttachmentIndex], subpassIndex,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
+
+ byRegion ? (VkDependencyFlags)VK_DEPENDENCY_BY_REGION_BIT : 0u));
+ }
+
+ lastUseOfAttachment[colorAttachmentIndex] = just(subpassIndex);
+
+ colorAttachmentReferences.push_back(AttachmentReference((deUint32)subpassColorAttachments[colorAttachmentNdx], subpassLayout));
+ }
+
+ for (size_t inputAttachmentNdx = 0; inputAttachmentNdx < subpassInputAttachments.size(); inputAttachmentNdx++)
+ {
+ const deUint32 inputAttachmentIndex = subpassInputAttachments[inputAttachmentNdx];
+ // \todo [mika 2016-08-25] Check if attachment is not used as color attachment and use other image layouts
+ const VkImageLayout subpassLayout = VK_IMAGE_LAYOUT_GENERAL;
+
+ if(lastUseOfAttachment[inputAttachmentIndex])
+ {
+ if(*lastUseOfAttachment[inputAttachmentIndex] == subpassIndex)
+ {
+ deps.push_back(SubpassDependency(subpassIndex, subpassIndex,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+
+ VK_DEPENDENCY_BY_REGION_BIT));
+ }
+ else
+ {
+ const bool byRegion = rng.getBool();
+
+ deps.push_back(SubpassDependency(*lastUseOfAttachment[inputAttachmentIndex], subpassIndex,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+
+ byRegion ? (VkDependencyFlags)VK_DEPENDENCY_BY_REGION_BIT : 0u));
+ }
+
+ lastUseOfAttachment[inputAttachmentIndex] = just(subpassIndex);
+
+ inputAttachmentReferences.push_back(AttachmentReference((deUint32)subpassInputAttachments[inputAttachmentNdx], subpassLayout));
+ }
+ }
+
+ if (depthStencilAttachment)
+ {
+ // \todo [mika 2016-08-25] Check if attachment is not used as input attachment and use other image layouts
+ if (lastUseOfAttachment[*depthStencilAttachment])
+ {
+ if(*lastUseOfAttachment[*depthStencilAttachment] == subpassIndex)
+ {
+ deps.push_back(SubpassDependency(subpassIndex, subpassIndex,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+
+ VK_DEPENDENCY_BY_REGION_BIT));
+ }
+ else
+ {
+ const bool byRegion = rng.getBool();
+
+ deps.push_back(SubpassDependency(*lastUseOfAttachment[*depthStencilAttachment], subpassIndex,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+
+ byRegion ? (VkDependencyFlags)VK_DEPENDENCY_BY_REGION_BIT : 0u));
+ }
+ }
+
+ lastUseOfAttachment[*depthStencilAttachment] = just(subpassIndex);
+ depthStencilAttachmentReference = AttachmentReference(*depthStencilAttachment, VK_IMAGE_LAYOUT_GENERAL);
+ }
+ else
+ depthStencilAttachmentReference = AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL);
+
+ vector<deUint32> preserveAttachments;
+ for (deUint32 attachmentIndex = 0; attachmentIndex < (deUint32)attachments.size(); attachmentIndex++)
+ {
+ if (lastUseOfAttachment[attachmentIndex] && (*lastUseOfAttachment[attachmentIndex]) != subpassIndex)
+ preserveAttachments.push_back(attachmentIndex);
+ }
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ inputAttachmentReferences,
+ colorAttachmentReferences,
+ vector<AttachmentReference>(),
+ depthStencilAttachmentReference,
+ preserveAttachments));
}
-
- subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u, vector<AttachmentReference>(), colorAttachmentReferences, vector<AttachmentReference>(), AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL), vector<AttachmentReference>()));
}
- }
- else if (allocationType == ALLOCATIONTYPE_ROLL)
- {
- for (size_t subpassNdx = 0; subpassNdx < attachmentCount / 2; subpassNdx++)
{
- vector<AttachmentReference> colorAttachmentReferences;
+ const TestConfig::RenderTypes render = rng.choose<TestConfig::RenderTypes>(DE_ARRAY_BEGIN(renderCommands), DE_ARRAY_END(renderCommands));
+ const TestConfig::CommandBufferTypes commandBuffer = rng.choose<TestConfig::CommandBufferTypes>(DE_ARRAY_BEGIN(commandBuffers), DE_ARRAY_END(commandBuffers));
+ const TestConfig::ImageMemory imageMemory = rng.choose<TestConfig::ImageMemory>(DE_ARRAY_BEGIN(imageMemories), DE_ARRAY_END(imageMemories));
- for (size_t attachmentNdx = 0; attachmentNdx < attachmentCount / 2; attachmentNdx++)
- {
- const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
+ const string testCaseName = de::toString(testCaseNdx);
+ const UVec2 targetSize = rng.choose<UVec2>(DE_ARRAY_BEGIN(targetSizes), DE_ARRAY_END(targetSizes));
+ const UVec2 renderPos = rng.choose<UVec2>(DE_ARRAY_BEGIN(renderPositions), DE_ARRAY_END(renderPositions));
+ const UVec2 renderSize = rng.choose<UVec2>(DE_ARRAY_BEGIN(renderSizes), DE_ARRAY_END(renderSizes));
- colorAttachmentReferences.push_back(AttachmentReference((deUint32)(subpassNdx + attachmentNdx), subpassLayout));
- }
+ const RenderPass renderPass (attachments, subpasses, deps);
- subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u, vector<AttachmentReference>(), colorAttachmentReferences, vector<AttachmentReference>(), AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL), vector<AttachmentReference>()));
+ addFunctionCaseWithPrograms<TestConfig>(allocationTypeGroup.get(), testCaseName.c_str(), testCaseName.c_str(), createTestShaders, renderPassTest, TestConfig(renderPass, render, commandBuffer, imageMemory, targetSize, renderPos, renderSize, 80329));
}
}
- else if (allocationType == ALLOCATIONTYPE_GROW_SHRINK)
+ else
{
- for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
+ const deUint32 attachmentCount = rng.choose<deUint32>(DE_ARRAY_BEGIN(attachmentCounts), DE_ARRAY_END(attachmentCounts));
+ vector<Attachment> attachments;
+ vector<Subpass> subpasses;
+
+ for (size_t attachmentNdx = 0; attachmentNdx < attachmentCount; attachmentNdx++)
{
- vector<AttachmentReference> colorAttachmentReferences;
+ const VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_1_BIT;
+ const VkFormat format = rng.choose<VkFormat>(DE_ARRAY_BEGIN(s_coreColorFormats), DE_ARRAY_END(s_coreColorFormats));
+ const VkAttachmentLoadOp loadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
+ const VkAttachmentStoreOp storeOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
- for (size_t attachmentNdx = 0; attachmentNdx < subpassNdx + 1; attachmentNdx++)
- {
- const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
+ const VkImageLayout initialLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts));
+ const VkImageLayout finalizeLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(initialAndFinalColorLayouts), DE_ARRAY_END(initialAndFinalColorLayouts));
- colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
- }
+ const VkAttachmentLoadOp stencilLoadOp = rng.choose<VkAttachmentLoadOp>(DE_ARRAY_BEGIN(loadOps), DE_ARRAY_END(loadOps));
+ const VkAttachmentStoreOp stencilStoreOp = rng.choose<VkAttachmentStoreOp>(DE_ARRAY_BEGIN(storeOps), DE_ARRAY_END(storeOps));
- subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u, vector<AttachmentReference>(), colorAttachmentReferences, vector<AttachmentReference>(), AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL), vector<AttachmentReference>()));
+ attachments.push_back(Attachment(format, sampleCount, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalizeLayout));
}
- for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
+ if (allocationType == ALLOCATIONTYPE_GROW)
{
- vector<AttachmentReference> colorAttachmentReferences;
+ for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
+ {
+ vector<AttachmentReference> colorAttachmentReferences;
+
+ for (size_t attachmentNdx = 0; attachmentNdx < subpassNdx + 1; attachmentNdx++)
+ {
+ const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
+
+ colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
+ }
- for (size_t attachmentNdx = 0; attachmentNdx < (attachmentCount - subpassNdx); attachmentNdx++)
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ vector<AttachmentReference>(),
+ colorAttachmentReferences,
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+ }
+ }
+ else if (allocationType == ALLOCATIONTYPE_SHRINK)
+ {
+ for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
{
- const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
+ vector<AttachmentReference> colorAttachmentReferences;
+
+ for (size_t attachmentNdx = 0; attachmentNdx < (attachmentCount - subpassNdx); attachmentNdx++)
+ {
+ const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
- colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
+ colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
+ }
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ vector<AttachmentReference>(),
+ colorAttachmentReferences,
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
}
+ }
+ else if (allocationType == ALLOCATIONTYPE_ROLL)
+ {
+ for (size_t subpassNdx = 0; subpassNdx < attachmentCount / 2; subpassNdx++)
+ {
+ vector<AttachmentReference> colorAttachmentReferences;
- subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u, vector<AttachmentReference>(), colorAttachmentReferences, vector<AttachmentReference>(), AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL), vector<AttachmentReference>()));
+ for (size_t attachmentNdx = 0; attachmentNdx < attachmentCount / 2; attachmentNdx++)
+ {
+ const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
+
+ colorAttachmentReferences.push_back(AttachmentReference((deUint32)(subpassNdx + attachmentNdx), subpassLayout));
+ }
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ vector<AttachmentReference>(),
+ colorAttachmentReferences,
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+ }
}
- }
- else
- DE_FATAL("Unknown allocation type");
+ else if (allocationType == ALLOCATIONTYPE_GROW_SHRINK)
+ {
+ for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
+ {
+ vector<AttachmentReference> colorAttachmentReferences;
- {
- const TestConfig::RenderTypes render = rng.choose<TestConfig::RenderTypes>(DE_ARRAY_BEGIN(renderCommands), DE_ARRAY_END(renderCommands));
- const TestConfig::CommandBufferTypes commandBuffer = rng.choose<TestConfig::CommandBufferTypes>(DE_ARRAY_BEGIN(commandBuffers), DE_ARRAY_END(commandBuffers));
- const TestConfig::ImageMemory imageMemory = rng.choose<TestConfig::ImageMemory>(DE_ARRAY_BEGIN(imageMemories), DE_ARRAY_END(imageMemories));
+ for (size_t attachmentNdx = 0; attachmentNdx < subpassNdx + 1; attachmentNdx++)
+ {
+ const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
- const string testCaseName = de::toString(testCaseNdx);
- const UVec2 targetSize = rng.choose<UVec2>(DE_ARRAY_BEGIN(targetSizes), DE_ARRAY_END(targetSizes));
- const UVec2 renderPos = rng.choose<UVec2>(DE_ARRAY_BEGIN(renderPositions), DE_ARRAY_END(renderPositions));
- const UVec2 renderSize = rng.choose<UVec2>(DE_ARRAY_BEGIN(renderSizes), DE_ARRAY_END(renderSizes));
+ colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
+ }
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ vector<AttachmentReference>(),
+ colorAttachmentReferences,
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+ }
- vector<SubpassDependency> deps;
+ for (size_t subpassNdx = 0; subpassNdx < attachmentCount; subpassNdx++)
+ {
+ vector<AttachmentReference> colorAttachmentReferences;
+
+ for (size_t attachmentNdx = 0; attachmentNdx < (attachmentCount - subpassNdx); attachmentNdx++)
+ {
+ const VkImageLayout subpassLayout = rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts));
- for (size_t subpassNdx = 0; subpassNdx < subpasses.size() - 1; subpassNdx++)
+ colorAttachmentReferences.push_back(AttachmentReference((deUint32)attachmentNdx, subpassLayout));
+ }
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ vector<AttachmentReference>(),
+ colorAttachmentReferences,
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+ }
+ }
+ else if (allocationType == ALLOCATIONTYPE_IO_CHAIN)
{
- const bool byRegion = rng.getBool();
- deps.push_back(SubpassDependency((deUint32)subpassNdx, (deUint32)subpassNdx + 1,
- VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
- | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
- | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
- | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
-
- VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
- | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
- | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
- | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
-
- VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
- VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, // \todo [pyry] Correct?
-
- byRegion ? (VkBool32)VK_TRUE : (VkBool32)VK_FALSE));
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(1, AttachmentReference(0, rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts)))),
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+
+ for (size_t subpassNdx = 1; subpassNdx < attachmentCount; subpassNdx++)
+ {
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS, 0u,
+ vector<AttachmentReference>(1, AttachmentReference((deUint32)(subpassNdx - 1), VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)),
+ vector<AttachmentReference>(1, AttachmentReference((deUint32)(subpassNdx), rng.choose<VkImageLayout>(DE_ARRAY_BEGIN(subpassLayouts), DE_ARRAY_END(subpassLayouts)))),
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+ }
}
+ else
+ DE_FATAL("Unknown allocation type");
- const RenderPass renderPass (attachments, subpasses, deps);
+ {
+ const TestConfig::RenderTypes render = rng.choose<TestConfig::RenderTypes>(DE_ARRAY_BEGIN(renderCommands), DE_ARRAY_END(renderCommands));
+ const TestConfig::CommandBufferTypes commandBuffer = rng.choose<TestConfig::CommandBufferTypes>(DE_ARRAY_BEGIN(commandBuffers), DE_ARRAY_END(commandBuffers));
+ const TestConfig::ImageMemory imageMemory = rng.choose<TestConfig::ImageMemory>(DE_ARRAY_BEGIN(imageMemories), DE_ARRAY_END(imageMemories));
+
+ const string testCaseName = de::toString(testCaseNdx);
+ const UVec2 targetSize = rng.choose<UVec2>(DE_ARRAY_BEGIN(targetSizes), DE_ARRAY_END(targetSizes));
+ const UVec2 renderPos = rng.choose<UVec2>(DE_ARRAY_BEGIN(renderPositions), DE_ARRAY_END(renderPositions));
+ const UVec2 renderSize = rng.choose<UVec2>(DE_ARRAY_BEGIN(renderSizes), DE_ARRAY_END(renderSizes));
+
+ vector<SubpassDependency> deps;
+
+ for (size_t subpassNdx = 0; subpassNdx < subpasses.size() - 1; subpassNdx++)
+ {
+ const bool byRegion = rng.getBool();
+ deps.push_back(SubpassDependency((deUint32)subpassNdx, (deUint32)subpassNdx + 1,
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+ | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+ | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+ | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+
+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
+
+ byRegion ? (VkDependencyFlags)VK_DEPENDENCY_BY_REGION_BIT : 0u));
+ }
- addFunctionCaseWithPrograms<TestConfig>(allocationTypeGroup.get(), testCaseName.c_str(), testCaseName.c_str(), createTestShaders, renderPassTest, TestConfig(renderPass, render, commandBuffer, imageMemory, targetSize, renderPos, renderSize, 80329));
+ const RenderPass renderPass (attachments, subpasses, deps);
+
+ addFunctionCaseWithPrograms<TestConfig>(allocationTypeGroup.get(), testCaseName.c_str(), testCaseName.c_str(), createTestShaders, renderPassTest, TestConfig(renderPass, render, commandBuffer, imageMemory, targetSize, renderPos, renderSize, 80329));
+ }
}
}
-
group->addChild(allocationTypeGroup.release());
}
-
- return group;
}
-de::MovePtr<tcu::TestCaseGroup> createSimpleTestGroup (tcu::TestContext& testCtx)
+void addSimpleTests (tcu::TestCaseGroup* group)
{
- const UVec2 targetSize (64, 64);
- const UVec2 renderPos (0, 0);
- const UVec2 renderSize (64, 64);
- de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(testCtx, "simple", "Simple basic render pass tests"));
+ const UVec2 targetSize (64, 64);
+ const UVec2 renderPos (0, 0);
+ const UVec2 renderSize (64, 64);
// color
{
vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
vector<AttachmentReference>(),
AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
- addFunctionCaseWithPrograms<TestConfig>(group.get(), "color", "Single color attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
+ addFunctionCaseWithPrograms<TestConfig>(group, "color", "Single color attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
}
// depth
vector<AttachmentReference>(),
vector<AttachmentReference>(),
AttachmentReference(0, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
- addFunctionCaseWithPrograms<TestConfig>(group.get(), "depth", "Single depth attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
+ addFunctionCaseWithPrograms<TestConfig>(group, "depth", "Single depth attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
}
// stencil
vector<AttachmentReference>(),
vector<AttachmentReference>(),
AttachmentReference(0, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
- addFunctionCaseWithPrograms<TestConfig>(group.get(), "stencil", "Single stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
+ addFunctionCaseWithPrograms<TestConfig>(group, "stencil", "Single stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
}
// depth_stencil
vector<AttachmentReference>(),
vector<AttachmentReference>(),
AttachmentReference(0, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
- addFunctionCaseWithPrograms<TestConfig>(group.get(), "depth_stencil", "Single depth stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
+ addFunctionCaseWithPrograms<TestConfig>(group, "depth_stencil", "Single depth stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
}
// color_depth
vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
vector<AttachmentReference>(),
AttachmentReference(1, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
- addFunctionCaseWithPrograms<TestConfig>(group.get(), "color_depth", "Color and depth attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
+ addFunctionCaseWithPrograms<TestConfig>(group, "color_depth", "Color and depth attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
}
// color_stencil
vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
vector<AttachmentReference>(),
AttachmentReference(1, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
- addFunctionCaseWithPrograms<TestConfig>(group.get(), "color_stencil", "Color and stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
+ addFunctionCaseWithPrograms<TestConfig>(group, "color_stencil", "Color and stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
}
// color_depth_stencil
vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
vector<AttachmentReference>(),
AttachmentReference(1, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
- addFunctionCaseWithPrograms<TestConfig>(group.get(), "color_depth_stencil", "Color, depth and stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
+ addFunctionCaseWithPrograms<TestConfig>(group, "color_depth_stencil", "Color, depth and stencil attachment case.", createTestShaders, renderPassTest, TestConfig(renderPass, TestConfig::RENDERTYPES_DRAW, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
}
-
- return group;
}
std::string formatToName (VkFormat format)
return de::toLower(formatStr.substr(prefix.length()));
}
-de::MovePtr<tcu::TestCaseGroup> createFormatTestGroup(tcu::TestContext& testCtx)
+void addFormatTests (tcu::TestCaseGroup* group)
{
- de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(testCtx, "formats", "Tests for different image formats."));
+ tcu::TestContext& testCtx = group->getTestContext();
+
+ const UVec2 targetSize (64, 64);
+ const UVec2 renderPos (0, 0);
+ const UVec2 renderSize (64, 64);
- const UVec2 targetSize (64, 64);
- const UVec2 renderPos (0, 0);
- const UVec2 renderSize (64, 64);
+ const struct
+ {
+ const char* const str;
+ const VkAttachmentStoreOp op;
+ } storeOps[] =
+ {
+ { "store", VK_ATTACHMENT_STORE_OP_STORE },
+ { "dont_care", VK_ATTACHMENT_STORE_OP_DONT_CARE }
+ };
const struct
{
vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
vector<AttachmentReference>(),
AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
addFunctionCaseWithPrograms<TestConfig>(loadOpGroup.get(), renderTypes[renderTypeNdx].str, renderTypes[renderTypeNdx].str, createTestShaders, renderPassTest, TestConfig(renderPass, renderTypes[renderTypeNdx].types, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
formatGroup->addChild(loadOpGroup.release());
}
+ {
+ de::MovePtr<tcu::TestCaseGroup> inputGroup (new tcu::TestCaseGroup(testCtx, "input", "Test attachment format as input"));
+
+ for (size_t loadOpNdx = 0; loadOpNdx < DE_LENGTH_OF_ARRAY(loadOps); loadOpNdx++)
+ {
+ const VkAttachmentLoadOp loadOp = loadOps[loadOpNdx].op;
+ de::MovePtr<tcu::TestCaseGroup> loadOpGroup (new tcu::TestCaseGroup(testCtx, loadOps[loadOpNdx].str, loadOps[loadOpNdx].str));
+
+ for (size_t storeOpNdx = 0; storeOpNdx < DE_LENGTH_OF_ARRAY(storeOps); storeOpNdx++)
+ {
+ const VkAttachmentStoreOp storeOp = storeOps[storeOpNdx].op;
+ de::MovePtr<tcu::TestCaseGroup> storeOpGroup (new tcu::TestCaseGroup(testCtx, storeOps[storeOpNdx].str, storeOps[storeOpNdx].str));
+
+ for (size_t renderTypeNdx = 0; renderTypeNdx < DE_LENGTH_OF_ARRAY(renderTypes); renderTypeNdx++)
+ {
+ {
+ vector<Attachment> attachments;
+ vector<Subpass> subpasses;
+ vector<SubpassDependency> deps;
+
+ attachments.push_back(Attachment(format,
+ VK_SAMPLE_COUNT_1_BIT,
+ loadOp,
+ storeOp,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_DONT_CARE,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL));
+
+ attachments.push_back(Attachment(vk::VK_FORMAT_R8G8B8A8_UNORM,
+ VK_SAMPLE_COUNT_1_BIT,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_STORE,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_DONT_CARE,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL));
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)),
+ vector<AttachmentReference>(1, AttachmentReference(1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+
+ deps.push_back(SubpassDependency(0, 1,
+
+ vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ vk::VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
+
+ vk::VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ vk::VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+ vk::VK_DEPENDENCY_BY_REGION_BIT));
+
+ {
+ const RenderPass renderPass (attachments, subpasses, deps);
+
+ addFunctionCaseWithPrograms<TestConfig>(storeOpGroup.get(), renderTypes[renderTypeNdx].str, renderTypes[renderTypeNdx].str, createTestShaders, renderPassTest, TestConfig(renderPass, renderTypes[renderTypeNdx].types, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 89246));
+ }
+ }
+ {
+ vector<Attachment> attachments;
+ vector<Subpass> subpasses;
+ vector<SubpassDependency> deps;
+
+ attachments.push_back(Attachment(format,
+ VK_SAMPLE_COUNT_1_BIT,
+ loadOp,
+ storeOp,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_DONT_CARE,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL));
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_GENERAL)),
+ vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_GENERAL)),
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+
+ deps.push_back(SubpassDependency(0, 1,
+ vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ vk::VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
+
+ vk::VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ vk::VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+ vk::VK_DEPENDENCY_BY_REGION_BIT));
+
+ {
+ const RenderPass renderPass (attachments, subpasses, deps);
+
+ addFunctionCaseWithPrograms<TestConfig>(storeOpGroup.get(), string("self_dep_") + renderTypes[renderTypeNdx].str, string("self_dep_") + renderTypes[renderTypeNdx].str, createTestShaders, renderPassTest, TestConfig(renderPass, renderTypes[renderTypeNdx].types, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 89246));
+ }
+ }
+ }
+
+ loadOpGroup->addChild(storeOpGroup.release());
+ }
+
+ inputGroup->addChild(loadOpGroup.release());
+ }
+
+ formatGroup->addChild(inputGroup.release());
+ }
+
group->addChild(formatGroup.release());
}
vector<AttachmentReference>(),
vector<AttachmentReference>(),
AttachmentReference(0, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
- vector<AttachmentReference>())),
+ vector<deUint32>())),
vector<SubpassDependency>());
addFunctionCaseWithPrograms<TestConfig>(loadOpGroup.get(), renderTypes[renderTypeNdx].str, renderTypes[renderTypeNdx].str, createTestShaders, renderPassTest, TestConfig(renderPass, renderTypes[renderTypeNdx].types, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 90239));
formatGroup->addChild(loadOpGroup.release());
}
+ {
+ de::MovePtr<tcu::TestCaseGroup> inputGroup (new tcu::TestCaseGroup(testCtx, "input", "Test attachment format as input"));
+
+ for (size_t loadOpNdx = 0; loadOpNdx < DE_LENGTH_OF_ARRAY(loadOps); loadOpNdx++)
+ {
+ const VkAttachmentLoadOp loadOp = loadOps[loadOpNdx].op;
+ de::MovePtr<tcu::TestCaseGroup> loadOpGroup (new tcu::TestCaseGroup(testCtx, loadOps[loadOpNdx].str, loadOps[loadOpNdx].str));
+
+ for (size_t storeOpNdx = 0; storeOpNdx < DE_LENGTH_OF_ARRAY(storeOps); storeOpNdx++)
+ {
+ const VkAttachmentStoreOp storeOp = storeOps[storeOpNdx].op;
+ de::MovePtr<tcu::TestCaseGroup> storeOpGroup (new tcu::TestCaseGroup(testCtx, storeOps[storeOpNdx].str, storeOps[storeOpNdx].str));
+
+ for (size_t renderTypeNdx = 0; renderTypeNdx < DE_LENGTH_OF_ARRAY(renderTypes); renderTypeNdx++)
+ {
+ {
+ vector<Attachment> attachments;
+ vector<Subpass> subpasses;
+ vector<SubpassDependency> deps;
+
+ attachments.push_back(Attachment(vkFormat,
+ VK_SAMPLE_COUNT_1_BIT,
+ loadOp,
+ storeOp,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_DONT_CARE,
+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL));
+
+ attachments.push_back(Attachment(vk::VK_FORMAT_R8G8B8A8_UNORM,
+ VK_SAMPLE_COUNT_1_BIT,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_STORE,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_DONT_CARE,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL));
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(),
+ AttachmentReference(0, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
+ vector<deUint32>()));
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)),
+ vector<AttachmentReference>(1, AttachmentReference(1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)),
+ vector<AttachmentReference>(),
+ AttachmentReference(VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+
+ deps.push_back(SubpassDependency(0, 1,
+ vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ vk::VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
+
+ vk::VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ vk::VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+ 0u));
+
+ deps.push_back(SubpassDependency(1, 1,
+ vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ vk::VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
+
+ vk::VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ vk::VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+ vk::VK_DEPENDENCY_BY_REGION_BIT));
+ {
+ const RenderPass renderPass (attachments, subpasses, deps);
+
+ addFunctionCaseWithPrograms<TestConfig>(storeOpGroup.get(), renderTypes[renderTypeNdx].str, renderTypes[renderTypeNdx].str, createTestShaders, renderPassTest, TestConfig(renderPass, renderTypes[renderTypeNdx].types, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 89246));
+ }
+ }
+ {
+ vector<Attachment> attachments;
+ vector<Subpass> subpasses;
+ vector<SubpassDependency> deps;
+
+ attachments.push_back(Attachment(vkFormat,
+ VK_SAMPLE_COUNT_1_BIT,
+ loadOp,
+ storeOp,
+ VK_ATTACHMENT_LOAD_OP_DONT_CARE,
+ VK_ATTACHMENT_STORE_OP_DONT_CARE,
+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL));
+
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(),
+ AttachmentReference(0, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
+ vector<deUint32>()));
+ subpasses.push_back(Subpass(VK_PIPELINE_BIND_POINT_GRAPHICS,
+ 0u,
+ vector<AttachmentReference>(1, AttachmentReference(0, VK_IMAGE_LAYOUT_GENERAL)),
+ vector<AttachmentReference>(),
+ vector<AttachmentReference>(),
+ AttachmentReference(0, VK_IMAGE_LAYOUT_GENERAL),
+ vector<deUint32>()));
+
+ deps.push_back(SubpassDependency(0, 1,
+ vk::VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | vk::VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+ vk::VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
+
+ vk::VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+ vk::VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
+ vk::VK_DEPENDENCY_BY_REGION_BIT));
+
+ {
+ const RenderPass renderPass (attachments, subpasses, deps);
+
+ addFunctionCaseWithPrograms<TestConfig>(storeOpGroup.get(), string("self_dep_") + renderTypes[renderTypeNdx].str, string("self_dep_") + renderTypes[renderTypeNdx].str, createTestShaders, renderPassTest, TestConfig(renderPass, renderTypes[renderTypeNdx].types, TestConfig::COMMANDBUFFERTYPES_INLINE, TestConfig::IMAGEMEMORY_STRICT, targetSize, renderPos, renderSize, 89246));
+ }
+ }
+ }
+
+ loadOpGroup->addChild(storeOpGroup.release());
+ }
+
+ inputGroup->addChild(loadOpGroup.release());
+ }
+
+ formatGroup->addChild(inputGroup.release());
+ }
+
group->addChild(formatGroup.release());
}
-
- return group;
}
} // anonymous
{
de::MovePtr<tcu::TestCaseGroup> renderpassTests (new tcu::TestCaseGroup(testCtx, "renderpass", "RenderPass Tests"));
- renderpassTests->addChild(createSimpleTestGroup(testCtx).release());
- renderpassTests->addChild(createFormatTestGroup(testCtx).release());
- renderpassTests->addChild(createAttachmentTestCaseGroup(testCtx).release());
- renderpassTests->addChild(createAttachmentAllocationTestGroup(testCtx).release());
+ addTestGroup(renderpassTests.get(), "simple", "Simple basic render pass tests", addSimpleTests);
+ addTestGroup(renderpassTests.get(), "formats", "Tests for different image formats.", addFormatTests);
+ addTestGroup(renderpassTests.get(), "attachment", "Attachment format and count tests with load and store ops and image layouts", addAttachmentTests);
+ addTestGroup(renderpassTests.get(), "attachment_allocation", "Attachment allocation tests", addAttachmentAllocationTests);
return renderpassTests.release();
}
dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.dont_care.clear
dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.dont_care.draw
dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r5g6b5_unorm_pack16.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_unorm.clear.clear
dEQP-VK.renderpass.formats.r8_unorm.clear.draw
dEQP-VK.renderpass.formats.r8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_snorm.clear.clear
dEQP-VK.renderpass.formats.r8_snorm.clear.draw
dEQP-VK.renderpass.formats.r8_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r8_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r8_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_uint.clear.clear
dEQP-VK.renderpass.formats.r8_uint.clear.draw
dEQP-VK.renderpass.formats.r8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r8_uint.dont_care.clear
dEQP-VK.renderpass.formats.r8_uint.dont_care.draw
dEQP-VK.renderpass.formats.r8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8_sint.clear.clear
dEQP-VK.renderpass.formats.r8_sint.clear.draw
dEQP-VK.renderpass.formats.r8_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r8_sint.dont_care.clear
dEQP-VK.renderpass.formats.r8_sint.dont_care.draw
dEQP-VK.renderpass.formats.r8_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_unorm.clear.clear
dEQP-VK.renderpass.formats.r8g8_unorm.clear.draw
dEQP-VK.renderpass.formats.r8g8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_snorm.clear.clear
dEQP-VK.renderpass.formats.r8g8_snorm.clear.draw
dEQP-VK.renderpass.formats.r8g8_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_uint.clear.clear
dEQP-VK.renderpass.formats.r8g8_uint.clear.draw
dEQP-VK.renderpass.formats.r8g8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_uint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_uint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8_sint.clear.clear
dEQP-VK.renderpass.formats.r8g8_sint.clear.draw
dEQP-VK.renderpass.formats.r8g8_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8_sint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8_sint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_uint.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_uint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_sint.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_sint.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.clear.clear
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.clear.draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.clear.clear_draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.dont_care.clear
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.dont_care.draw
dEQP-VK.renderpass.formats.r8g8b8a8_srgb.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r8g8b8a8_srgb.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_snorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_uint_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_sint_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.clear.clear
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.clear.draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a8b8g8r8_srgb_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.clear.clear
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.clear.draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.dont_care.clear
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.dont_care.draw
dEQP-VK.renderpass.formats.b8g8r8a8_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.clear.clear
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.clear.draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.clear.clear_draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.dont_care.clear
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.dont_care.draw
dEQP-VK.renderpass.formats.b8g8r8a8_srgb.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.b8g8r8a8_srgb.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2r10g10b10_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.clear.clear
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.clear.draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.dont_care.clear
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.dont_care.draw
dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_unorm.clear.clear
dEQP-VK.renderpass.formats.r16_unorm.clear.draw
dEQP-VK.renderpass.formats.r16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_snorm.clear.clear
dEQP-VK.renderpass.formats.r16_snorm.clear.draw
dEQP-VK.renderpass.formats.r16_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r16_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r16_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_uint.clear.clear
dEQP-VK.renderpass.formats.r16_uint.clear.draw
dEQP-VK.renderpass.formats.r16_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r16_uint.dont_care.clear
dEQP-VK.renderpass.formats.r16_uint.dont_care.draw
dEQP-VK.renderpass.formats.r16_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_sint.clear.clear
dEQP-VK.renderpass.formats.r16_sint.clear.draw
dEQP-VK.renderpass.formats.r16_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r16_sint.dont_care.clear
dEQP-VK.renderpass.formats.r16_sint.dont_care.draw
dEQP-VK.renderpass.formats.r16_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16_sfloat.clear.clear
dEQP-VK.renderpass.formats.r16_sfloat.clear.draw
dEQP-VK.renderpass.formats.r16_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r16_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r16_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r16_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_unorm.clear.clear
dEQP-VK.renderpass.formats.r16g16_unorm.clear.draw
dEQP-VK.renderpass.formats.r16g16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_snorm.clear.clear
dEQP-VK.renderpass.formats.r16g16_snorm.clear.draw
dEQP-VK.renderpass.formats.r16g16_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_uint.clear.clear
dEQP-VK.renderpass.formats.r16g16_uint.clear.draw
dEQP-VK.renderpass.formats.r16g16_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_uint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_uint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_sint.clear.clear
dEQP-VK.renderpass.formats.r16g16_sint.clear.draw
dEQP-VK.renderpass.formats.r16g16_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_sint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_sint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16_sfloat.clear.clear
dEQP-VK.renderpass.formats.r16g16_sfloat.clear.draw
dEQP-VK.renderpass.formats.r16g16_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r16g16_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r16g16_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_snorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_snorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_uint.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_uint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sint.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sint.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.clear.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.clear.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r16g16b16a16_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32_uint.clear.clear
dEQP-VK.renderpass.formats.r32_uint.clear.draw
dEQP-VK.renderpass.formats.r32_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r32_uint.dont_care.clear
dEQP-VK.renderpass.formats.r32_uint.dont_care.draw
dEQP-VK.renderpass.formats.r32_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32_sint.clear.clear
dEQP-VK.renderpass.formats.r32_sint.clear.draw
dEQP-VK.renderpass.formats.r32_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r32_sint.dont_care.clear
dEQP-VK.renderpass.formats.r32_sint.dont_care.draw
dEQP-VK.renderpass.formats.r32_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32_sfloat.clear.clear
dEQP-VK.renderpass.formats.r32_sfloat.clear.draw
dEQP-VK.renderpass.formats.r32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32_uint.clear.clear
dEQP-VK.renderpass.formats.r32g32_uint.clear.draw
dEQP-VK.renderpass.formats.r32g32_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32_uint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32_uint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32_sint.clear.clear
dEQP-VK.renderpass.formats.r32g32_sint.clear.draw
dEQP-VK.renderpass.formats.r32g32_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32_sint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32_sint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32_sfloat.clear.clear
dEQP-VK.renderpass.formats.r32g32_sfloat.clear.draw
dEQP-VK.renderpass.formats.r32g32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r32g32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r32g32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.clear.clear
dEQP-VK.renderpass.formats.r32g32b32a32_uint.clear.draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32b32a32_uint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32b32a32_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.clear.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sint.clear.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.dont_care.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sint.dont_care.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.clear.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.clear.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.r32g32b32a32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d16_unorm.clear.clear
dEQP-VK.renderpass.formats.d16_unorm.clear.draw
dEQP-VK.renderpass.formats.d16_unorm.clear.clear_draw
dEQP-VK.renderpass.formats.d16_unorm.dont_care.clear
dEQP-VK.renderpass.formats.d16_unorm.dont_care.draw
dEQP-VK.renderpass.formats.d16_unorm.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d16_unorm.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.clear.clear
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.clear.draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.clear.clear_draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.dont_care.clear
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.dont_care.draw
dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.x8_d24_unorm_pack32.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d32_sfloat.clear.clear
dEQP-VK.renderpass.formats.d32_sfloat.clear.draw
dEQP-VK.renderpass.formats.d32_sfloat.clear.clear_draw
dEQP-VK.renderpass.formats.d32_sfloat.dont_care.clear
dEQP-VK.renderpass.formats.d32_sfloat.dont_care.draw
dEQP-VK.renderpass.formats.d32_sfloat.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.clear.clear
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.clear.draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.dont_care.clear
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.dont_care.draw
dEQP-VK.renderpass.formats.d24_unorm_s8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d24_unorm_s8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.clear.clear
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.clear.draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.clear.clear_draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.dont_care.clear
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.dont_care.draw
dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.clear.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.load.dont_care.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.store.self_dep_clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.self_dep_clear
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.self_dep_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.clear_draw
+dEQP-VK.renderpass.formats.d32_sfloat_s8_uint.input.dont_care.dont_care.self_dep_clear_draw
dEQP-VK.renderpass.attachment.1.0
dEQP-VK.renderpass.attachment.1.1
dEQP-VK.renderpass.attachment.1.2
dEQP-VK.renderpass.attachment_allocation.grow_shrink.97
dEQP-VK.renderpass.attachment_allocation.grow_shrink.98
dEQP-VK.renderpass.attachment_allocation.grow_shrink.99
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.0
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.1
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.2
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.3
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.4
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.5
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.6
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.7
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.8
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.9
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.10
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.11
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.12
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.13
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.14
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.15
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.16
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.17
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.18
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.19
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.20
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.21
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.22
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.23
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.24
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.25
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.26
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.27
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.28
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.29
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.30
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.31
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.32
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.33
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.34
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.35
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.36
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.37
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.38
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.39
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.40
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.41
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.42
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.43
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.44
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.45
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.46
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.47
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.48
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.49
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.50
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.51
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.52
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.53
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.54
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.55
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.56
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.57
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.58
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.59
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.60
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.61
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.62
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.63
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.64
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.65
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.66
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.67
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.68
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.69
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.70
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.71
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.72
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.73
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.74
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.75
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.76
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.77
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.78
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.79
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.80
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.81
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.82
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.83
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.84
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.85
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.86
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.87
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.88
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.89
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.90
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.91
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.92
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.93
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.94
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.95
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.96
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.97
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.98
+dEQP-VK.renderpass.attachment_allocation.input_output_chain.99
+dEQP-VK.renderpass.attachment_allocation.input_output.0
+dEQP-VK.renderpass.attachment_allocation.input_output.1
+dEQP-VK.renderpass.attachment_allocation.input_output.2
+dEQP-VK.renderpass.attachment_allocation.input_output.3
+dEQP-VK.renderpass.attachment_allocation.input_output.4
+dEQP-VK.renderpass.attachment_allocation.input_output.5
+dEQP-VK.renderpass.attachment_allocation.input_output.6
+dEQP-VK.renderpass.attachment_allocation.input_output.7
+dEQP-VK.renderpass.attachment_allocation.input_output.8
+dEQP-VK.renderpass.attachment_allocation.input_output.9
+dEQP-VK.renderpass.attachment_allocation.input_output.10
+dEQP-VK.renderpass.attachment_allocation.input_output.11
+dEQP-VK.renderpass.attachment_allocation.input_output.12
+dEQP-VK.renderpass.attachment_allocation.input_output.13
+dEQP-VK.renderpass.attachment_allocation.input_output.14
+dEQP-VK.renderpass.attachment_allocation.input_output.15
+dEQP-VK.renderpass.attachment_allocation.input_output.16
+dEQP-VK.renderpass.attachment_allocation.input_output.17
+dEQP-VK.renderpass.attachment_allocation.input_output.18
+dEQP-VK.renderpass.attachment_allocation.input_output.19
+dEQP-VK.renderpass.attachment_allocation.input_output.20
+dEQP-VK.renderpass.attachment_allocation.input_output.21
+dEQP-VK.renderpass.attachment_allocation.input_output.22
+dEQP-VK.renderpass.attachment_allocation.input_output.23
+dEQP-VK.renderpass.attachment_allocation.input_output.24
+dEQP-VK.renderpass.attachment_allocation.input_output.25
+dEQP-VK.renderpass.attachment_allocation.input_output.26
+dEQP-VK.renderpass.attachment_allocation.input_output.27
+dEQP-VK.renderpass.attachment_allocation.input_output.28
+dEQP-VK.renderpass.attachment_allocation.input_output.29
+dEQP-VK.renderpass.attachment_allocation.input_output.30
+dEQP-VK.renderpass.attachment_allocation.input_output.31
+dEQP-VK.renderpass.attachment_allocation.input_output.32
+dEQP-VK.renderpass.attachment_allocation.input_output.33
+dEQP-VK.renderpass.attachment_allocation.input_output.34
+dEQP-VK.renderpass.attachment_allocation.input_output.35
+dEQP-VK.renderpass.attachment_allocation.input_output.36
+dEQP-VK.renderpass.attachment_allocation.input_output.37
+dEQP-VK.renderpass.attachment_allocation.input_output.38
+dEQP-VK.renderpass.attachment_allocation.input_output.39
+dEQP-VK.renderpass.attachment_allocation.input_output.40
+dEQP-VK.renderpass.attachment_allocation.input_output.41
+dEQP-VK.renderpass.attachment_allocation.input_output.42
+dEQP-VK.renderpass.attachment_allocation.input_output.43
+dEQP-VK.renderpass.attachment_allocation.input_output.44
+dEQP-VK.renderpass.attachment_allocation.input_output.45
+dEQP-VK.renderpass.attachment_allocation.input_output.46
+dEQP-VK.renderpass.attachment_allocation.input_output.47
+dEQP-VK.renderpass.attachment_allocation.input_output.48
+dEQP-VK.renderpass.attachment_allocation.input_output.49
+dEQP-VK.renderpass.attachment_allocation.input_output.50
+dEQP-VK.renderpass.attachment_allocation.input_output.51
+dEQP-VK.renderpass.attachment_allocation.input_output.52
+dEQP-VK.renderpass.attachment_allocation.input_output.53
+dEQP-VK.renderpass.attachment_allocation.input_output.54
+dEQP-VK.renderpass.attachment_allocation.input_output.55
+dEQP-VK.renderpass.attachment_allocation.input_output.56
+dEQP-VK.renderpass.attachment_allocation.input_output.57
+dEQP-VK.renderpass.attachment_allocation.input_output.58
+dEQP-VK.renderpass.attachment_allocation.input_output.59
+dEQP-VK.renderpass.attachment_allocation.input_output.60
+dEQP-VK.renderpass.attachment_allocation.input_output.61
+dEQP-VK.renderpass.attachment_allocation.input_output.62
+dEQP-VK.renderpass.attachment_allocation.input_output.63
+dEQP-VK.renderpass.attachment_allocation.input_output.64
+dEQP-VK.renderpass.attachment_allocation.input_output.65
+dEQP-VK.renderpass.attachment_allocation.input_output.66
+dEQP-VK.renderpass.attachment_allocation.input_output.67
+dEQP-VK.renderpass.attachment_allocation.input_output.68
+dEQP-VK.renderpass.attachment_allocation.input_output.69
+dEQP-VK.renderpass.attachment_allocation.input_output.70
+dEQP-VK.renderpass.attachment_allocation.input_output.71
+dEQP-VK.renderpass.attachment_allocation.input_output.72
+dEQP-VK.renderpass.attachment_allocation.input_output.73
+dEQP-VK.renderpass.attachment_allocation.input_output.74
+dEQP-VK.renderpass.attachment_allocation.input_output.75
+dEQP-VK.renderpass.attachment_allocation.input_output.76
+dEQP-VK.renderpass.attachment_allocation.input_output.77
+dEQP-VK.renderpass.attachment_allocation.input_output.78
+dEQP-VK.renderpass.attachment_allocation.input_output.79
+dEQP-VK.renderpass.attachment_allocation.input_output.80
+dEQP-VK.renderpass.attachment_allocation.input_output.81
+dEQP-VK.renderpass.attachment_allocation.input_output.82
+dEQP-VK.renderpass.attachment_allocation.input_output.83
+dEQP-VK.renderpass.attachment_allocation.input_output.84
+dEQP-VK.renderpass.attachment_allocation.input_output.85
+dEQP-VK.renderpass.attachment_allocation.input_output.86
+dEQP-VK.renderpass.attachment_allocation.input_output.87
+dEQP-VK.renderpass.attachment_allocation.input_output.88
+dEQP-VK.renderpass.attachment_allocation.input_output.89
+dEQP-VK.renderpass.attachment_allocation.input_output.90
+dEQP-VK.renderpass.attachment_allocation.input_output.91
+dEQP-VK.renderpass.attachment_allocation.input_output.92
+dEQP-VK.renderpass.attachment_allocation.input_output.93
+dEQP-VK.renderpass.attachment_allocation.input_output.94
+dEQP-VK.renderpass.attachment_allocation.input_output.95
+dEQP-VK.renderpass.attachment_allocation.input_output.96
+dEQP-VK.renderpass.attachment_allocation.input_output.97
+dEQP-VK.renderpass.attachment_allocation.input_output.98
+dEQP-VK.renderpass.attachment_allocation.input_output.99
dEQP-VK.ubo.2_level_array.std140.float_vertex
dEQP-VK.ubo.2_level_array.std140.float_fragment
dEQP-VK.ubo.2_level_array.std140.float_both