Test minimum alignment for texel buffers.
authorJeff Bolz <jbolz@nvidia.com>
Wed, 5 Jun 2019 20:08:53 +0000 (15:08 -0500)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Wed, 18 Sep 2019 19:58:20 +0000 (15:58 -0400)
For https://gitlab.khronos.org/vulkan/vulkan/issues/1705

If VK_EXT_texel_buffer_alignment is supported, compute the alignment for the
format, else use minTexelBufferOffsetAlignment.

Always use the minimum alignment for texel buffers in shader access tests.
Add variants of image load/store tests that use single texel alignment.

Components: Vulkan
Affects: dEQP-VK.binding_model.*offset_nonzero*
Affects: dEQP-VK.image*store*buffer*

Change-Id: I160c91b8c98ee4d518924e00e02770626763934c

android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp
external/vulkancts/modules/vulkan/image/vktImageLoadStoreTests.cpp
external/vulkancts/modules/vulkan/image/vktImageTestsUtil.cpp
external/vulkancts/modules/vulkan/image/vktImageTestsUtil.hpp
external/vulkancts/mustpass/master/vk-default-no-waivers.txt
external/vulkancts/mustpass/master/vk-default.txt

index e399b03..ac29e21 100644 (file)
@@ -353691,44 +353691,83 @@ dEQP-VK.image.store.with_format.cube_array.r8g8_snorm_single_layer
 dEQP-VK.image.store.with_format.cube_array.r8_snorm
 dEQP-VK.image.store.with_format.cube_array.r8_snorm_single_layer
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32_uint
+dEQP-VK.image.store.with_format.buffer.r32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r32_sint
+dEQP-VK.image.store.with_format.buffer.r32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.store.with_format.buffer.b10g11r11_ufloat_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32g32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16g16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.store.with_format.buffer.a2b10g10r10_uint_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_uint
+dEQP-VK.image.store.with_format.buffer.r32g32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_uint
+dEQP-VK.image.store.with_format.buffer.r16g16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16_uint
+dEQP-VK.image.store.with_format.buffer.r16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_uint
+dEQP-VK.image.store.with_format.buffer.r8g8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8_uint
+dEQP-VK.image.store.with_format.buffer.r8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_sint
+dEQP-VK.image.store.with_format.buffer.r32g32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_sint
+dEQP-VK.image.store.with_format.buffer.r16g16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16_sint
+dEQP-VK.image.store.with_format.buffer.r16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_sint
+dEQP-VK.image.store.with_format.buffer.r8g8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8_sint
+dEQP-VK.image.store.with_format.buffer.r8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_unorm
+dEQP-VK.image.store.with_format.buffer.r16g16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16_unorm
+dEQP-VK.image.store.with_format.buffer.r16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_unorm
+dEQP-VK.image.store.with_format.buffer.r8g8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8_unorm
+dEQP-VK.image.store.with_format.buffer.r8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_snorm
+dEQP-VK.image.store.with_format.buffer.r16g16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16_snorm
+dEQP-VK.image.store.with_format.buffer.r16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_snorm
+dEQP-VK.image.store.with_format.buffer.r8g8_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8_snorm
+dEQP-VK.image.store.with_format.buffer.r8_snorm_minalign
 dEQP-VK.image.store.without_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.store.without_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.store.without_format.1d.r32_sfloat
@@ -354003,44 +354042,83 @@ dEQP-VK.image.store.without_format.cube_array.r16_snorm
 dEQP-VK.image.store.without_format.cube_array.r8g8_snorm
 dEQP-VK.image.store.without_format.cube_array.r8_snorm
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32_uint
+dEQP-VK.image.store.without_format.buffer.r32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r32_sint
+dEQP-VK.image.store.without_format.buffer.r32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.store.without_format.buffer.b10g11r11_ufloat_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32g32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16g16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.store.without_format.buffer.a2b10g10r10_uint_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_uint
+dEQP-VK.image.store.without_format.buffer.r32g32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_uint
+dEQP-VK.image.store.without_format.buffer.r16g16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16_uint
+dEQP-VK.image.store.without_format.buffer.r16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_uint
+dEQP-VK.image.store.without_format.buffer.r8g8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8_uint
+dEQP-VK.image.store.without_format.buffer.r8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_sint
+dEQP-VK.image.store.without_format.buffer.r32g32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_sint
+dEQP-VK.image.store.without_format.buffer.r16g16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16_sint
+dEQP-VK.image.store.without_format.buffer.r16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_sint
+dEQP-VK.image.store.without_format.buffer.r8g8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8_sint
+dEQP-VK.image.store.without_format.buffer.r8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_unorm
+dEQP-VK.image.store.without_format.buffer.r16g16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16_unorm
+dEQP-VK.image.store.without_format.buffer.r16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_unorm
+dEQP-VK.image.store.without_format.buffer.r8g8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8_unorm
+dEQP-VK.image.store.without_format.buffer.r8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_snorm
+dEQP-VK.image.store.without_format.buffer.r16g16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16_snorm
+dEQP-VK.image.store.without_format.buffer.r16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_snorm
+dEQP-VK.image.store.without_format.buffer.r8g8_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8_snorm
+dEQP-VK.image.store.without_format.buffer.r8_snorm_minalign
 dEQP-VK.image.load_store.with_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.load_store.with_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.load_store.with_format.1d.r32_sfloat
