const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex();
SimpleAllocator allocator (vk, vkDevice, getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice()));
de::UniquePtr<tcu::TextureLevel> result (readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *m_colorImage, m_colorFormat, m_renderSize).release());
- const tcu::Vec4 threshold (getFormatThreshold(tcuColorFormat));
+ tcu::Vec4 threshold (getFormatThreshold(tcuColorFormat));
tcu::TextureLevel refLevel;
+ // For SRGB formats there is an extra precision loss due to doing
+ // the following conversions sRGB -> RGB -> blend -> RGB -> sRGB with floats.
+ // Take that into account in the threshold. For example, VK_FORMAT_R8G8B8A8_SRGB
+ // threshold is 4/255f, but we changed it to be 10/255f.
+ if (tcu::isSRGB(tcuColorFormat))
+ threshold = 2.5f * threshold;
+
refLevel.setStorage(tcuColorFormat, m_renderSize.x(), m_renderSize.y(), 1);
compareOk = tcu::floatThresholdCompare(m_context.getTestContext().getLog(),
# Test shader length is excessive, excluding until such time as the test case can be re-visited.
dEQP-VK.ssbo.layout.random.scalar.75
-# VK-GL-CTS 2157, CL 5278
-# Excluded them as Intel HW is failing these tests.
-dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_ca_1ms1a_sub_alpha_1msa_1mca_sub-color_1msc_da_max_alpha_o_da_add-color_s1c_s1a_max_alpha_dc_1ms1a_sub-color_s1a_z_sub_alpha_1msa_1msc_max
-dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_ca_1ms1a_sub_alpha_1msa_1mdc_sub-color_1mda_sas_add_alpha_o_ca_add-color_sa_1mdc_sub_alpha_o_1mca_rsub-color_s1c_1msa_rsub_alpha_1msa_1mca_add
-
# VK-GL-CTS 1682
dEQP-VK.texture.filtering.2d.formats.r16g16b16a16_sfloat.cubic
dEQP-VK.texture.filtering.2d.formats.b10g11r11_ufloat.cubic
dEQP-VK.texture.filtering.2d.combinations.cubic.cubic.mirror_clamp_to_edge.mirrored_repeat
dEQP-VK.texture.filtering.2d.combinations.cubic.cubic.mirror_clamp_to_edge.clamp_to_edge
dEQP-VK.texture.filtering.2d.combinations.cubic.cubic.mirror_clamp_to_edge.clamp_to_border
-dEQP-VK.texture.filtering.2d.combinations.cubic.cubic.mirror_clamp_to_edge.mirror_clamp_to_edge
\ No newline at end of file
+dEQP-VK.texture.filtering.2d.combinations.cubic.cubic.mirror_clamp_to_edge.mirror_clamp_to_edge
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_1msc_sas_sub_alpha_s1a_1mda_add-color_sa_1mcc_min_alpha_cc_1mcc_sub-color_dc_1ms1a_sub_alpha_1mca_z_max-color_1msc_1msa_max_alpha_sc_s1c_min
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_ca_ca_rsub_alpha_1msa_s1c_rsub-color_dc_1ms1a_min_alpha_1ms1a_cc_rsub-color_ca_ca_add_alpha_s1c_sc_add-color_o_1ms1c_sub_alpha_z_1mda_sub
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_1ms1a_ca_add_alpha_1msa_cc_max-color_s1c_z_sub_alpha_sa_sc_add-color_da_da_max_alpha_s1c_cc_rsub-color_da_s1a_max_alpha_da_o_max
+dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_ca_1ms1a_sub_alpha_1msa_1mca_sub-color_1msc_da_max_alpha_o_da_add-color_s1c_s1a_max_alpha_dc_1ms1a_sub-color_s1a_z_sub_alpha_1msa_1msc_max
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_1msc_1ms1a_add_alpha_1mdc_1msa_sub-color_dc_1ms1c_rsub_alpha_z_1mdc_sub-color_ca_1ms1c_min_alpha_sas_ca_rsub-color_1ms1c_s1c_add_alpha_z_1mda_add
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_dc_1mca_min_alpha_1msa_1msc_sub-color_s1a_1msc_rsub_alpha_dc_dc_max-color_sa_1mda_sub_alpha_z_da_max-color_dc_sc_max_alpha_dc_1ms1c_sub
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_1ms1c_1mda_add_alpha_cc_1mca_min-color_da_o_sub_alpha_da_1mda_max-color_z_1mcc_sub_alpha_sc_cc_sub-color_1mca_1ms1a_max_alpha_cc_dc_max
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_s1a_cc_rsub_alpha_1msc_1mcc_min-color_sc_1mdc_add_alpha_da_ca_min-color_1mcc_1mda_max_alpha_1ms1c_s1a_min-color_s1c_cc_sub_alpha_ca_1mda_max
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_cc_1mca_add_alpha_o_1ms1a_sub-color_1mcc_1msc_max_alpha_1mdc_sas_sub-color_ca_1mdc_min_alpha_z_1mdc_max-color_1ms1c_1mdc_min_alpha_dc_o_min
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_sc_1mca_max_alpha_1ms1c_1mdc_sub-color_ca_1mda_sub_alpha_ca_o_rsub-color_cc_dc_add_alpha_ca_1msa_min-color_1ms1c_1mcc_max_alpha_sas_1mdc_rsub
+dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_ca_1ms1a_sub_alpha_1msa_1mdc_sub-color_1mda_sas_add_alpha_o_ca_add-color_sa_1mdc_sub_alpha_o_1mca_rsub-color_s1c_1msa_rsub_alpha_1msa_1mca_add
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_dc_1msa_sub_alpha_1mca_da_rsub-color_z_cc_add_alpha_sa_dc_add-color_s1a_1ms1a_rsub_alpha_1mca_s1c_min-color_1mdc_z_min_alpha_sc_1mcc_rsub
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_da_1ms1a_rsub_alpha_da_s1a_max-color_o_sc_max_alpha_1mcc_1msc_sub-color_1msc_1mcc_max_alpha_s1c_1mca_sub-color_ca_1mcc_max_alpha_s1a_dc_rsub
dEQP-VK.pipeline.blend.dual_source.format.r8g8b8a8_srgb.states.color_1ms1a_sa_max_alpha_sas_sas_min-color_1ms1c_1msa_sub_alpha_1msc_o_add-color_sa_sa_rsub_alpha_cc_cc_add-color_da_da_add_alpha_s1c_da_add