dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_uint
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_sint
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_sfloat
-dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.a2b10g10r10_uint_pack32_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8_sint_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.a2b10g10r10_uint_pack32_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_sint_force_sign_extend
dEQP-VK.wsi.android.surface.create
dEQP-VK.wsi.android.surface.create_custom_allocator
dEQP-VK.wsi.android.surface.create_simulate_oom
public:
ImageExtendOperandTestInstance (Context& context,
const Texture& texture,
- const VkFormat format,
- const bool signExtend);
+ const VkFormat format);
virtual ~ImageExtendOperandTestInstance (void) {};
protected:
- bool m_signExtend;
bool m_isSigned;
tcu::TextureLevel m_inputImageData;
ImageExtendOperandTestInstance::ImageExtendOperandTestInstance (Context& context,
const Texture& texture,
- const VkFormat format,
- const bool signExtend)
+ const VkFormat format)
: BaseTestInstance (context, texture, format, true, true, false, false)
- , m_signExtend (signExtend)
{
const DeviceInterface& vk = m_context.getDeviceInterface();
const VkDevice device = m_context.getDevice();
const std::string& name,
const Texture texture,
const VkFormat format,
- const bool readSigned);
+ const bool signedInt);
void checkSupport (Context& context) const;
void initPrograms (SourceCollections& programCollection) const;
private:
const Texture m_texture;
VkFormat m_format;
- bool m_signExtend;
+ bool m_operandForce; // Use an operand that doesn't match SampledType?
};
ImageExtendOperandTest::ImageExtendOperandTest (tcu::TestContext& testCtx,
const std::string& name,
const Texture texture,
const VkFormat format,
- const bool signExtend)
+ const bool operandForce)
: TestCase (testCtx, name, "")
, m_texture (texture)
, m_format (format)
- , m_signExtend (signExtend)
+ , m_operandForce (operandForce)
{
}
"%type_vec4_u32 = OpTypeVector %type_u32 4\n"
"%type_fun_void = OpTypeFunction %type_void\n"
- "%type_ptr_fun_i32 = OpTypePointer Function %type_i32\n"
"${image_types}"
};
auto it = formatDataMap.find(m_format);
- if (it == formatDataMap.end())
- DE_ASSERT(DE_FALSE); // Missing int format data
+ DE_ASSERT (it != formatDataMap.end()); // Missing int format data
auto spirvImageFormat = it->second.spirvImageFormat;
auto isExtendedFormat = it->second.isExtendedFormat;
if (isExtendedFormat)
capability += "OpCapability StorageImageExtendedFormats\n";
- // Read type and sampled type must match. For uint formats it does not
- // matter if we do a Sign or ZeroExtend, it matters only for sint formats
- std::string readTypePostfix = "u32";
- if (isSigned && m_signExtend)
- readTypePostfix = "i32";
+ // Use i32 SampledType only for signed images and only where we're not forcing
+ // the signedness usingthe SignExtend operand. Everything else uses u32.
+ std::string readTypePostfix = (isSigned && !m_operandForce) ? "i32" : "u32";
std::map<std::string, std::string> specializations =
{
{ "image_format", spirvImageFormat },
{ "sampled_type", (std::string("%type_") + readTypePostfix) },
{ "read_vect4_type", (std::string("%type_vec4_") + readTypePostfix) },
- { "extend_operand", (m_signExtend ? "SignExtend" : "ZeroExtend") }
+ { "extend_operand", (isSigned ? "SignExtend" : "ZeroExtend") }
};
// Addidtional parametrization is needed for a case when source and destination textures have same format
TestInstance* ImageExtendOperandTest::createInstance(Context& context) const
{
- return new ImageExtendOperandTestInstance(context, m_texture, m_format, m_signExtend);
+ return new ImageExtendOperandTestInstance(context, m_texture, m_format);
}
static const Texture s_textures[] =
const auto texture = Texture(IMAGE_TYPE_2D, tcu::IVec3(8, 8, 1), 1);
for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(s_formats); ++formatNdx)
{
- auto format = s_formats[formatNdx];
- bool intFormat = isIntFormat(format);
- if (intFormat || isUintFormat(format))
- {
- const std::string caseName = getFormatShortString(format) + (intFormat ? "_sign_extend" : "_zero_extend");
- testGroup->addChild(new ImageExtendOperandTest(testCtx, caseName, texture, format, intFormat));
- }
+ auto format = s_formats[formatNdx];
+ if (!isIntFormat(format) && !isUintFormat(format))
+ continue;
+
+ const std::string name = getFormatShortString(format);
+ testGroup->addChild(new ImageExtendOperandTest(testCtx, name + "_matching_extend", texture, format, false));
+ // For signed types test both using the sign bit in SPIR-V and the new operand
+ if (isIntFormat(format))
+ testGroup->addChild(new ImageExtendOperandTest(testCtx, name + "_force_sign_extend", texture, format, true));
}
return testGroup.release();
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_uint
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_sint
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_sfloat
-dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.a2b10g10r10_uint_pack32_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8_sint_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.a2b10g10r10_uint_pack32_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_sint_force_sign_extend
dEQP-VK.wsi.xlib.surface.create
dEQP-VK.wsi.xlib.surface.create_custom_allocator
dEQP-VK.wsi.xlib.surface.create_simulate_oom
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_uint
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_sint
dEQP-VK.image.extended_usage_bit.texture_write.r32g32b32a32_sfloat
-dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.a2b10g10r10_uint_pack32_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8_uint_zero_extend
-dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r16_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_sign_extend
-dEQP-VK.image.extend_operands_spirv1p4.r8_sint_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32b32a32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16b16a16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8b8a8_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.a2b10g10r10_uint_pack32_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_uint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r32g32_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16g16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r16_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8g8_sint_force_sign_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_sint_matching_extend
+dEQP-VK.image.extend_operands_spirv1p4.r8_sint_force_sign_extend
dEQP-VK.wsi.xlib.surface.create
dEQP-VK.wsi.xlib.surface.create_custom_allocator
dEQP-VK.wsi.xlib.surface.create_simulate_oom