@@ -354471,44 +354549,122 @@ dEQP-VK.image.load_store.with_format.cube_array.r8g8_snorm_single_layer
 dEQP-VK.image.load_store.with_format.cube_array.r8_snorm
 dEQP-VK.image.load_store.with_format.cube_array.r8_snorm_single_layer
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32g32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16g16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8g8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8g8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.load_store.without_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.load_store.without_format.1d.r32_sfloat
@@ -354783,44 +354939,146 @@ dEQP-VK.image.load_store.without_format.cube_array.r16_snorm
 dEQP-VK.image.load_store.without_format.cube_array.r8g8_snorm
 dEQP-VK.image.load_store.without_format.cube_array.r8_snorm
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32g32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16g16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8g8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8g8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_unorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_unorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_snorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_unorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_unorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_snorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sfloat_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sfloat_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sfloat_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sfloat_minalign_uniform
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_2
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_4
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_8
index 22129dd..7de0907 100644 (file)
@@ -7520,7 +7520,8 @@ vkt::TestInstance* ImageDescriptorCase::createInstance (vkt::Context& context) c
 class TexelBufferInstanceBuffers
 {
 public:
-                                                                                       TexelBufferInstanceBuffers      (const vk::DeviceInterface&                                             vki,
+                                                                                       TexelBufferInstanceBuffers      (vkt::Context&                                                                  context,
+                                                                                                                                                const vk::DeviceInterface&                                             vki,
                                                                                                                                                 vk::VkDevice                                                                   device,
                                                                                                                                                 vk::Allocator&                                                                 allocator,
                                                                                                                                                 vk::VkDescriptorType                                                   descriptorType,
@@ -7582,6 +7583,10 @@ private:
                                                                                                                                                         const vk::Allocation&                                                  memory,
                                                                                                                                                         const de::ArrayBuffer<deUint8>&                                data);
 
+       deUint32                                                                                getViewOffset                   (vkt::Context&                                                                  context,
+                                                                                                                                                        bool                                                                                   hasViewOffset,
+                                                                                                                                                        vk::VkDescriptorType                                                   descriptorType);
+
 public:
        static int                                                              getFetchPos                                     (int fetchPosNdx);
        tcu::Vec4                                                               fetchTexelValue                         (int fetchPosNdx, int setNdx) const;
@@ -7596,7 +7601,6 @@ private:
        enum
        {
                BUFFER_SIZE                     = 512,
-               VIEW_OFFSET_VALUE       = 256,
                VIEW_DATA_SIZE          = 256,  //!< size in bytes
                VIEW_WIDTH                      = 64,   //!< size in pixels
        };
@@ -7623,7 +7627,41 @@ private:
        const std::vector<vk::VkBufferMemoryBarrier>    m_bufferBarrier;
 };
 
-TexelBufferInstanceBuffers::TexelBufferInstanceBuffers (const vk::DeviceInterface&             vki,
+deUint32 TexelBufferInstanceBuffers::getViewOffset(vkt::Context&               context,
+                                                                                                  bool                                 hasViewOffset,
+                                                                                                  vk::VkDescriptorType descriptorType)
+{
+       if (!hasViewOffset)
+               return 0u;
+
+       if (!context.getTexelBufferAlignmentFeatures().texelBufferAlignment)
+               return (deUint32)context.getDeviceProperties().limits.minTexelBufferOffsetAlignment;
+
+       vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT alignmentProperties;
+       deMemset(&alignmentProperties, 0, sizeof(alignmentProperties));
+       alignmentProperties.sType = vk::VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT;
+
+       vk::VkPhysicalDeviceProperties2 properties2;
+       deMemset(&properties2, 0, sizeof(properties2));
+       properties2.sType = vk::VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
+       properties2.pNext = &alignmentProperties;
+
+       context.getInstanceInterface().getPhysicalDeviceProperties2(context.getPhysicalDevice(), &properties2);
+
+       vk::VkBool32 singleTexelAlignment = isUniformDescriptorType(descriptorType) ? alignmentProperties.uniformTexelBufferOffsetSingleTexelAlignment :
+                                                                                                                                                                 alignmentProperties.storageTexelBufferOffsetSingleTexelAlignment;
+       vk::VkDeviceSize align = isUniformDescriptorType(descriptorType) ? alignmentProperties.uniformTexelBufferOffsetAlignmentBytes :
+                                                                                                                                          alignmentProperties.storageTexelBufferOffsetAlignmentBytes;
+
+       // format is rgba8
+       if (singleTexelAlignment)
+        return de::min(4u, (deUint32)align);
+       else
+               return (deUint32)align;
+}
+
+TexelBufferInstanceBuffers::TexelBufferInstanceBuffers (vkt::Context&                                  context,
+                                                                                                               const vk::DeviceInterface&              vki,
                                                                                                                vk::VkDevice                                    device,
                                                                                                                vk::Allocator&                                  allocator,
                                                                                                                vk::VkDescriptorType                    descriptorType,
@@ -7633,7 +7671,7 @@ TexelBufferInstanceBuffers::TexelBufferInstanceBuffers (const vk::DeviceInterfac
        : m_numTexelBuffers     (getInterfaceNumResources(shaderInterface) * getDescriptorSetCount(descriptorSetCount))
        , m_imageFormat         (tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8)
        , m_shaderInterface (shaderInterface)
-       , m_viewOffset          ((hasViewOffset) ? ((deUint32)VIEW_OFFSET_VALUE) : (0u))
+       , m_viewOffset          (getViewOffset(context, hasViewOffset, descriptorType))
        , m_sourceBuffer        (createSourceBuffers(m_imageFormat, m_numTexelBuffers))
        , m_sourceView          (createSourceViews(m_sourceBuffer, m_imageFormat, m_numTexelBuffers, m_viewOffset))
        , m_bufferMemory        ()
@@ -7963,7 +8001,7 @@ TexelBufferRenderInstance::TexelBufferRenderInstance (vkt::Context&                                       context,
        , m_updateBuilder                       ()
        , m_descriptorSetLayouts        (createDescriptorSetLayouts(m_vki, m_device, m_descriptorType, m_descriptorSetCount, m_shaderInterface, m_stageFlags, m_updateMethod))
        , m_pipelineLayout                      (createPipelineLayout(m_vki, m_device, m_descriptorSetLayouts))
-       , m_texelBuffers                        (m_vki, m_device, m_allocator, m_descriptorType, m_descriptorSetCount, m_shaderInterface, m_nonzeroViewOffset)
+       , m_texelBuffers                        (context, m_vki, m_device, m_allocator, m_descriptorType, m_descriptorSetCount, m_shaderInterface, m_nonzeroViewOffset)
        , m_descriptorPool                      (createDescriptorPool(m_vki, m_device, m_descriptorType, m_descriptorSetCount, m_shaderInterface))
        , m_descriptorsPerSet           ()
        , m_descriptorSets                      (createDescriptorSets(m_vki, m_updateMethod, m_device, m_descriptorType, m_descriptorSetCount, m_shaderInterface, m_descriptorSetLayouts, *m_descriptorPool, m_texelBuffers, m_updateBuilder, m_updateTemplates, m_updateRegistry, m_descriptorsPerSet, *m_pipelineLayout))
@@ -8500,7 +8538,7 @@ TexelBufferComputeInstance::TexelBufferComputeInstance (Context&                                  context,
        , m_allocator                   (context.getDefaultAllocator())
        , m_updateTemplates             ()
        , m_result                              (m_vki, m_device, m_allocator)
-       , m_texelBuffers                (m_vki, m_device, m_allocator, m_descriptorType, m_descriptorSetCount, m_shaderInterface, m_nonzeroViewOffset)
+       , m_texelBuffers                (context, m_vki, m_device, m_allocator, m_descriptorType, m_descriptorSetCount, m_shaderInterface, m_nonzeroViewOffset)
        , m_updateRegistry              ()
        , m_updateBuilder               ()
        , m_descriptorsPerSet   ()
index f4abfa6..c5b112e 100644 (file)
@@ -63,6 +63,20 @@ namespace image
 namespace
 {
 
+// Check for three-component (non-packed) format, i.e. pixel size is a multiple of 3.
+bool formatHasThreeComponents(VkFormat format)
+{
+       const tcu::TextureFormat texFormat = mapVkFormat(format);
+       return (getPixelSize(texFormat) % 3) == 0;
+}
+
+VkFormat getSingleComponentFormat(VkFormat format)
+{
+       tcu::TextureFormat texFormat = mapVkFormat(format);
+       texFormat = tcu::TextureFormat(tcu::TextureFormat::R, texFormat.type);
+       return mapTextureFormat(texFormat);
+}
+
 inline VkBufferImageCopy makeBufferImageCopy (const Texture& texture)
 {
        return image::makeBufferImageCopy(makeExtent3D(texture.layerSize()), texture.numLayers());
@@ -357,6 +371,7 @@ public:
        {
                FLAG_SINGLE_LAYER_BIND                          = 0x1,  //!< Run the shader multiple times, each time binding a different layer.
                FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER     = 0x2,  //!< Declare the format of the images in the shader code
+               FLAG_MINALIGN                                           = 0x4,  //!< Use bufferview offset that matches the advertised minimum alignment
        };
 
                                                        StoreTest                       (tcu::TestContext&      testCtx,
@@ -375,6 +390,7 @@ private:
        const VkFormat                  m_format;
        const bool                              m_declareImageFormatInShader;
        const bool                              m_singleLayerBind;
+       const bool                              m_minalign;
 };
 
 StoreTest::StoreTest (tcu::TestContext&                testCtx,
@@ -388,6 +404,7 @@ StoreTest::StoreTest (tcu::TestContext&             testCtx,
        , m_format                                              (format)
        , m_declareImageFormatInShader  ((flags & FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER) != 0)
        , m_singleLayerBind                             ((flags & FLAG_SINGLE_LAYER_BIND) != 0)
+       , m_minalign                                    ((flags & FLAG_MINALIGN) != 0)
 {
        if (m_singleLayerBind)
                DE_ASSERT(m_texture.numLayers() > 1);
@@ -482,33 +499,30 @@ void StoreTest::initPrograms (SourceCollections& programCollection) const
        const std::string formatQualifierStr = getShaderImageFormatQualifier(mapVkFormat(m_format));
        const std::string imageTypeStr = getShaderImageType(mapVkFormat(m_format), usedImageType);
 
-       for (deUint32 variant = 0; variant <= 1; variant++)
-       {
-               std::ostringstream src;
-               src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_440) << "\n"
-                       << "\n"
-                       << "layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;\n";
-               if (variant == 0)
-                       src << "layout (binding = 0, " << formatQualifierStr << ") writeonly uniform " << imageTypeStr << " u_image;\n";
-               else
-                       src << "layout (binding = 0) writeonly uniform " << imageTypeStr << " u_image;\n";
-
-               if (m_singleLayerBind)
-                       src << "layout (binding = 1) readonly uniform Constants {\n"
-                               << "    int u_layerNdx;\n"
-                               << "};\n";
-
-               src << "\n"
-                       << "void main (void)\n"
-                       << "{\n"
-                       << "    int gx = int(gl_GlobalInvocationID.x);\n"
-                       << "    int gy = int(gl_GlobalInvocationID.y);\n"
-                       << "    int gz = " << (m_singleLayerBind ? "u_layerNdx" : "int(gl_GlobalInvocationID.z)") << ";\n"
-                       << "    imageStore(u_image, " << texelCoordStr << ", " << colorExpr << ");\n"
-                       << "}\n";
-
-               programCollection.glslSources.add(variant == 0 ? "comp" : "comp_fmt_unknown") << glu::ComputeSource(src.str());
-       }
+       std::ostringstream src;
+       src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_440) << "\n"
+               << "\n"
+               << "layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;\n";
+       if (m_declareImageFormatInShader)
+               src << "layout (binding = 0, " << formatQualifierStr << ") writeonly uniform " << imageTypeStr << " u_image;\n";
+       else
+               src << "layout (binding = 0) writeonly uniform " << imageTypeStr << " u_image;\n";
+
+       if (m_singleLayerBind)
+               src << "layout (binding = 1) readonly uniform Constants {\n"
+                       << "    int u_layerNdx;\n"
+                       << "};\n";
+
+       src << "\n"
+               << "void main (void)\n"
+               << "{\n"
+               << "    int gx = int(gl_GlobalInvocationID.x);\n"
+               << "    int gy = int(gl_GlobalInvocationID.y);\n"
+               << "    int gz = " << (m_singleLayerBind ? "u_layerNdx" : "int(gl_GlobalInvocationID.z)") << ";\n"
+               << "    imageStore(u_image, " << texelCoordStr << ", " << colorExpr << ");\n"
+               << "}\n";
+
+       programCollection.glslSources.add("comp") << glu::ComputeSource(src.str());
 }
 
 //! Generic test iteration algorithm for image tests
@@ -519,7 +533,9 @@ public:
                                                                                                                                                         const Texture& texture,
                                                                                                                                                         const VkFormat format,
                                                                                                                                                         const bool             declareImageFormatInShader,
-                                                                                                                                                        const bool             singleLayerBind);
+                                                                                                                                                        const bool             singleLayerBind,
+                                                                                                                                                        const bool             minalign,
+                                                                                                                                                        const bool             bufferLoadUniform);
 
        tcu::TestStatus                                 iterate                                                                 (void);
 
@@ -536,19 +552,30 @@ protected:
        virtual void                                    commandBindDescriptorsForLayer                  (const VkCommandBuffer  cmdBuffer,
                                                                                                                                                         const VkPipelineLayout pipelineLayout,
                                                                                                                                                         const int                              layerNdx) = 0;
+       virtual deUint32                                getViewOffset                                                   (Context&               context,
+                                                                                                                                                        const VkFormat format,
+                                                                                                                                                        bool                   uniform);
 
        const Texture                                   m_texture;
        const VkFormat                                  m_format;
        const bool                                              m_declareImageFormatInShader;
        const bool                                              m_singleLayerBind;
+       const bool                                              m_minalign;
+       const bool                                              m_bufferLoadUniform;
+       const deUint32                                  m_srcViewOffset;
+       const deUint32                                  m_dstViewOffset;
 };
 
-BaseTestInstance::BaseTestInstance (Context& context, const Texture& texture, const VkFormat format, const bool declareImageFormatInShader, const bool singleLayerBind)
+BaseTestInstance::BaseTestInstance (Context& context, const Texture& texture, const VkFormat format, const bool declareImageFormatInShader, const bool singleLayerBind, const bool minalign, const bool bufferLoadUniform)
        : TestInstance                                  (context)
        , m_texture                                             (texture)
        , m_format                                              (format)
        , m_declareImageFormatInShader  (declareImageFormatInShader)
        , m_singleLayerBind                             (singleLayerBind)
+       , m_minalign                                    (minalign)
+       , m_bufferLoadUniform                   (bufferLoadUniform)
+       , m_srcViewOffset                               (getViewOffset(context, format, m_bufferLoadUniform))
+       , m_dstViewOffset                               (getViewOffset(context, formatHasThreeComponents(format) ? getSingleComponentFormat(format) : format, false))
 {
 }
 
@@ -559,7 +586,7 @@ tcu::TestStatus BaseTestInstance::iterate (void)
        const VkQueue                                   queue                           = m_context.getUniversalQueue();
        const deUint32                                  queueFamilyIndex        = m_context.getUniversalQueueFamilyIndex();
 
-       const Unique<VkShaderModule> shaderModule(createShaderModule(vk, device, m_context.getBinaryCollection().get(m_declareImageFormatInShader ? "comp" : "comp_fmt_unknown"), 0));
+       const Unique<VkShaderModule> shaderModule(createShaderModule(vk, device, m_context.getBinaryCollection().get("comp"), 0));
 
        const VkDescriptorSetLayout descriptorSetLayout = prepareDescriptors();
        const Unique<VkPipelineLayout> pipelineLayout(makePipelineLayout(vk, device, descriptorSetLayout));
@@ -602,7 +629,8 @@ public:
                                                                                                                                                         const Texture& texture,
                                                                                                                                                         const VkFormat format,
                                                                                                                                                         const bool             declareImageFormatInShader,
-                                                                                                                                                        const bool             singleLayerBind);
+                                                                                                                                                        const bool             singleLayerBind,
+                                                                                                                                                        const bool             minalign);
 
 protected:
        tcu::TestStatus                                 verifyResult                                                    (void);
@@ -616,8 +644,44 @@ protected:
        const VkDeviceSize                              m_imageSizeBytes;
 };
 
-StoreTestInstance::StoreTestInstance (Context& context, const Texture& texture, const VkFormat format, const bool declareImageFormatInShader, const bool singleLayerBind)
-       : BaseTestInstance              (context, texture, format, declareImageFormatInShader, singleLayerBind)
+deUint32 BaseTestInstance::getViewOffset(Context&                      context,
+                                                                                const VkFormat         format,
+                                                                                bool                           uniform)
+{
+       if (m_minalign)
+       {
+               if (!context.getTexelBufferAlignmentFeatures().texelBufferAlignment)
+                       return (deUint32)context.getDeviceProperties().limits.minTexelBufferOffsetAlignment;
+
+               VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT alignmentProperties;
+               deMemset(&alignmentProperties, 0, sizeof(alignmentProperties));
+               alignmentProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT;
+
+               VkPhysicalDeviceProperties2 properties2;
+               deMemset(&properties2, 0, sizeof(properties2));
+               properties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
+               properties2.pNext = &alignmentProperties;
+
+               context.getInstanceInterface().getPhysicalDeviceProperties2(context.getPhysicalDevice(), &properties2);
+
+               VkBool32 singleTexelAlignment = uniform ? alignmentProperties.uniformTexelBufferOffsetSingleTexelAlignment :
+                                                                                                 alignmentProperties.storageTexelBufferOffsetSingleTexelAlignment;
+               VkDeviceSize align = uniform ? alignmentProperties.uniformTexelBufferOffsetAlignmentBytes :
+                                                                          alignmentProperties.storageTexelBufferOffsetAlignmentBytes;
+
+               VkDeviceSize texelSize = formatHasThreeComponents(format) ? tcu::getChannelSize(vk::mapVkFormat(format).type) : tcu::getPixelSize(vk::mapVkFormat(format));
+
+               if (singleTexelAlignment)
+                       align = de::min(align, texelSize);
+
+               return (deUint32)align;
+       }
+
+       return 0;
+}
+
+StoreTestInstance::StoreTestInstance (Context& context, const Texture& texture, const VkFormat format, const bool declareImageFormatInShader, const bool singleLayerBind, const bool minalign)
+       : BaseTestInstance              (context, texture, format, declareImageFormatInShader, singleLayerBind, minalign, false)
        , m_imageSizeBytes              (getImageSizeBytes(texture.size(), format))
 {
        const DeviceInterface&  vk                      = m_context.getDeviceInterface();
@@ -628,7 +692,7 @@ StoreTestInstance::StoreTestInstance (Context& context, const Texture& texture,
 
        m_imageBuffer = de::MovePtr<Buffer>(new Buffer(
                vk, device, allocator,
-               makeBufferCreateInfo(m_imageSizeBytes, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT),
+               makeBufferCreateInfo(m_imageSizeBytes + m_dstViewOffset, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT),
                MemoryRequirement::HostVisible));
 }
 
@@ -642,7 +706,7 @@ tcu::TestStatus StoreTestInstance::verifyResult     (void)
 
        const Allocation& alloc = m_imageBuffer->getAllocation();
        invalidateAlloc(vk, device, alloc);
-       const tcu::ConstPixelBufferAccess result(mapVkFormat(m_format), imageSize, alloc.getHostPtr());
+       const tcu::ConstPixelBufferAccess result(mapVkFormat(m_format), imageSize, (const char *)alloc.getHostPtr() + m_dstViewOffset);
 
        if (comparePixelBuffers(m_context.getTestContext().getLog(), m_texture, m_format, reference.getAccess(), result))
                return tcu::TestStatus::pass("Passed");
@@ -658,7 +722,8 @@ public:
                                                                                                                                                                 const Texture&                 texture,
                                                                                                                                                                 const VkFormat                 format,
                                                                                                                                                                 const bool                             declareImageFormatInShader,
-                                                                                                                                                                const bool                             singleLayerBind);
+                                                                                                                                                                const bool                             singleLayerBind,
+                                                                                                                                                                const bool                             minalign);
 
 protected:
        VkDescriptorSetLayout                           prepareDescriptors                                              (void);
@@ -683,8 +748,9 @@ ImageStoreTestInstance::ImageStoreTestInstance (Context&            context,
                                                                                                const Texture&  texture,
                                                                                                const VkFormat  format,
                                                                                                const bool              declareImageFormatInShader,
-                                                                                               const bool              singleLayerBind)
-       : StoreTestInstance                                     (context, texture, format, declareImageFormatInShader, singleLayerBind)
+                                                                                               const bool              singleLayerBind,
+                                                                                               const bool              minalign)
+       : StoreTestInstance                                     (context, texture, format, declareImageFormatInShader, singleLayerBind, minalign)
        , m_constantsBufferChunkSizeBytes       (getOptimalUniformBufferChunkSize(context.getInstanceInterface(), context.getPhysicalDevice(), sizeof(deUint32)))
        , m_allDescriptorSets                           (texture.numLayers())
        , m_allImageViews                                       (texture.numLayers())
