dEQP-VK.texture.filtering.3d.formats.s8_uint.s8_uint_nearest
dEQP-VK.texture.filtering.3d.formats.d24_unorm_s8_uint_stencil.d24_unorm_s8_uint_stencil_nearest
dEQP-VK.texture.filtering.3d.formats.d32_sfloat_s8_uint_stencil.d32_sfloat_s8_uint_stencil_nearest
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_npot_sparse
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_rgba
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_iiii
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_abgr
dEQP-VK.texture.compressed.bc7_unorm_block_2d_npot_sparse
dEQP-VK.texture.compressed.bc7_srgb_block_2d_npot
dEQP-VK.texture.compressed.bc7_srgb_block_2d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_npot_sparse
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_zzzz
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_oooo
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_rrrr
TCU_THROW(NotSupportedError, "Required memory size for sparse resource exceeds device limits.");
const VkSparseImageMemoryRequirements aspectRequirements = sparseImageMemoryRequirements[aspectIndex];
- const VkExtent3D imageGranularity = aspectRequirements.formatProperties.imageGranularity;
+ VkExtent3D blockSize = aspectRequirements.formatProperties.imageGranularity;
+
+ if (isCompressedFormat(imageCreateInfo.format))
+ {
+ // 28.4.3 block dimensions of block-compressed format
+ blockSize.width *= getBlockWidth(imageCreateInfo.format);
+ blockSize.height *= getBlockHeight(imageCreateInfo.format);
+ }
std::vector<VkSparseImageMemoryBind> imageResidencyMemoryBinds;
std::vector<VkSparseMemoryBind> imageMipTailMemoryBinds;
for (deUint32 mipLevelNdx = 0; mipLevelNdx < aspectRequirements.imageMipTailFirstLod; ++mipLevelNdx)
{
const VkExtent3D mipExtent = mipLevelExtents(imageCreateInfo.extent, mipLevelNdx);
- const tcu::UVec3 numSparseBinds = alignedDivide(mipExtent, imageGranularity);
- const tcu::UVec3 lastBlockExtent = tcu::UVec3(mipExtent.width % imageGranularity.width ? mipExtent.width % imageGranularity.width : imageGranularity.width,
- mipExtent.height % imageGranularity.height ? mipExtent.height % imageGranularity.height : imageGranularity.height,
- mipExtent.depth % imageGranularity.depth ? mipExtent.depth % imageGranularity.depth : imageGranularity.depth );
+ const tcu::UVec3 numSparseBinds = alignedDivide(mipExtent, blockSize);
+ const tcu::UVec3 lastBlockExtent = tcu::UVec3(mipExtent.width % blockSize.width ? mipExtent.width % blockSize.width : blockSize.width,
+ mipExtent.height % blockSize.height ? mipExtent.height % blockSize.height : blockSize.height,
+ mipExtent.depth % blockSize.depth ? mipExtent.depth % blockSize.depth : blockSize.depth );
for (deUint32 z = 0; z < numSparseBinds.z(); ++z)
for (deUint32 y = 0; y < numSparseBinds.y(); ++y)
allocations.push_back(allocation);
VkOffset3D offset;
- offset.x = x*imageGranularity.width;
- offset.y = y*imageGranularity.height;
- offset.z = z*imageGranularity.depth;
+ offset.x = x*blockSize.width;
+ offset.y = y*blockSize.height;
+ offset.z = z*blockSize.depth;
VkExtent3D extent;
- extent.width = (x == numSparseBinds.x() - 1) ? lastBlockExtent.x() : imageGranularity.width;
- extent.height = (y == numSparseBinds.y() - 1) ? lastBlockExtent.y() : imageGranularity.height;
- extent.depth = (z == numSparseBinds.z() - 1) ? lastBlockExtent.z() : imageGranularity.depth;
+ extent.width = (x == numSparseBinds.x() - 1) ? lastBlockExtent.x() : blockSize.width;
+ extent.height = (y == numSparseBinds.y() - 1) ? lastBlockExtent.y() : blockSize.height;
+ extent.depth = (z == numSparseBinds.z() - 1) ? lastBlockExtent.z() : blockSize.depth;
const VkSparseImageMemoryBind imageMemoryBind =
{
using tcu::Sampler;
using tcu::TestLog;
+// Compressed formats
+static const struct {
+ const VkFormat format;
+} formats[] =
+{
+ { VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK },
+ { VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK },
+ { VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK },
+ { VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK },
+ { VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK },
+ { VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK },
+
+ { VK_FORMAT_EAC_R11_UNORM_BLOCK },
+ { VK_FORMAT_EAC_R11_SNORM_BLOCK },
+ { VK_FORMAT_EAC_R11G11_UNORM_BLOCK },
+ { VK_FORMAT_EAC_R11G11_SNORM_BLOCK },
+
+ { VK_FORMAT_ASTC_4x4_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_4x4_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_5x4_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_5x4_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_5x5_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_5x5_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_6x5_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_6x5_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_6x6_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_6x6_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_8x5_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_8x5_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_8x6_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_8x6_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_8x8_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_8x8_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_10x5_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_10x5_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_10x6_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_10x6_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_10x8_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_10x8_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_10x10_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_10x10_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_12x10_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_12x10_SRGB_BLOCK },
+ { VK_FORMAT_ASTC_12x12_UNORM_BLOCK },
+ { VK_FORMAT_ASTC_12x12_SRGB_BLOCK },
+
+ { VK_FORMAT_BC1_RGB_UNORM_BLOCK },
+ { VK_FORMAT_BC1_RGB_SRGB_BLOCK },
+ { VK_FORMAT_BC1_RGBA_UNORM_BLOCK },
+ { VK_FORMAT_BC1_RGBA_SRGB_BLOCK },
+ { VK_FORMAT_BC2_UNORM_BLOCK },
+ { VK_FORMAT_BC2_SRGB_BLOCK },
+ { VK_FORMAT_BC3_UNORM_BLOCK },
+ { VK_FORMAT_BC3_SRGB_BLOCK },
+ { VK_FORMAT_BC4_UNORM_BLOCK },
+ { VK_FORMAT_BC4_SNORM_BLOCK },
+ { VK_FORMAT_BC5_UNORM_BLOCK },
+ { VK_FORMAT_BC5_SNORM_BLOCK },
+ { VK_FORMAT_BC6H_UFLOAT_BLOCK },
+ { VK_FORMAT_BC6H_SFLOAT_BLOCK },
+ { VK_FORMAT_BC7_UNORM_BLOCK },
+ { VK_FORMAT_BC7_SRGB_BLOCK }
+};
+
+static const struct {
+ const int width;
+ const int height;
+ const int depth; // 2D test ignore depth value
+ const char* name;
+} sizes[] =
+{
+ { 128, 64, 8, "pot" },
+ { 51, 65, 17, "npot" },
+};
+
+static const struct {
+ const char* name;
+ const TextureBinding::ImageBackingMode backingMode;
+} backingModes[] =
+{
+ { "", TextureBinding::IMAGE_BACKING_MODE_REGULAR },
+ { "_sparse", TextureBinding::IMAGE_BACKING_MODE_SPARSE }
+};
+
+struct Compressed3DTestParameters : public Texture3DTestCaseParameters
+{
+ Compressed3DTestParameters (void);
+ TextureBinding::ImageBackingMode backingMode;
+};
+
+Compressed3DTestParameters::Compressed3DTestParameters (void)
+ : backingMode(TextureBinding::IMAGE_BACKING_MODE_REGULAR)
+{
+}
+
struct Compressed2DTestParameters : public Texture2DTestCaseParameters
{
Compressed2DTestParameters (void);
return isOk ? tcu::TestStatus::pass("Pass") : tcu::TestStatus::fail("Image verification failed");
}
-void populateTextureCompressedFormatTests (tcu::TestCaseGroup* compressedTextureTests)
+class Compressed3DTestInstance : public TestInstance
{
- tcu::TestContext& testCtx = compressedTextureTests->getTestContext();
+public:
+ typedef Compressed3DTestParameters ParameterType;
+
+ Compressed3DTestInstance (Context& context,
+ const ParameterType& testParameters);
+ tcu::TestStatus iterate (void);
+
+private:
+ Compressed3DTestInstance (const Compressed3DTestInstance& other);
+ Compressed3DTestInstance& operator= (const Compressed3DTestInstance& other);
+
+ const ParameterType& m_testParameters;
+ const tcu::CompressedTexFormat m_compressedFormat;
+ TestTexture3DSp m_texture3D;
+ TextureRenderer m_renderer3D;
+};
- // ETC2 and EAC compressed formats.
- static const struct {
- const VkFormat format;
- } formats[] =
+Compressed3DTestInstance::Compressed3DTestInstance (Context& context,
+ const ParameterType& testParameters)
+ : TestInstance (context)
+ , m_testParameters (testParameters)
+ , m_compressedFormat (mapVkCompressedFormat(testParameters.format))
+ , m_texture3D (TestTexture3DSp(new pipeline::TestTexture3D(m_compressedFormat, testParameters.width, testParameters.height, testParameters.depth)))
+ , m_renderer3D (context, testParameters.sampleCount, testParameters.width, testParameters.height, testParameters.depth, makeComponentMappingRGBA(), VK_IMAGE_TYPE_3D, VK_IMAGE_VIEW_TYPE_3D)
+{
+ m_renderer3D.add3DTexture (m_texture3D, testParameters.aspectMask, testParameters.backingMode);
+
+ VkPhysicalDeviceFeatures physicalFeatures;
+ context.getInstanceInterface().getPhysicalDeviceFeatures(context.getPhysicalDevice(), &physicalFeatures);
+
+ if (tcu::isAstcFormat(m_compressedFormat))
{
- { VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK },
- { VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK },
- { VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK },
- { VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK },
- { VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK },
- { VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK },
-
- { VK_FORMAT_EAC_R11_UNORM_BLOCK },
- { VK_FORMAT_EAC_R11_SNORM_BLOCK },
- { VK_FORMAT_EAC_R11G11_UNORM_BLOCK },
- { VK_FORMAT_EAC_R11G11_SNORM_BLOCK },
-
- { VK_FORMAT_ASTC_4x4_UNORM_BLOCK },
- { VK_FORMAT_ASTC_4x4_SRGB_BLOCK },
- { VK_FORMAT_ASTC_5x4_UNORM_BLOCK },
- { VK_FORMAT_ASTC_5x4_SRGB_BLOCK },
- { VK_FORMAT_ASTC_5x5_UNORM_BLOCK },
- { VK_FORMAT_ASTC_5x5_SRGB_BLOCK },
- { VK_FORMAT_ASTC_6x5_UNORM_BLOCK },
- { VK_FORMAT_ASTC_6x5_SRGB_BLOCK },
- { VK_FORMAT_ASTC_6x6_UNORM_BLOCK },
- { VK_FORMAT_ASTC_6x6_SRGB_BLOCK },
- { VK_FORMAT_ASTC_8x5_UNORM_BLOCK },
- { VK_FORMAT_ASTC_8x5_SRGB_BLOCK },
- { VK_FORMAT_ASTC_8x6_UNORM_BLOCK },
- { VK_FORMAT_ASTC_8x6_SRGB_BLOCK },
- { VK_FORMAT_ASTC_8x8_UNORM_BLOCK },
- { VK_FORMAT_ASTC_8x8_SRGB_BLOCK },
- { VK_FORMAT_ASTC_10x5_UNORM_BLOCK },
- { VK_FORMAT_ASTC_10x5_SRGB_BLOCK },
- { VK_FORMAT_ASTC_10x6_UNORM_BLOCK },
- { VK_FORMAT_ASTC_10x6_SRGB_BLOCK },
- { VK_FORMAT_ASTC_10x8_UNORM_BLOCK },
- { VK_FORMAT_ASTC_10x8_SRGB_BLOCK },
- { VK_FORMAT_ASTC_10x10_UNORM_BLOCK },
- { VK_FORMAT_ASTC_10x10_SRGB_BLOCK },
- { VK_FORMAT_ASTC_12x10_UNORM_BLOCK },
- { VK_FORMAT_ASTC_12x10_SRGB_BLOCK },
- { VK_FORMAT_ASTC_12x12_UNORM_BLOCK },
- { VK_FORMAT_ASTC_12x12_SRGB_BLOCK },
-
- { VK_FORMAT_BC1_RGB_UNORM_BLOCK },
- { VK_FORMAT_BC1_RGB_SRGB_BLOCK },
- { VK_FORMAT_BC1_RGBA_UNORM_BLOCK },
- { VK_FORMAT_BC1_RGBA_SRGB_BLOCK },
- { VK_FORMAT_BC2_UNORM_BLOCK },
- { VK_FORMAT_BC2_SRGB_BLOCK },
- { VK_FORMAT_BC3_UNORM_BLOCK },
- { VK_FORMAT_BC3_SRGB_BLOCK },
- { VK_FORMAT_BC4_UNORM_BLOCK },
- { VK_FORMAT_BC4_SNORM_BLOCK },
- { VK_FORMAT_BC5_UNORM_BLOCK },
- { VK_FORMAT_BC5_SNORM_BLOCK },
- { VK_FORMAT_BC6H_UFLOAT_BLOCK },
- { VK_FORMAT_BC6H_SFLOAT_BLOCK },
- { VK_FORMAT_BC7_UNORM_BLOCK },
- { VK_FORMAT_BC7_SRGB_BLOCK }
- };
-
- static const struct {
- const int width;
- const int height;
- const char* name;
- } sizes[] =
+ if (!physicalFeatures.textureCompressionASTC_LDR)
+ throw tcu::NotSupportedError(std::string("Unsupported format: ") + getFormatName(testParameters.format));
+ }
+ else if (tcu::isEtcFormat(m_compressedFormat))
+ {
+ if (!physicalFeatures.textureCompressionETC2)
+ throw tcu::NotSupportedError(std::string("Unsupported format: ") + getFormatName(testParameters.format));
+ }
+ else if(tcu::isBcFormat(m_compressedFormat))
{
- { 128, 64, "pot" },
- { 51, 65, "npot" },
- };
-
- static const struct {
- const char* name;
- const TextureBinding::ImageBackingMode backingMode;
- } backingModes[] =
+ if (!physicalFeatures.textureCompressionBC)
+ throw tcu::NotSupportedError(std::string("Unsupported format: ") + getFormatName(testParameters.format));
+ }
+ else
{
- { "", TextureBinding::IMAGE_BACKING_MODE_REGULAR },
- { "_sparse", TextureBinding::IMAGE_BACKING_MODE_SPARSE }
- };
+ DE_FATAL("Unsupported compressed format");
+ }
+}
+
+tcu::TestStatus Compressed3DTestInstance::iterate (void)
+{
+ tcu::TestLog& log = m_context.getTestContext().getLog();
+ const pipeline::TestTexture3D& texture = m_renderer3D.get3DTexture(0);
+ const tcu::TextureFormat textureFormat = texture.getTextureFormat();
+ const tcu::TextureFormatInfo formatInfo = tcu::getTextureFormatInfo(textureFormat);
+
+ ReferenceParams sampleParams (TEXTURETYPE_3D);
+ tcu::Surface rendered (m_renderer3D.getRenderWidth(), m_renderer3D.getRenderHeight());
+ vector<float> texCoord;
+
+ // Setup params for reference.
+ sampleParams.sampler = util::createSampler(m_testParameters.wrapS, m_testParameters.wrapT, m_testParameters.minFilter, m_testParameters.magFilter);
+ sampleParams.samplerType = SAMPLERTYPE_FLOAT;
+ sampleParams.lodMode = LODMODE_EXACT;
+
+ if (isAstcFormat(m_compressedFormat)
+ || m_compressedFormat == tcu::COMPRESSEDTEXFORMAT_BC4_UNORM_BLOCK
+ || m_compressedFormat == tcu::COMPRESSEDTEXFORMAT_BC5_UNORM_BLOCK)
+ {
+ sampleParams.colorBias = tcu::Vec4(0.0f);
+ sampleParams.colorScale = tcu::Vec4(1.0f);
+ }
+ else if (m_compressedFormat == tcu::COMPRESSEDTEXFORMAT_BC4_SNORM_BLOCK)
+ {
+ sampleParams.colorBias = tcu::Vec4(0.5f, 0.0f, 0.0f, 0.0f);
+ sampleParams.colorScale = tcu::Vec4(0.5f, 1.0f, 1.0f, 1.0f);
+ }
+ else if (m_compressedFormat == tcu::COMPRESSEDTEXFORMAT_BC5_SNORM_BLOCK)
+ {
+ sampleParams.colorBias = tcu::Vec4(0.5f, 0.5f, 0.0f, 0.0f);
+ sampleParams.colorScale = tcu::Vec4(0.5f, 0.5f, 1.0f, 1.0f);
+ }
+ else
+ {
+ sampleParams.colorBias = formatInfo.lookupBias;
+ sampleParams.colorScale = formatInfo.lookupScale;
+ }
+
+ log << TestLog::Message << "Compare reference value = " << sampleParams.ref << TestLog::EndMessage;
+
+ constexpr deUint32 slices = 3;
+ deUint32 sliceNdx = 0;
+ float z = 0;
+ bool isOk = false;
+ const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
+ const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
+ tcu::RGBA threshold;
+
+ if (isBcBitExactFormat(m_compressedFormat))
+ threshold = tcu::RGBA(1, 1, 1, 1);
+ else if (isBcSRGBFormat(m_compressedFormat))
+ threshold = tcu::RGBA(9, 9, 9, 9);
+ else if (isBcFormat(m_compressedFormat))
+ threshold = tcu::RGBA(8, 8, 8, 8);
+ else
+ threshold = pixelFormat.getColorThreshold() + tcu::RGBA(2, 2, 2, 2);
+
+ for (deUint32 s = 0; s < slices; ++s)
+ {
+ // Test different slices of 3D texture.
+
+ sliceNdx = (m_testParameters.depth - 1) * s / (slices - 1);
+
+ // Render texture.
+ z = ((float)sliceNdx + 0.5f) / (float)m_testParameters.depth;
+ computeQuadTexCoord3D(texCoord, tcu::Vec3(0.0f, 0.0f, z), tcu::Vec3(1.0f, 1.0f, z), tcu::IVec3(0,1,2));
+ m_renderer3D.renderQuad(rendered, 0, &texCoord[0], sampleParams);
+
+ // Compute reference.
+ tcu::Surface referenceFrame (m_renderer3D.getRenderWidth(), m_renderer3D.getRenderHeight());
+ sampleTexture(tcu::SurfaceAccess(referenceFrame, pixelFormat), m_texture3D->getTexture(), &texCoord[0], sampleParams);
+
+ // Compare and log.
+ isOk = compareImages(log, referenceFrame, rendered, threshold);
+
+ if (!isOk)
+ break;
+ }
+
+ return isOk ? tcu::TestStatus::pass("Pass") : tcu::TestStatus::fail("Image verification failed");
+}
+
+void populateTextureCompressedFormatTests (tcu::TestCaseGroup* compressedTextureTests)
+{
+ tcu::TestContext& testCtx = compressedTextureTests->getTestContext();
for (int sizeNdx = 0; sizeNdx < DE_LENGTH_OF_ARRAY(sizes); sizeNdx++)
for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(formats); formatNdx++)
}
}
+void populate3DTextureCompressedFormatTests (tcu::TestCaseGroup* compressedTextureTests)
+{
+ tcu::TestContext& testCtx = compressedTextureTests->getTestContext();
+
+ for (int sizeNdx = 0; sizeNdx < DE_LENGTH_OF_ARRAY(sizes); ++sizeNdx)
+ for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(formats); ++formatNdx)
+ for (int backingNdx = 0; backingNdx < DE_LENGTH_OF_ARRAY(backingModes); ++backingNdx)
+ {
+ const string formatStr = de::toString(getFormatStr(formats[formatNdx].format));
+ const string nameBase = de::toLower(formatStr.substr(10));
+
+ Compressed3DTestParameters testParameters;
+ testParameters.format = formats[formatNdx].format;
+ testParameters.backingMode = backingModes[backingNdx].backingMode;
+ testParameters.width = sizes[sizeNdx].width;
+ testParameters.height = sizes[sizeNdx].height;
+ testParameters.depth = sizes[sizeNdx].depth;
+ testParameters.minFilter = tcu::Sampler::NEAREST;
+ testParameters.magFilter = tcu::Sampler::NEAREST;
+ testParameters.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
+ testParameters.programs.push_back(PROGRAM_3D_FLOAT);
+
+ compressedTextureTests->addChild(new TextureTestCase<Compressed3DTestInstance>(testCtx, (nameBase + "_3d_" + sizes[sizeNdx].name + backingModes[backingNdx].name).c_str(), (formatStr + ", TEXTURETYPE_3D").c_str(), testParameters));
+ }
+}
+
} // anonymous
tcu::TestCaseGroup* createTextureCompressedFormatTests (tcu::TestContext& testCtx)
return createTestGroup(testCtx, "compressed", "Texture compressed format tests.", populateTextureCompressedFormatTests);
}
+tcu::TestCaseGroup* create3DTextureCompressedFormatTests (tcu::TestContext& testCtx)
+{
+ return createTestGroup(testCtx, "compressed_3D", "3D texture compressed format tests.", populate3DTextureCompressedFormatTests);
+}
+
} // texture
} // vkt
namespace texture
{
-tcu::TestCaseGroup* createTextureCompressedFormatTests (tcu::TestContext& testCtx);
+tcu::TestCaseGroup* createTextureCompressedFormatTests (tcu::TestContext& testCtx);
+tcu::TestCaseGroup* create3DTextureCompressedFormatTests (tcu::TestContext& testCtx);
} // texture
} // vkt
const deUint16 TextureRenderer::s_vertexIndices[6] = { 0, 1, 2, 2, 1, 3 };
const VkDeviceSize TextureRenderer::s_vertexIndexBufferSize = sizeof(TextureRenderer::s_vertexIndices);
-TextureRenderer::TextureRenderer (Context& context, VkSampleCountFlagBits sampleCount, deUint32 renderWidth, deUint32 renderHeight, VkComponentMapping componentMapping)
+TextureRenderer::TextureRenderer(Context& context, vk::VkSampleCountFlagBits sampleCount, deUint32 renderWidth, deUint32 renderHeight, vk::VkComponentMapping componentMapping)
+ : TextureRenderer(context, sampleCount, renderWidth, renderHeight, 1u, componentMapping)
+{
+}
+
+TextureRenderer::TextureRenderer (Context& context, VkSampleCountFlagBits sampleCount, deUint32 renderWidth, deUint32 renderHeight, deUint32 renderDepth, VkComponentMapping componentMapping, VkImageType imageType, VkImageViewType imageViewType)
: m_context (context)
, m_log (context.getTestContext().getLog())
, m_renderWidth (renderWidth)
, m_renderHeight (renderHeight)
+ , m_renderDepth (renderDepth)
, m_sampleCount (sampleCount)
, m_multisampling (m_sampleCount != VK_SAMPLE_COUNT_1_BIT)
, m_imageFormat (VK_FORMAT_R8G8B8A8_UNORM)
if ((m_context.getInstanceInterface().getPhysicalDeviceImageFormatProperties(m_context.getPhysicalDevice(),
m_imageFormat,
- VK_IMAGE_TYPE_2D,
+ imageType,
VK_IMAGE_TILING_OPTIMAL,
imageUsage,
0,
const VkImageCreateInfo imageCreateInfo =
{
- VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0u, // VkImageCreateFlags flags;
- VK_IMAGE_TYPE_2D, // VkImageType imageType;
- m_imageFormat, // VkFormat format;
- { m_renderWidth, m_renderHeight, 1u }, // VkExtent3D extent;
- 1u, // deUint32 mipLevels;
- 1u, // deUint32 arrayLayers;
- m_sampleCount, // VkSampleCountFlagBits samples;
- VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling;
- imageUsage, // VkImageUsageFlags usage;
- VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode;
- 1u, // deUint32 queueFamilyIndexCount;
- &queueFamilyIndex, // const deUint32* pQueueFamilyIndices;
- VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout;
+ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 0u, // VkImageCreateFlags flags;
+ imageType, // VkImageType imageType;
+ m_imageFormat, // VkFormat format;
+ { m_renderWidth, m_renderHeight, m_renderDepth }, // VkExtent3D extent;
+ 1u, // deUint32 mipLevels;
+ 1u, // deUint32 arrayLayers;
+ m_sampleCount, // VkSampleCountFlagBits samples;
+ VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling;
+ imageUsage, // VkImageUsageFlags usage;
+ VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode;
+ 1u, // deUint32 queueFamilyIndexCount;
+ &queueFamilyIndex, // const deUint32* pQueueFamilyIndices;
+ VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout;
};
m_image = vk::createImage(vkd, vkDevice, &imageCreateInfo, DE_NULL);
DE_NULL, // const void* pNext;
0u, // VkImageViewCreateFlags flags;
*m_image, // VkImage image;
- VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType;
+ imageViewType, // VkImageViewType viewType;
m_imageFormat, // VkFormat format;
makeComponentMappingRGBA(), // VkComponentMapping components;
{
if ((m_context.getInstanceInterface().getPhysicalDeviceImageFormatProperties(m_context.getPhysicalDevice(),
m_imageFormat,
- VK_IMAGE_TYPE_2D,
+ imageType,
VK_IMAGE_TILING_OPTIMAL,
imageUsage,
0,
const VkImageCreateInfo imageCreateInfo =
{
- VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType;
- DE_NULL, // const void* pNext;
- 0u, // VkImageCreateFlags flags;
- VK_IMAGE_TYPE_2D, // VkImageType imageType;
- m_imageFormat, // VkFormat format;
- { m_renderWidth, m_renderHeight, 1u }, // VkExtent3D extent;
- 1u, // deUint32 mipLevels;
- 1u, // deUint32 arrayLayers;
- VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples;
- VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling;
- imageUsage, // VkImageUsageFlags usage;
- VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode;
- 1u, // deUint32 queueFamilyIndexCount;
- &queueFamilyIndex, // const deUint32* pQueueFamilyIndices;
- VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout;
+ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ 0u, // VkImageCreateFlags flags;
+ imageType, // VkImageType imageType;
+ m_imageFormat, // VkFormat format;
+ { m_renderWidth, m_renderHeight, m_renderDepth }, // VkExtent3D extent;
+ 1u, // deUint32 mipLevels;
+ 1u, // deUint32 arrayLayers;
+ VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples;
+ VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling;
+ imageUsage, // VkImageUsageFlags usage;
+ VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode;
+ 1u, // deUint32 queueFamilyIndexCount;
+ &queueFamilyIndex, // const deUint32* pQueueFamilyIndices;
+ VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout;
};
m_resolvedImage = vk::createImage(vkd, vkDevice, &imageCreateInfo, DE_NULL);
DE_NULL, // const void* pNext;
0u, // VkImageViewCreateFlags flags;
*m_resolvedImage, // VkImage image;
- VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType;
+ imageViewType, // VkImageViewType viewType;
m_imageFormat, // VkFormat format;
makeComponentMappingRGBA(), // VkComponentMapping components;
{
class TextureRenderer
{
public:
- TextureRenderer (Context& context, vk::VkSampleCountFlagBits sampleCount, deUint32 renderWidth, deUint32 renderHeight, vk::VkComponentMapping componentMapping = vk::makeComponentMappingRGBA());
+ TextureRenderer (Context& context,
+ vk::VkSampleCountFlagBits sampleCount,
+ deUint32 renderWidth,
+ deUint32 renderHeight,
+ vk::VkComponentMapping componentMapping = vk::makeComponentMappingRGBA());
+
+ TextureRenderer (Context& context,
+ vk::VkSampleCountFlagBits sampleCount,
+ deUint32 renderWidth,
+ deUint32 renderHeight,
+ deUint32 renderDepth,
+ vk::VkComponentMapping componentMapping = vk::makeComponentMappingRGBA(),
+ vk::VkImageType imageType = vk::VK_IMAGE_TYPE_2D,
+ vk::VkImageViewType imageViewType = vk::VK_IMAGE_VIEW_TYPE_2D);
+
~TextureRenderer (void);
void renderQuad (tcu::Surface& result, int texUnit, const float* texCoord, glu::TextureTestUtil::TextureType texType);
const deUint32 m_renderWidth;
const deUint32 m_renderHeight;
+ const deUint32 m_renderDepth;
const vk::VkSampleCountFlagBits m_sampleCount;
const deBool m_multisampling;
textureTests->addChild(createTextureShadowTests (testCtx));
textureTests->addChild(createFilteringAnisotropyTests (testCtx));
textureTests->addChild(createTextureCompressedFormatTests (testCtx));
+ textureTests->addChild(create3DTextureCompressedFormatTests (testCtx));
textureTests->addChild(createTextureSwizzleTests (testCtx));
textureTests->addChild(createTextureSubgroupLodTests (testCtx));
textureTests->addChild(createTextureConversionTests (testCtx));
dEQP-VK.texture.compressed.bc7_unorm_block_2d_npot_sparse
dEQP-VK.texture.compressed.bc7_srgb_block_2d_npot
dEQP-VK.texture.compressed.bc7_srgb_block_2d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_pot
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_pot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a1_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.etc2_r8g8b8a8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11g11_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.eac_r11g11_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_4x4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_4x4_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x4_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_5x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_6x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_8x8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x5_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x6_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x6_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x8_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x8_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x10_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_10x10_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x10_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x10_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x12_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.astc_12x12_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgb_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgb_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgba_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc1_rgba_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc2_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc2_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc3_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc3_srgb_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc4_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc4_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc5_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc5_snorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc6h_ufloat_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc6h_sfloat_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_npot_sparse
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_npot
+dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_npot_sparse
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_zzzz
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_oooo
dEQP-VK.texture.swizzle.component_mapping.r4g4_unorm_pack8_2d_pot_rrrr