@@ -816,7 +882,8 @@ public:
                                                                        BufferStoreTestInstance                                 (Context&                               context,
                                                                                                                                                         const Texture&                 texture,
                                                                                                                                                         const VkFormat                 format,
-                                                                                                                                                        const bool                             declareImageFormatInShader);
+                                                                                                                                                        const bool                             declareImageFormatInShader,
+                                                                                                                                                        const bool                             minalign);
 
 protected:
        VkDescriptorSetLayout                   prepareDescriptors                                              (void);
@@ -835,8 +902,9 @@ protected:
 BufferStoreTestInstance::BufferStoreTestInstance (Context&                     context,
                                                                                                  const Texture&        texture,
                                                                                                  const VkFormat        format,
-                                                                                                 const bool            declareImageFormatInShader)
-       : StoreTestInstance(context, texture, format, declareImageFormatInShader, false)
+                                                                                                 const bool            declareImageFormatInShader,
+                                                                                                 const bool            minalign)
+       : StoreTestInstance(context, texture, format, declareImageFormatInShader, false, minalign)
 {
 }
 
@@ -854,7 +922,7 @@ VkDescriptorSetLayout BufferStoreTestInstance::prepareDescriptors (void)
                .build(vk, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
 
        m_descriptorSet = makeDescriptorSet(vk, device, *m_descriptorPool, *m_descriptorSetLayout);
-       m_bufferView = makeBufferView(vk, device, m_imageBuffer->get(), m_format, 0ull, m_imageSizeBytes);
+       m_bufferView = makeBufferView(vk, device, m_imageBuffer->get(), m_format, m_dstViewOffset, m_imageSizeBytes);
 
        return *m_descriptorSetLayout;  // not passing the ownership
 }
@@ -875,7 +943,7 @@ void BufferStoreTestInstance::commandBindDescriptorsForLayer (const VkCommandBuf
 
 void BufferStoreTestInstance::commandAfterCompute (const VkCommandBuffer cmdBuffer)
 {
-       commandBufferWriteBarrierBeforeHostRead(m_context, cmdBuffer, m_imageBuffer->get(), m_imageSizeBytes);
+       commandBufferWriteBarrierBeforeHostRead(m_context, cmdBuffer, m_imageBuffer->get(), m_imageSizeBytes + m_dstViewOffset);
 }
 
 class LoadStoreTest : public TestCase
@@ -886,6 +954,8 @@ public:
                FLAG_SINGLE_LAYER_BIND                          = 1 << 0,       //!< Run the shader multiple times, each time binding a different layer.
                FLAG_RESTRICT_IMAGES                            = 1 << 1,       //!< If given, images in the shader will be qualified with "restrict".
                FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER     = 1 << 2,       //!< Declare the format of the images in the shader code
+               FLAG_MINALIGN                                           = 1 << 3,       //!< Use bufferview offset that matches the advertised minimum alignment
+               FLAG_UNIFORM_TEXEL_BUFFER                       = 1 << 4,       //!< Load from a uniform texel buffer rather than a storage texel buffer
        };
 
                                                        LoadStoreTest                   (tcu::TestContext&              testCtx,
@@ -907,6 +977,8 @@ private:
        const bool                              m_declareImageFormatInShader;   //!< Whether the shader will specify the format layout qualifier of the images
        const bool                              m_singleLayerBind;
        const bool                              m_restrictImages;
+       const bool                              m_minalign;
+       bool                                    m_bufferLoadUniform;
 };
 
 LoadStoreTest::LoadStoreTest (tcu::TestContext&                testCtx,
@@ -923,6 +995,8 @@ LoadStoreTest::LoadStoreTest (tcu::TestContext&             testCtx,
        , m_declareImageFormatInShader  ((flags & FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER) != 0)
        , m_singleLayerBind                             ((flags & FLAG_SINGLE_LAYER_BIND) != 0)
        , m_restrictImages                              ((flags & FLAG_RESTRICT_IMAGES) != 0)
+       , m_minalign                                    ((flags & FLAG_MINALIGN) != 0)
+       , m_bufferLoadUniform                   ((flags & FLAG_UNIFORM_TEXEL_BUFFER) != 0)
 {
        if (m_singleLayerBind)
                DE_ASSERT(m_texture.numLayers() > 1);
@@ -939,7 +1013,7 @@ void LoadStoreTest::checkSupport (Context& context) const
                                                                                                                                                                                           context.getPhysicalDevice(),
                                                                                                                                                                                           m_imageFormat));
 
-       if (!m_declareImageFormatInShader)
+       if (!m_bufferLoadUniform && !m_declareImageFormatInShader)
                context.requireDeviceCoreFeature(DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_READ_WITHOUT_FORMAT);
 
        if (m_texture.type() == IMAGE_TYPE_CUBE_ARRAY)
@@ -956,49 +1030,99 @@ void LoadStoreTest::checkSupport (Context& context) const
 
        if ((m_texture.type() == IMAGE_TYPE_BUFFER) && !(imageFormatProperties.bufferFeatures))
                TCU_THROW(NotSupportedError, "Underlying format not supported at all for buffers");
+
+    if (formatHasThreeComponents(m_format))
+       {
+               // When the source buffer is three-component, the destination buffer is single-component.
+               VkFormat dstFormat = getSingleComponentFormat(m_format);
+               const vk::VkFormatProperties    dstFormatProperties     (vk::getPhysicalDeviceFormatProperties(context.getInstanceInterface(),
+                                                                                                                                                                                                  context.getPhysicalDevice(),
+                                                                                                                                                                                                  dstFormat));
+
+               if (m_texture.type() == IMAGE_TYPE_BUFFER && !(dstFormatProperties.bufferFeatures & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT))
+                       TCU_THROW(NotSupportedError, "Format not supported for storage texel buffers");
+       }
+       else
+               if (m_texture.type() == IMAGE_TYPE_BUFFER && !(formatProperties.bufferFeatures & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT))
+                       TCU_THROW(NotSupportedError, "Format not supported for storage texel buffers");
+
+       if (m_bufferLoadUniform && m_texture.type() == IMAGE_TYPE_BUFFER && !(formatProperties.bufferFeatures & VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT))
+               TCU_THROW(NotSupportedError, "Format not supported for uniform texel buffers");
 }
 
 void LoadStoreTest::initPrograms (SourceCollections& programCollection) const
 {
-       const int                       dimension                       = (m_singleLayerBind ? m_texture.layerDimension() : m_texture.dimension());
-       const ImageType         usedImageType           = (m_singleLayerBind ? getImageTypeForSingleLayer(m_texture.type()) : m_texture.type());
-       const std::string       formatQualifierStr      = getShaderImageFormatQualifier(mapVkFormat(m_format));
-       const std::string       imageTypeStr            = getShaderImageType(mapVkFormat(m_format), usedImageType);
-       const std::string       maybeRestrictStr        = (m_restrictImages ? "restrict " : "");
-       const std::string       xMax                            = de::toString(m_texture.size().x() - 1);
+       const tcu::TextureFormat        texFormat                       = mapVkFormat(m_format);
+       const int                                       dimension                       = (m_singleLayerBind ? m_texture.layerDimension() : m_texture.dimension());
+       const ImageType                         usedImageType           = (m_singleLayerBind ? getImageTypeForSingleLayer(m_texture.type()) : m_texture.type());
+       const std::string                       formatQualifierStr      = getShaderImageFormatQualifier(texFormat);
+       const std::string                       uniformTypeStr          = getFormatPrefix(texFormat) + "textureBuffer";
+       const std::string                       imageTypeStr            = getShaderImageType(texFormat, usedImageType);
+       const std::string                       maybeRestrictStr        = (m_restrictImages ? "restrict " : "");
+       const std::string                       xMax                            = de::toString(m_texture.size().x() - 1);
+
+       std::ostringstream src;
+       src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_440) << "\n"
+               << "\n";
+       if (!m_declareImageFormatInShader)
+       {
+               src << "#extension GL_EXT_shader_image_load_formatted : require\n";
+       }
+       src << "layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;\n";
+       if (m_bufferLoadUniform)
+               src << "layout (binding = 0) uniform " << uniformTypeStr << " u_image0;\n";
+       else if (m_declareImageFormatInShader)
+               src << "layout (binding = 0, " << formatQualifierStr << ") " << maybeRestrictStr << "readonly uniform " << imageTypeStr << " u_image0;\n";
+       else
+               src << "layout (binding = 0) " << maybeRestrictStr << "readonly uniform " << imageTypeStr << " u_image0;\n";
 
-       for (deUint32 variant = 0; variant <= 1; variant++)
+       if (formatHasThreeComponents(m_format))
+               src << "layout (binding = 1) " << maybeRestrictStr << "writeonly uniform " << imageTypeStr << " u_image1;\n";
+       else
+               src << "layout (binding = 1, " << formatQualifierStr << ") " << maybeRestrictStr << "writeonly uniform " << imageTypeStr << " u_image1;\n";
+
+       src << "\n"
+               << "void main (void)\n"
+               << "{\n";
+       switch (dimension)
        {
-               std::ostringstream src;
-               src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_440) << "\n"
-                       << "\n";
-               if (variant != 0)
+       default: DE_ASSERT(0); // fallthrough
+       case 1:
+               if (m_bufferLoadUniform)
                {
-                       src << "#extension GL_EXT_shader_image_load_formatted : require\n";
+                       // for three-component formats, the dst buffer is single-component and the shader
+                       // expands the store into 3 component-wise stores.
+                       std::string type = getFormatPrefix(texFormat) + "vec4";
+                       src << "    int pos = int(gl_GlobalInvocationID.x);\n"
+                                  "    " << type << " t = texelFetch(u_image0, " + xMax + "-pos);\n";
+                       if (formatHasThreeComponents(m_format))
+                       {
+                               src << "    imageStore(u_image1, 3*pos+0, " << type << "(t.x));\n";
+                               src << "    imageStore(u_image1, 3*pos+1, " << type << "(t.y));\n";
+                               src << "    imageStore(u_image1, 3*pos+2, " << type << "(t.z));\n";
+                       }
+                       else
+                               src << "    imageStore(u_image1, pos, t);\n";
                }
-               src << "layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;\n";
-               if (variant == 0)
-                       src << "layout (binding = 0, " << formatQualifierStr << ") " << maybeRestrictStr << "readonly uniform " << imageTypeStr << " u_image0;\n";
                else
-                       src << "layout (binding = 0) " << maybeRestrictStr << "readonly uniform " << imageTypeStr << " u_image0;\n";
-               src << "layout (binding = 1, " << formatQualifierStr << ") " << maybeRestrictStr << "writeonly uniform " << imageTypeStr << " u_image1;\n"
-                       << "\n"
-                       << "void main (void)\n"
-                       << "{\n"
-                       << (dimension == 1 ?
+                       src <<
                                "    int pos = int(gl_GlobalInvocationID.x);\n"
-                               "    imageStore(u_image1, pos, imageLoad(u_image0, " + xMax + "-pos));\n"
-                               : dimension == 2 ?
-                               "    ivec2 pos = ivec2(gl_GlobalInvocationID.xy);\n"
-                               "    imageStore(u_image1, pos, imageLoad(u_image0, ivec2(" + xMax + "-pos.x, pos.y)));\n"
-                               : dimension == 3 ?
-                               "    ivec3 pos = ivec3(gl_GlobalInvocationID);\n"
-                               "    imageStore(u_image1, pos, imageLoad(u_image0, ivec3(" + xMax + "-pos.x, pos.y, pos.z)));\n"
-                               : "")
-                       << "}\n";
-
-               programCollection.glslSources.add(variant == 0 ? "comp" : "comp_fmt_unknown") << glu::ComputeSource(src.str());
+                               "    imageStore(u_image1, pos, imageLoad(u_image0, " + xMax + "-pos));\n";
+               break;
+       case 2:
+               src <<
+                       "    ivec2 pos = ivec2(gl_GlobalInvocationID.xy);\n"
+                       "    imageStore(u_image1, pos, imageLoad(u_image0, ivec2(" + xMax + "-pos.x, pos.y)));\n";
+               break;
+       case 3:
+               src <<
+                       "    ivec3 pos = ivec3(gl_GlobalInvocationID);\n"
+                       "    imageStore(u_image1, pos, imageLoad(u_image0, ivec3(" + xMax + "-pos.x, pos.y, pos.z)));\n";
+               break;
        }
+       src << "}\n";
+
+       programCollection.glslSources.add("comp") << glu::ComputeSource(src.str());
 }
 
 //! Load/store test base implementation
@@ -1010,7 +1134,9 @@ public:
                                                                                                                                                 const VkFormat         format,
                                                                                                                                                 const VkFormat         imageFormat,
                                                                                                                                                 const bool                     declareImageFormatInShader,
-                                                                                                                                                const bool                     singleLayerBind);
+                                                                                                                                                const bool                     singleLayerBind,
+                                                                                                                                                const bool                     minalign,
+                                                                                                                                                const bool                     bufferLoadUniform);
 
 protected:
        virtual Buffer*                                 getResultBuffer                                         (void) const = 0;       //!< Get the buffer that contains the result image
@@ -1026,6 +1152,10 @@ protected:
        const VkDeviceSize                              m_imageSizeBytes;
        const VkFormat                                  m_imageFormat;          //!< Image format (for storage, may be different than texture format)
        tcu::TextureLevel                               m_referenceImage;       //!< Used as input data and later to verify result image
+
+       bool                                                    m_bufferLoadUniform;
+       VkDescriptorType                                m_bufferLoadDescriptorType;
+       VkBufferUsageFlagBits                   m_bufferLoadUsageBit;
 };
 
 LoadStoreTestInstance::LoadStoreTestInstance (Context&                 context,
@@ -1033,27 +1163,33 @@ LoadStoreTestInstance::LoadStoreTestInstance (Context&                  context,
                                                                                          const VkFormat        format,
                                                                                          const VkFormat        imageFormat,
                                                                                          const bool            declareImageFormatInShader,
-                                                                                         const bool            singleLayerBind)
-       : BaseTestInstance              (context, texture, format, declareImageFormatInShader, singleLayerBind)
+                                                                                         const bool            singleLayerBind,
+                                                                                         const bool            minalign,
+                                                                                         const bool            bufferLoadUniform)
+       : BaseTestInstance              (context, texture, format, declareImageFormatInShader, singleLayerBind, minalign, bufferLoadUniform)
        , m_imageSizeBytes              (getImageSizeBytes(texture.size(), format))
        , m_imageFormat                 (imageFormat)
        , m_referenceImage              (generateReferenceImage(texture.size(), imageFormat, format))
+       , m_bufferLoadUniform   (bufferLoadUniform)
 {
        const DeviceInterface&  vk                      = m_context.getDeviceInterface();
        const VkDevice                  device          = m_context.getDevice();
        Allocator&                              allocator       = m_context.getDefaultAllocator();
 
+       m_bufferLoadDescriptorType = m_bufferLoadUniform ? VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER : VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
+       m_bufferLoadUsageBit = m_bufferLoadUniform ? VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT : VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
+
        // A helper buffer with enough space to hold the whole image.
 
        m_imageBuffer = de::MovePtr<Buffer>(new Buffer(
                vk, device, allocator,
-               makeBufferCreateInfo(m_imageSizeBytes, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT),
+               makeBufferCreateInfo(m_imageSizeBytes + m_srcViewOffset, m_bufferLoadUsageBit | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT),
                MemoryRequirement::HostVisible));
 
        // Copy reference data to buffer for subsequent upload to image.
 
        const Allocation& alloc = m_imageBuffer->getAllocation();
-       deMemcpy(alloc.getHostPtr(), m_referenceImage.getAccess().getDataPtr(), static_cast<size_t>(m_imageSizeBytes));
+       deMemcpy((char *)alloc.getHostPtr() + m_srcViewOffset, m_referenceImage.getAccess().getDataPtr(), static_cast<size_t>(m_imageSizeBytes));
        flushAlloc(vk, device, alloc);
 }
 
@@ -1068,7 +1204,7 @@ tcu::TestStatus LoadStoreTestInstance::verifyResult       (void)
 
        const Allocation& alloc = getResultBuffer()->getAllocation();
        invalidateAlloc(vk, device, alloc);
-       const tcu::ConstPixelBufferAccess result(mapVkFormat(m_imageFormat), m_texture.size(), alloc.getHostPtr());
+       const tcu::ConstPixelBufferAccess result(mapVkFormat(m_imageFormat), m_texture.size(), (const char *)alloc.getHostPtr() + m_dstViewOffset);
 
        if (comparePixelBuffers(m_context.getTestContext().getLog(), m_texture, m_imageFormat, reference, result))
                return tcu::TestStatus::pass("Passed");
@@ -1085,7 +1221,9 @@ public:
                                                                                                                                                         const VkFormat                 format,
                                                                                                                                                         const VkFormat                 imageFormat,
                                                                                                                                                         const bool                             declareImageFormatInShader,
-                                                                                                                                                        const bool                             singleLayerBind);
+                                                                                                                                                        const bool                             singleLayerBind,
+                                                                                                                                                        const bool                             minalign,
+                                                                                                                                                        const bool                             bufferLoadUniform);
 
 protected:
        VkDescriptorSetLayout                           prepareDescriptors                                      (void);
@@ -1113,8 +1251,10 @@ ImageLoadStoreTestInstance::ImageLoadStoreTestInstance (Context&         context,
                                                                                                                const VkFormat  format,
                                                                                                                const VkFormat  imageFormat,
                                                                                                                const bool              declareImageFormatInShader,
-                                                                                                               const bool              singleLayerBind)
-       : LoadStoreTestInstance (context, texture, format, imageFormat, declareImageFormatInShader, singleLayerBind)
+                                                                                                               const bool              singleLayerBind,
+                                                                                                               const bool              minalign,
+                                                                                                               const bool              bufferLoadUniform)
+       : LoadStoreTestInstance (context, texture, format, imageFormat, declareImageFormatInShader, singleLayerBind, minalign, bufferLoadUniform)
        , m_allDescriptorSets   (texture.numLayers())
        , m_allSrcImageViews    (texture.numLayers())
        , m_allDstImageViews    (texture.numLayers())
@@ -1215,7 +1355,7 @@ void ImageLoadStoreTestInstance::commandBeforeCompute (const VkCommandBuffer cmd
 
                const VkBufferMemoryBarrier barrierFlushHostWriteBeforeCopy = makeBufferMemoryBarrier(
                        VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT,
-                       m_imageBuffer->get(), 0ull, m_imageSizeBytes);
+                       m_imageBuffer->get(), 0ull, m_imageSizeBytes + m_srcViewOffset);
 
                vk.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT,
                        (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &barrierFlushHostWriteBeforeCopy, DE_LENGTH_OF_ARRAY(preCopyImageBarriers), preCopyImageBarriers);
@@ -1251,7 +1391,9 @@ public:
                                                                                                                                         const Texture&                 texture,
                                                                                                                                         const VkFormat                 format,
                                                                                                                                         const VkFormat                 imageFormat,
-                                                                                                                                        const bool                             declareImageFormatInShader);
+                                                                                                                                        const bool                             declareImageFormatInShader,
+                                                                                                                                        const bool                             minalign,
+                                                                                                                                        const bool                             bufferLoadUniform);
 
 protected:
        VkDescriptorSetLayout                   prepareDescriptors                              (void);
@@ -1275,8 +1417,10 @@ BufferLoadStoreTestInstance::BufferLoadStoreTestInstance (Context&                       context,
                                                                                                                  const Texture&        texture,
                                                                                                                  const VkFormat        format,
                                                                                                                  const VkFormat        imageFormat,
-                                                                                                                 const bool            declareImageFormatInShader)
-       : LoadStoreTestInstance(context, texture, format, imageFormat, declareImageFormatInShader, false)
+                                                                                                                 const bool            declareImageFormatInShader,
+                                                                                                                 const bool            minalign,
+                                                                                                                 const bool            bufferLoadUniform)
+       : LoadStoreTestInstance(context, texture, format, imageFormat, declareImageFormatInShader, false, minalign, bufferLoadUniform)
 {
        const DeviceInterface&  vk                      = m_context.getDeviceInterface();
        const VkDevice                  device          = m_context.getDevice();
@@ -1286,7 +1430,7 @@ BufferLoadStoreTestInstance::BufferLoadStoreTestInstance (Context&                        context,
 
        m_imageBufferDst = de::MovePtr<Buffer>(new Buffer(
                vk, device, allocator,
-               makeBufferCreateInfo(m_imageSizeBytes, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT),
+               makeBufferCreateInfo(m_imageSizeBytes + m_dstViewOffset, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT),
                MemoryRequirement::HostVisible));
 }
 
@@ -1296,18 +1440,20 @@ VkDescriptorSetLayout BufferLoadStoreTestInstance::prepareDescriptors (void)
        const VkDevice                  device  = m_context.getDevice();
 
        m_descriptorSetLayout = DescriptorSetLayoutBuilder()
-               .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT)
+               .addSingleBinding(m_bufferLoadDescriptorType, VK_SHADER_STAGE_COMPUTE_BIT)
                .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT)
                .build(vk, device);
 
        m_descriptorPool = DescriptorPoolBuilder()
-               .addType(VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)
+               .addType(m_bufferLoadDescriptorType)
                .addType(VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)
                .build(vk, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
 
+       VkFormat dstFormat = formatHasThreeComponents(m_format) ? getSingleComponentFormat(m_format) : m_format;
+
        m_descriptorSet = makeDescriptorSet(vk, device, *m_descriptorPool, *m_descriptorSetLayout);
-       m_bufferViewSrc = makeBufferView(vk, device, m_imageBuffer->get(), m_format, 0ull, m_imageSizeBytes);
-       m_bufferViewDst = makeBufferView(vk, device, m_imageBufferDst->get(), m_format, 0ull, m_imageSizeBytes);
+       m_bufferViewSrc = makeBufferView(vk, device, m_imageBuffer->get(), m_format, m_srcViewOffset, m_imageSizeBytes);
+       m_bufferViewDst = makeBufferView(vk, device, m_imageBufferDst->get(), dstFormat, m_dstViewOffset, m_imageSizeBytes);
 
        return *m_descriptorSetLayout;  // not passing the ownership
 }
@@ -1321,7 +1467,7 @@ void BufferLoadStoreTestInstance::commandBindDescriptorsForLayer (const VkComman
        const DeviceInterface&  vk              = m_context.getDeviceInterface();
 
        DescriptorSetUpdateBuilder()
-               .writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, &m_bufferViewSrc.get())
+               .writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), m_bufferLoadDescriptorType, &m_bufferViewSrc.get())
                .writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(1u), VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, &m_bufferViewDst.get())
                .update(vk, device);
        vk.cmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipelineLayout, 0u, 1u, &m_descriptorSet.get(), 0u, DE_NULL);
@@ -1329,23 +1475,23 @@ void BufferLoadStoreTestInstance::commandBindDescriptorsForLayer (const VkComman
 
 void BufferLoadStoreTestInstance::commandAfterCompute (const VkCommandBuffer cmdBuffer)
 {
-       commandBufferWriteBarrierBeforeHostRead(m_context, cmdBuffer, m_imageBufferDst->get(), m_imageSizeBytes);
+       commandBufferWriteBarrierBeforeHostRead(m_context, cmdBuffer, m_imageBufferDst->get(), m_imageSizeBytes + m_dstViewOffset);
 }
 
 TestInstance* StoreTest::createInstance (Context& context) const
 {
        if (m_texture.type() == IMAGE_TYPE_BUFFER)
-               return new BufferStoreTestInstance(context, m_texture, m_format, m_declareImageFormatInShader);
+               return new BufferStoreTestInstance(context, m_texture, m_format, m_declareImageFormatInShader, m_minalign);
        else
-               return new ImageStoreTestInstance(context, m_texture, m_format, m_declareImageFormatInShader, m_singleLayerBind);
+               return new ImageStoreTestInstance(context, m_texture, m_format, m_declareImageFormatInShader, m_singleLayerBind, m_minalign);
 }
 
 TestInstance* LoadStoreTest::createInstance (Context& context) const
 {
        if (m_texture.type() == IMAGE_TYPE_BUFFER)
-               return new BufferLoadStoreTestInstance(context, m_texture, m_format, m_imageFormat, m_declareImageFormatInShader);
+               return new BufferLoadStoreTestInstance(context, m_texture, m_format, m_imageFormat, m_declareImageFormatInShader, m_minalign, m_bufferLoadUniform);
        else
-               return new ImageLoadStoreTestInstance(context, m_texture, m_format, m_imageFormat, m_declareImageFormatInShader, m_singleLayerBind);
+               return new ImageLoadStoreTestInstance(context, m_texture, m_format, m_imageFormat, m_declareImageFormatInShader, m_singleLayerBind, m_minalign, m_bufferLoadUniform);
 }
 
 static const Texture s_textures[] =
@@ -1425,6 +1571,22 @@ static const VkFormat s_formats[] =
        VK_FORMAT_R8_SNORM
 };
 
+static const VkFormat s_formatsThreeComponent[] =
+{
+       VK_FORMAT_R8G8B8_UINT,
+       VK_FORMAT_R8G8B8_SINT,
+       VK_FORMAT_R8G8B8_UNORM,
+       VK_FORMAT_R8G8B8_SNORM,
+       VK_FORMAT_R16G16B16_UINT,
+       VK_FORMAT_R16G16B16_SINT,
+       VK_FORMAT_R16G16B16_UNORM,
+       VK_FORMAT_R16G16B16_SNORM,
+       VK_FORMAT_R16G16B16_SFLOAT,
+       VK_FORMAT_R32G32B32_UINT,
+       VK_FORMAT_R32G32B32_SINT,
+       VK_FORMAT_R32G32B32_SFLOAT,
+};
+
 } // anonymous ns
 
 tcu::TestCaseGroup* createImageStoreTests (tcu::TestContext& testCtx)
@@ -1449,6 +1611,12 @@ tcu::TestCaseGroup* createImageStoreTests (tcu::TestContext& testCtx)
                                groupWithFormatByImageViewType->addChild(new StoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_single_layer", "",
                                                                                                                 texture, s_formats[formatNdx],
                                                                                                                 StoreTest::FLAG_SINGLE_LAYER_BIND | StoreTest::FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER));
+
+                       if (texture.type() == IMAGE_TYPE_BUFFER)
+                       {
+                               groupWithFormatByImageViewType->addChild(new StoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_minalign", "", texture, s_formats[formatNdx], StoreTest::FLAG_MINALIGN | StoreTest::FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER));
+                               groupWithoutFormatByImageViewType->addChild(new StoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_minalign", "", texture, s_formats[formatNdx], StoreTest::FLAG_MINALIGN));
+                       }
                }
 
                testGroupWithFormat->addChild(groupWithFormatByImageViewType.release());
@@ -1483,6 +1651,22 @@ tcu::TestCaseGroup* createImageLoadStoreTests (tcu::TestContext& testCtx)
                                groupWithFormatByImageViewType->addChild(new LoadStoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_single_layer", "",
                                                                                                                 texture, s_formats[formatNdx], s_formats[formatNdx],
                                                                                                                 LoadStoreTest::FLAG_SINGLE_LAYER_BIND | LoadStoreTest::FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER));
+                       if (texture.type() == IMAGE_TYPE_BUFFER)
+                       {
+                               groupWithFormatByImageViewType->addChild(new LoadStoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_minalign", "", texture, s_formats[formatNdx], s_formats[formatNdx], LoadStoreTest::FLAG_MINALIGN | LoadStoreTest::FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER));
+                               groupWithFormatByImageViewType->addChild(new LoadStoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_minalign_uniform", "", texture, s_formats[formatNdx], s_formats[formatNdx], LoadStoreTest::FLAG_MINALIGN | LoadStoreTest::FLAG_DECLARE_IMAGE_FORMAT_IN_SHADER | LoadStoreTest::FLAG_UNIFORM_TEXEL_BUFFER));
+                               groupWithoutFormatByImageViewType->addChild(new LoadStoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_minalign", "", texture, s_formats[formatNdx], s_formats[formatNdx], LoadStoreTest::FLAG_MINALIGN));
+                               groupWithoutFormatByImageViewType->addChild(new LoadStoreTest(testCtx, getFormatShortString(s_formats[formatNdx]) + "_minalign_uniform", "", texture, s_formats[formatNdx], s_formats[formatNdx], LoadStoreTest::FLAG_MINALIGN | LoadStoreTest::FLAG_UNIFORM_TEXEL_BUFFER));
+                       }
+               }
+
+               if (texture.type() == IMAGE_TYPE_BUFFER)
+               {
+                       for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(s_formatsThreeComponent); ++formatNdx)
+                       {
+                               groupWithoutFormatByImageViewType->addChild(new LoadStoreTest(testCtx, getFormatShortString(s_formatsThreeComponent[formatNdx]) + "_uniform", "", texture, s_formatsThreeComponent[formatNdx], s_formatsThreeComponent[formatNdx], LoadStoreTest::FLAG_UNIFORM_TEXEL_BUFFER));
+                               groupWithoutFormatByImageViewType->addChild(new LoadStoreTest(testCtx, getFormatShortString(s_formatsThreeComponent[formatNdx]) + "_minalign_uniform", "", texture, s_formatsThreeComponent[formatNdx], s_formatsThreeComponent[formatNdx], LoadStoreTest::FLAG_MINALIGN | LoadStoreTest::FLAG_UNIFORM_TEXEL_BUFFER));
+                       }
                }
 
                testGroupWithFormat->addChild(groupWithFormatByImageViewType.release());
index 76bb14b..9cf9bfc 100644 (file)
@@ -557,10 +557,15 @@ std::string getImageTypeName (const ImageType imageType)
        }
 }
 
+std::string getFormatPrefix (const tcu::TextureFormat& format)
+{
+       return tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER ? "u" :
+                  tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER   ? "i" : "";
+}
+
 std::string getShaderImageType (const tcu::TextureFormat& format, const ImageType imageType, const bool multisample)
 {
-       std::string formatPart = tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER ? "u" :
-                                                        tcu::getTextureChannelClass(format.type) == tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER   ? "i" : "";
+       std::string formatPart = getFormatPrefix(format);
 
        std::string imageTypePart;
        if (multisample)
index f753982..79da5e3 100644 (file)
@@ -53,6 +53,7 @@ enum ImageType
 vk::VkImageType                        mapImageType                                    (const ImageType imageType);
 vk::VkImageViewType            mapImageViewType                                (const ImageType imageType);
 std::string                            getImageTypeName                                (const ImageType imageType);
+std::string                            getFormatPrefix                                 (const tcu::TextureFormat& format);
 std::string                            getShaderImageType                              (const tcu::TextureFormat& format, const ImageType imageType, const bool multisample = false);
 std::string                            getShaderImageFormatQualifier   (const tcu::TextureFormat& format);
 std::string                            getGlslSamplerType                              (const tcu::TextureFormat& format, vk::VkImageViewType type);
index 0909dff..a2e5da2 100644 (file)
@@ -353705,44 +353705,83 @@ dEQP-VK.image.store.with_format.cube_array.r8g8_snorm_single_layer
 dEQP-VK.image.store.with_format.cube_array.r8_snorm
 dEQP-VK.image.store.with_format.cube_array.r8_snorm_single_layer
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32_uint
+dEQP-VK.image.store.with_format.buffer.r32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r32_sint
+dEQP-VK.image.store.with_format.buffer.r32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.store.with_format.buffer.b10g11r11_ufloat_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32g32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16g16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.store.with_format.buffer.a2b10g10r10_uint_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_uint
+dEQP-VK.image.store.with_format.buffer.r32g32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_uint
+dEQP-VK.image.store.with_format.buffer.r16g16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16_uint
+dEQP-VK.image.store.with_format.buffer.r16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_uint
+dEQP-VK.image.store.with_format.buffer.r8g8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8_uint
+dEQP-VK.image.store.with_format.buffer.r8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_sint
+dEQP-VK.image.store.with_format.buffer.r32g32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_sint
+dEQP-VK.image.store.with_format.buffer.r16g16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16_sint
+dEQP-VK.image.store.with_format.buffer.r16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_sint
+dEQP-VK.image.store.with_format.buffer.r8g8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8_sint
+dEQP-VK.image.store.with_format.buffer.r8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_unorm
+dEQP-VK.image.store.with_format.buffer.r16g16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16_unorm
+dEQP-VK.image.store.with_format.buffer.r16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_unorm
+dEQP-VK.image.store.with_format.buffer.r8g8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8_unorm
+dEQP-VK.image.store.with_format.buffer.r8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_snorm
+dEQP-VK.image.store.with_format.buffer.r16g16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16_snorm
+dEQP-VK.image.store.with_format.buffer.r16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_snorm
+dEQP-VK.image.store.with_format.buffer.r8g8_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8_snorm
+dEQP-VK.image.store.with_format.buffer.r8_snorm_minalign
 dEQP-VK.image.store.without_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.store.without_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.store.without_format.1d.r32_sfloat
@@ -354017,44 +354056,83 @@ dEQP-VK.image.store.without_format.cube_array.r16_snorm
 dEQP-VK.image.store.without_format.cube_array.r8g8_snorm
 dEQP-VK.image.store.without_format.cube_array.r8_snorm
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32_uint
+dEQP-VK.image.store.without_format.buffer.r32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r32_sint
+dEQP-VK.image.store.without_format.buffer.r32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.store.without_format.buffer.b10g11r11_ufloat_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32g32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16g16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.store.without_format.buffer.a2b10g10r10_uint_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_uint
+dEQP-VK.image.store.without_format.buffer.r32g32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_uint
+dEQP-VK.image.store.without_format.buffer.r16g16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16_uint
+dEQP-VK.image.store.without_format.buffer.r16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_uint
+dEQP-VK.image.store.without_format.buffer.r8g8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8_uint
+dEQP-VK.image.store.without_format.buffer.r8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_sint
+dEQP-VK.image.store.without_format.buffer.r32g32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_sint
+dEQP-VK.image.store.without_format.buffer.r16g16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16_sint
+dEQP-VK.image.store.without_format.buffer.r16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_sint
+dEQP-VK.image.store.without_format.buffer.r8g8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8_sint
+dEQP-VK.image.store.without_format.buffer.r8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_unorm
+dEQP-VK.image.store.without_format.buffer.r16g16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16_unorm
+dEQP-VK.image.store.without_format.buffer.r16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_unorm
+dEQP-VK.image.store.without_format.buffer.r8g8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8_unorm
+dEQP-VK.image.store.without_format.buffer.r8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_snorm
+dEQP-VK.image.store.without_format.buffer.r16g16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16_snorm
+dEQP-VK.image.store.without_format.buffer.r16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_snorm
+dEQP-VK.image.store.without_format.buffer.r8g8_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8_snorm
+dEQP-VK.image.store.without_format.buffer.r8_snorm_minalign
 dEQP-VK.image.load_store.with_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.load_store.with_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.load_store.with_format.1d.r32_sfloat
@@ -354485,44 +354563,122 @@ dEQP-VK.image.load_store.with_format.cube_array.r8g8_snorm_single_layer
 dEQP-VK.image.load_store.with_format.cube_array.r8_snorm
 dEQP-VK.image.load_store.with_format.cube_array.r8_snorm_single_layer
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32g32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16g16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8g8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8g8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.load_store.without_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.load_store.without_format.1d.r32_sfloat
@@ -354797,44 +354953,146 @@ dEQP-VK.image.load_store.without_format.cube_array.r16_snorm
 dEQP-VK.image.load_store.without_format.cube_array.r8g8_snorm
 dEQP-VK.image.load_store.without_format.cube_array.r8_snorm
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32g32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16g16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8g8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8g8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_unorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_unorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_snorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_unorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_unorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_snorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sfloat_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sfloat_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sfloat_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sfloat_minalign_uniform
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_2
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_4
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_8
index 20166aa..52aa184 100644 (file)
@@ -353666,44 +353666,83 @@ dEQP-VK.image.store.with_format.cube_array.r8g8_snorm_single_layer
 dEQP-VK.image.store.with_format.cube_array.r8_snorm
 dEQP-VK.image.store.with_format.cube_array.r8_snorm_single_layer
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32_uint
+dEQP-VK.image.store.with_format.buffer.r32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.store.with_format.buffer.r32g32b32a32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r32_sint
+dEQP-VK.image.store.with_format.buffer.r32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.store.with_format.buffer.r8g8b8a8_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.store.with_format.buffer.b10g11r11_ufloat_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_sfloat
+dEQP-VK.image.store.with_format.buffer.r32g32_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16g16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.r16_sfloat
+dEQP-VK.image.store.with_format.buffer.r16_sfloat_minalign
 dEQP-VK.image.store.with_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.store.with_format.buffer.a2b10g10r10_uint_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_uint
+dEQP-VK.image.store.with_format.buffer.r32g32_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_uint
+dEQP-VK.image.store.with_format.buffer.r16g16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r16_uint
+dEQP-VK.image.store.with_format.buffer.r16_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_uint
+dEQP-VK.image.store.with_format.buffer.r8g8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r8_uint
+dEQP-VK.image.store.with_format.buffer.r8_uint_minalign
 dEQP-VK.image.store.with_format.buffer.r32g32_sint
+dEQP-VK.image.store.with_format.buffer.r32g32_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_sint
+dEQP-VK.image.store.with_format.buffer.r16g16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r16_sint
+dEQP-VK.image.store.with_format.buffer.r16_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_sint
+dEQP-VK.image.store.with_format.buffer.r8g8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.r8_sint
+dEQP-VK.image.store.with_format.buffer.r8_sint_minalign
 dEQP-VK.image.store.with_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.store.with_format.buffer.r16g16b16a16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_unorm
+dEQP-VK.image.store.with_format.buffer.r16g16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16_unorm
+dEQP-VK.image.store.with_format.buffer.r16_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_unorm
+dEQP-VK.image.store.with_format.buffer.r8g8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8_unorm
+dEQP-VK.image.store.with_format.buffer.r8_unorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16g16_snorm
+dEQP-VK.image.store.with_format.buffer.r16g16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r16_snorm
+dEQP-VK.image.store.with_format.buffer.r16_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8g8_snorm
+dEQP-VK.image.store.with_format.buffer.r8g8_snorm_minalign
 dEQP-VK.image.store.with_format.buffer.r8_snorm
+dEQP-VK.image.store.with_format.buffer.r8_snorm_minalign
 dEQP-VK.image.store.without_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.store.without_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.store.without_format.1d.r32_sfloat
@@ -353978,44 +354017,83 @@ dEQP-VK.image.store.without_format.cube_array.r16_snorm
 dEQP-VK.image.store.without_format.cube_array.r8g8_snorm
 dEQP-VK.image.store.without_format.cube_array.r8_snorm
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32_uint
+dEQP-VK.image.store.without_format.buffer.r32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.store.without_format.buffer.r32g32b32a32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r32_sint
+dEQP-VK.image.store.without_format.buffer.r32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.store.without_format.buffer.r8g8b8a8_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.store.without_format.buffer.b10g11r11_ufloat_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_sfloat
+dEQP-VK.image.store.without_format.buffer.r32g32_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16g16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.r16_sfloat
+dEQP-VK.image.store.without_format.buffer.r16_sfloat_minalign
 dEQP-VK.image.store.without_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.store.without_format.buffer.a2b10g10r10_uint_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_uint
+dEQP-VK.image.store.without_format.buffer.r32g32_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_uint
+dEQP-VK.image.store.without_format.buffer.r16g16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r16_uint
+dEQP-VK.image.store.without_format.buffer.r16_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_uint
+dEQP-VK.image.store.without_format.buffer.r8g8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r8_uint
+dEQP-VK.image.store.without_format.buffer.r8_uint_minalign
 dEQP-VK.image.store.without_format.buffer.r32g32_sint
+dEQP-VK.image.store.without_format.buffer.r32g32_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_sint
+dEQP-VK.image.store.without_format.buffer.r16g16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r16_sint
+dEQP-VK.image.store.without_format.buffer.r16_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_sint
+dEQP-VK.image.store.without_format.buffer.r8g8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.r8_sint
+dEQP-VK.image.store.without_format.buffer.r8_sint_minalign
 dEQP-VK.image.store.without_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.store.without_format.buffer.r16g16b16a16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_unorm
+dEQP-VK.image.store.without_format.buffer.r16g16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16_unorm
+dEQP-VK.image.store.without_format.buffer.r16_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_unorm
+dEQP-VK.image.store.without_format.buffer.r8g8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8_unorm
+dEQP-VK.image.store.without_format.buffer.r8_unorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16g16_snorm
+dEQP-VK.image.store.without_format.buffer.r16g16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r16_snorm
+dEQP-VK.image.store.without_format.buffer.r16_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8g8_snorm
+dEQP-VK.image.store.without_format.buffer.r8g8_snorm_minalign
 dEQP-VK.image.store.without_format.buffer.r8_snorm
+dEQP-VK.image.store.without_format.buffer.r8_snorm_minalign
 dEQP-VK.image.load_store.with_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.load_store.with_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.load_store.with_format.1d.r32_sfloat
@@ -354446,44 +354524,122 @@ dEQP-VK.image.load_store.with_format.cube_array.r8g8_snorm_single_layer
 dEQP-VK.image.load_store.with_format.cube_array.r8_snorm
 dEQP-VK.image.load_store.with_format.cube_array.r8_snorm_single_layer
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32b32a32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8b8a8_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.b10g11r11_ufloat_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_sfloat
+dEQP-VK.image.load_store.with_format.buffer.r16_sfloat_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_uint_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_uint
+dEQP-VK.image.load_store.with_format.buffer.r32g32_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16g16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_uint
+dEQP-VK.image.load_store.with_format.buffer.r16_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8g8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_uint
+dEQP-VK.image.load_store.with_format.buffer.r8_uint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_uint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r32g32_sint
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r32g32_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_sint
+dEQP-VK.image.load_store.with_format.buffer.r16_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8g8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_sint
+dEQP-VK.image.load_store.with_format.buffer.r8_sint_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_sint_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign
+dEQP-VK.image.load_store.with_format.buffer.a2b10g10r10_unorm_pack32_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16b16a16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_unorm
+dEQP-VK.image.load_store.with_format.buffer.r16_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_unorm
+dEQP-VK.image.load_store.with_format.buffer.r8_unorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_unorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16g16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r16_snorm
+dEQP-VK.image.load_store.with_format.buffer.r16_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r16_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8g8_snorm_minalign_uniform
 dEQP-VK.image.load_store.with_format.buffer.r8_snorm
+dEQP-VK.image.load_store.with_format.buffer.r8_snorm_minalign
+dEQP-VK.image.load_store.with_format.buffer.r8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.1d.r32g32b32a32_sfloat
 dEQP-VK.image.load_store.without_format.1d.r16g16b16a16_sfloat
 dEQP-VK.image.load_store.without_format.1d.r32_sfloat
@@ -354758,44 +354914,146 @@ dEQP-VK.image.load_store.without_format.cube_array.r16_snorm
 dEQP-VK.image.load_store.without_format.cube_array.r8g8_snorm
 dEQP-VK.image.load_store.without_format.cube_array.r8_snorm
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32a32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8a8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32
+dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.b10g11r11_ufloat_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_sfloat
+dEQP-VK.image.load_store.without_format.buffer.r16_sfloat_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_sfloat_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_uint_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_uint
+dEQP-VK.image.load_store.without_format.buffer.r32g32_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16g16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_uint
+dEQP-VK.image.load_store.without_format.buffer.r16_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8g8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_uint
+dEQP-VK.image.load_store.without_format.buffer.r8_uint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_uint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r32g32_sint
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r32g32_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_sint
+dEQP-VK.image.load_store.without_format.buffer.r16_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8g8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_sint
+dEQP-VK.image.load_store.without_format.buffer.r8_sint_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_sint_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign
+dEQP-VK.image.load_store.without_format.buffer.a2b10g10r10_unorm_pack32_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16a16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_unorm
+dEQP-VK.image.load_store.without_format.buffer.r16_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_unorm
+dEQP-VK.image.load_store.without_format.buffer.r8_unorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_unorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16g16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r16_snorm
+dEQP-VK.image.load_store.without_format.buffer.r16_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r16_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8g8_snorm_minalign_uniform
 dEQP-VK.image.load_store.without_format.buffer.r8_snorm
+dEQP-VK.image.load_store.without_format.buffer.r8_snorm_minalign
+dEQP-VK.image.load_store.without_format.buffer.r8_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_unorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_unorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_snorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r8g8b8_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_unorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_unorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_snorm_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_snorm_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sfloat_uniform
+dEQP-VK.image.load_store.without_format.buffer.r16g16b16_sfloat_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_uint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_uint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sint_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sint_minalign_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sfloat_uniform
+dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sfloat_minalign_uniform
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_2
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_4
 dEQP-VK.image.load_store_multisample.2d.r32g32b32a32_sfloat.samples_8