From c95d470d3508a4212b4ae87fbf7ee6e8c6fc45e7 Mon Sep 17 00:00:00 2001 From: Jari Komppa Date: Mon, 10 Jul 2017 15:31:11 +0300 Subject: [PATCH] Allow higher precision temp buffer in blend tests Some blend tests were disabled because the results differ on implementations that store the intermediate values in higher precision, and only store the final result in the target buffer format. This change enables the tests, and adds two additional legal results for the tests. If none of the channels in the target buffer format exceed 8 bits, comparison against a 8888 buffer result is checked. If that fails, or some channel is wider than 8 bits, comparison against a F64 buffer is done. The 8888 and F64 results are first converted to the target buffer format, and comparison threshold is the same as with the direct comparison (dependent on the target buffer precision). The higher precision tests are not done for formats where all channels fit into 8, 16 or 32 bit formats. Affects: dEQP-VK.pipeline.blend.format.* Components: Vulkan VK-GL-CTS issue: 105 Change-Id: I26d99df151d9602bf9600b1694c3165990b93841 --- .../vulkan/pipeline/vktPipelineBlendTests.cpp | 167 +++++++++++++++++++-- .../mustpass/1.0.3/src/excluded-tests.txt | 10 -- external/vulkancts/mustpass/1.0.3/vk-default.txt | 8 + 3 files changed, 165 insertions(+), 20 deletions(-) diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp index a9e7d63..d7091c0 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp @@ -878,15 +878,115 @@ tcu::Vec4 BlendTestInstance::getFormatThreshold (const tcu::TextureFormat& forma return threshold; } +bool isLegalExpandableFormat (tcu::TextureFormat::ChannelType channeltype) +{ + using tcu::TextureFormat; + + switch (channeltype) + { + case TextureFormat::UNORM_INT24: + case TextureFormat::UNORM_BYTE_44: + case TextureFormat::UNORM_SHORT_565: + case TextureFormat::UNORM_SHORT_555: + case TextureFormat::UNORM_SHORT_4444: + case TextureFormat::UNORM_SHORT_5551: + case TextureFormat::UNORM_SHORT_1555: + case TextureFormat::UNORM_INT_101010: + case TextureFormat::SNORM_INT_1010102_REV: + case TextureFormat::UNORM_INT_1010102_REV: + case TextureFormat::UNSIGNED_BYTE_44: + case TextureFormat::UNSIGNED_SHORT_565: + case TextureFormat::UNSIGNED_SHORT_4444: + case TextureFormat::UNSIGNED_SHORT_5551: + case TextureFormat::SIGNED_INT_1010102_REV: + case TextureFormat::UNSIGNED_INT_1010102_REV: + case TextureFormat::UNSIGNED_INT_11F_11F_10F_REV: + case TextureFormat::UNSIGNED_INT_999_E5_REV: + case TextureFormat::UNSIGNED_INT_24_8: + case TextureFormat::UNSIGNED_INT_24_8_REV: + case TextureFormat::UNSIGNED_INT24: + case TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV: + return true; + + case TextureFormat::SNORM_INT8: + case TextureFormat::SNORM_INT16: + case TextureFormat::SNORM_INT32: + case TextureFormat::UNORM_INT8: + case TextureFormat::UNORM_INT16: + case TextureFormat::UNORM_INT32: + case TextureFormat::UNSIGNED_INT_16_8_8: + case TextureFormat::SIGNED_INT8: + case TextureFormat::SIGNED_INT16: + case TextureFormat::SIGNED_INT32: + case TextureFormat::UNSIGNED_INT8: + case TextureFormat::UNSIGNED_INT16: + case TextureFormat::UNSIGNED_INT32: + case TextureFormat::HALF_FLOAT: + case TextureFormat::FLOAT: + case TextureFormat::FLOAT64: + return false; + + default: + DE_FATAL("Unknown texture format"); + } + return false; +} + +bool isSmallerThan8BitFormat (tcu::TextureFormat::ChannelType channeltype) +{ + using tcu::TextureFormat; + + // Note: only checks the legal expandable formats + // (i.e, formats that have channels that fall outside + // the 8, 16 and 32 bit width) + switch (channeltype) + { + case TextureFormat::UNORM_BYTE_44: + case TextureFormat::UNORM_SHORT_565: + case TextureFormat::UNORM_SHORT_555: + case TextureFormat::UNORM_SHORT_4444: + case TextureFormat::UNORM_SHORT_5551: + case TextureFormat::UNORM_SHORT_1555: + case TextureFormat::UNSIGNED_BYTE_44: + case TextureFormat::UNSIGNED_SHORT_565: + case TextureFormat::UNSIGNED_SHORT_4444: + case TextureFormat::UNSIGNED_SHORT_5551: + return true; + + case TextureFormat::UNORM_INT24: + case TextureFormat::UNORM_INT_101010: + case TextureFormat::SNORM_INT_1010102_REV: + case TextureFormat::UNORM_INT_1010102_REV: + case TextureFormat::SIGNED_INT_1010102_REV: + case TextureFormat::UNSIGNED_INT_1010102_REV: + case TextureFormat::UNSIGNED_INT_11F_11F_10F_REV: + case TextureFormat::UNSIGNED_INT_999_E5_REV: + case TextureFormat::UNSIGNED_INT_24_8: + case TextureFormat::UNSIGNED_INT_24_8_REV: + case TextureFormat::UNSIGNED_INT24: + case TextureFormat::FLOAT_UNSIGNED_INT_24_8_REV: + return false; + + default: + DE_FATAL("Unknown texture format"); + } + + return false; +} + tcu::TestStatus BlendTestInstance::verifyImage (void) { - const tcu::TextureFormat tcuColorFormat = mapVkFormat(m_colorFormat); - const tcu::TextureFormat tcuDepthFormat = tcu::TextureFormat(); // Undefined depth/stencil format + const tcu::TextureFormat tcuColorFormat = mapVkFormat(m_colorFormat); + const tcu::TextureFormat tcuColorFormat64 = mapVkFormat(VK_FORMAT_R64G64B64A64_SFLOAT); + const tcu::TextureFormat tcuColorFormat8 = mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM); + const tcu::TextureFormat tcuDepthFormat = tcu::TextureFormat(); // Undefined depth/stencil format const ColorVertexShader vertexShader; - const ColorFragmentShader fragmentShader (tcuColorFormat, tcuDepthFormat); - const rr::Program program (&vertexShader, &fragmentShader); - ReferenceRenderer refRenderer (m_renderSize.x(), m_renderSize.y(), 1, tcuColorFormat, tcuDepthFormat, &program); - bool compareOk = false; + const ColorFragmentShader fragmentShader (tcuColorFormat, tcuDepthFormat); + const rr::Program program (&vertexShader, &fragmentShader); + ReferenceRenderer refRenderer (m_renderSize.x(), m_renderSize.y(), 1, tcuColorFormat, tcuDepthFormat, &program); + ReferenceRenderer refRenderer64 (m_renderSize.x(), m_renderSize.y(), 1, tcuColorFormat64, tcuDepthFormat, &program); + ReferenceRenderer refRenderer8 (m_renderSize.x(), m_renderSize.y(), 1, tcuColorFormat8, tcuDepthFormat, &program); + bool compareOk = false; // Render reference image { @@ -907,13 +1007,26 @@ tcu::TestStatus BlendTestInstance::verifyImage (void) renderState.fragOps.colorMask = mapVkColorComponentFlags(BlendTest::s_colorWriteMasks[quadNdx]); refRenderer.draw(renderState, - rr::PRIMITIVETYPE_TRIANGLES, - std::vector(m_vertices.begin() + quadNdx * 6, - m_vertices.begin() + (quadNdx + 1) * 6)); + rr::PRIMITIVETYPE_TRIANGLES, + std::vector(m_vertices.begin() + quadNdx * 6, + m_vertices.begin() + (quadNdx + 1) * 6)); + + if (isLegalExpandableFormat(tcuColorFormat.type)) + { + refRenderer64.draw(renderState, + rr::PRIMITIVETYPE_TRIANGLES, + std::vector(m_vertices.begin() + quadNdx * 6, + m_vertices.begin() + (quadNdx + 1) * 6)); + + if (isSmallerThan8BitFormat(tcuColorFormat.type)) + refRenderer8.draw(renderState, + rr::PRIMITIVETYPE_TRIANGLES, + std::vector(m_vertices.begin() + quadNdx * 6, + m_vertices.begin() + (quadNdx + 1) * 6)); + } } } - // Compare result with reference image { const DeviceInterface& vk = m_context.getDeviceInterface(); @@ -923,6 +1036,9 @@ tcu::TestStatus BlendTestInstance::verifyImage (void) SimpleAllocator allocator (vk, vkDevice, getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice())); de::UniquePtr result (readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *m_colorImage, m_colorFormat, m_renderSize).release()); const tcu::Vec4 threshold (getFormatThreshold(tcuColorFormat)); + tcu::TextureLevel refLevel; + + refLevel.setStorage(tcuColorFormat, m_renderSize.x(), m_renderSize.y(), 1); compareOk = tcu::floatThresholdCompare(m_context.getTestContext().getLog(), "FloatImageCompare", @@ -931,6 +1047,37 @@ tcu::TestStatus BlendTestInstance::verifyImage (void) result->getAccess(), threshold, tcu::COMPARE_LOG_RESULT); + + if (isLegalExpandableFormat(tcuColorFormat.type)) + { + if (!compareOk && isSmallerThan8BitFormat(tcuColorFormat.type)) + { + // Convert to target format + tcu::copy(refLevel.getAccess(), refRenderer8.getAccess()); + + compareOk = tcu::floatThresholdCompare(m_context.getTestContext().getLog(), + "FloatImageCompare", + "Image comparison, 8 bit intermediate format", + refLevel.getAccess(), + result->getAccess(), + threshold, + tcu::COMPARE_LOG_RESULT); + } + + if (!compareOk) + { + // Convert to target format + tcu::copy(refLevel.getAccess(), refRenderer64.getAccess()); + + compareOk = tcu::floatThresholdCompare(m_context.getTestContext().getLog(), + "FloatImageCompare", + "Image comparison, 64 bit intermediate format", + refLevel.getAccess(), + result->getAccess(), + threshold, + tcu::COMPARE_LOG_RESULT); + } + } } if (compareOk) diff --git a/external/vulkancts/mustpass/1.0.3/src/excluded-tests.txt b/external/vulkancts/mustpass/1.0.3/src/excluded-tests.txt index 94cf783..9e46193 100644 --- a/external/vulkancts/mustpass/1.0.3/src/excluded-tests.txt +++ b/external/vulkancts/mustpass/1.0.3/src/excluded-tests.txt @@ -9,16 +9,6 @@ dEQP-VK.glsl.builtin.precision.reflect.highp_compute.vec4 dEQP-VK.glsl.builtin.precision.sin.mediump_compute.* dEQP-VK.glsl.builtin.precision.tan.mediump_compute.* -# Issue 242: Excluded blend tests where propagated errors may be large -dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_dc_dc_add_alpha_o_1msc_add-color_sas_1mdc_max_alpha_sa_1msc_min-color_dc_sas_min_alpha_1mcc_cc_sub-color_z_1mda_add_alpha_o_1mdc_add -dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_sa_z_sub_alpha_ca_cc_sub-color_sas_1msa_rsub_alpha_ca_da_sub-color_1mca_ca_min_alpha_1msc_1mcc_rsub-color_dc_da_sub_alpha_1mcc_1mda_add -dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mcc_cc_min_alpha_sc_cc_min-color_o_o_min_alpha_1msc_1msc_add-color_sas_da_add_alpha_1mdc_ca_add-color_cc_1mda_sub_alpha_dc_1mda_add -dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_dc_dc_add_alpha_o_1msc_add-color_sas_1mdc_max_alpha_sa_1msc_min-color_dc_sas_min_alpha_1mcc_cc_sub-color_z_1mda_add_alpha_o_1mdc_add -dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_sa_z_sub_alpha_ca_cc_sub-color_sas_1msa_rsub_alpha_ca_da_sub-color_1mca_ca_min_alpha_1msc_1mcc_rsub-color_dc_da_sub_alpha_1mcc_1mda_add -dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mcc_cc_min_alpha_sc_cc_min-color_o_o_min_alpha_1msc_1msc_add-color_sas_da_add_alpha_1mdc_ca_add-color_cc_1mda_sub_alpha_dc_1mda_add -dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_dc_dc_add_alpha_o_1msc_add-color_sas_1mdc_max_alpha_sa_1msc_min-color_dc_sas_min_alpha_1mcc_cc_sub-color_z_1mda_add_alpha_o_1mdc_add -dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_sa_z_sub_alpha_ca_cc_sub-color_sas_1msa_rsub_alpha_ca_da_sub-color_1mca_ca_min_alpha_1msc_1mcc_rsub-color_dc_da_sub_alpha_1mcc_1mda_add - # Excluded texture function tests according to the Android GLES3 issue list dEQP-VK.glsl.texture_functions.texturegrad.isamplercube_fragment dEQP-VK.glsl.texture_functions.texturegrad.samplercubeshadow_fragment diff --git a/external/vulkancts/mustpass/1.0.3/vk-default.txt b/external/vulkancts/mustpass/1.0.3/vk-default.txt index 0051f0e..ba1abdd 100644 --- a/external/vulkancts/mustpass/1.0.3/vk-default.txt +++ b/external/vulkancts/mustpass/1.0.3/vk-default.txt @@ -84303,6 +84303,7 @@ dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_o_ca_sub_alpha_ dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1msc_dc_max_alpha_cc_1mca_rsub-color_o_1msa_min_alpha_1mda_1mda_rsub-color_cc_1mdc_add_alpha_sc_1mdc_add-color_sa_1mdc_min_alpha_sc_1mcc_sub dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_o_1msa_min_alpha_1mcc_1mdc_max-color_z_sas_add_alpha_1mda_dc_add-color_sc_1mda_add_alpha_sc_cc_rsub-color_1msc_1msc_max_alpha_z_o_max dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1msa_sas_sub_alpha_1msa_1mca_sub-color_sas_ca_max_alpha_1mda_1msa_add-color_sa_da_sub_alpha_sa_z_rsub-color_ca_1mdc_add_alpha_z_sc_max +dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_sa_z_sub_alpha_ca_cc_sub-color_sas_1msa_rsub_alpha_ca_da_sub-color_1mca_ca_min_alpha_1msc_1mcc_rsub-color_dc_da_sub_alpha_1mcc_1mda_add dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_z_o_sub_alpha_1msa_1msa_sub-color_1mca_o_add_alpha_sa_sc_max-color_o_ca_rsub_alpha_o_dc_max-color_cc_1mdc_rsub_alpha_sas_z_rsub dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mda_1msc_rsub_alpha_sa_1mda_min-color_sa_1mcc_rsub_alpha_1msa_1mdc_max-color_ca_1mcc_max_alpha_1mca_1mcc_sub-color_dc_dc_max_alpha_da_sc_max dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_z_1mdc_rsub_alpha_1msa_cc_sub-color_da_1msc_min_alpha_1msc_sc_add-color_sa_sas_add_alpha_z_o_sub-color_dc_1msc_max_alpha_sa_da_sub @@ -84331,6 +84332,7 @@ dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_da_sc_max_alpha dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_sas_1msc_min_alpha_dc_1mda_sub-color_o_1msc_max_alpha_1mda_1mca_add-color_cc_sc_add_alpha_ca_1mcc_rsub-color_1mca_dc_min_alpha_sc_o_sub dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mcc_1mda_rsub_alpha_da_da_rsub-color_sas_1mdc_rsub_alpha_1msa_sa_add-color_cc_cc_rsub_alpha_sa_1mca_min-color_z_1msa_max_alpha_1msc_cc_rsub dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_cc_cc_rsub_alpha_sas_1mcc_max-color_da_1mca_max_alpha_da_1msa_sub-color_z_o_rsub_alpha_dc_sas_sub-color_1mda_1msa_add_alpha_1mda_1mdc_rsub +dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mcc_cc_min_alpha_sc_cc_min-color_o_o_min_alpha_1msc_1msc_add-color_sas_da_add_alpha_1mdc_ca_add-color_cc_1mda_sub_alpha_dc_1mda_add dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mca_z_min_alpha_1mcc_cc_max-color_z_sas_max_alpha_ca_sa_max-color_1mcc_1mca_sub_alpha_sa_o_rsub-color_z_1mdc_sub_alpha_o_1mda_sub dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_z_1msa_sub_alpha_z_o_rsub-color_o_sc_sub_alpha_1mdc_1mda_rsub-color_1mcc_1mdc_rsub_alpha_1mcc_z_min-color_cc_sa_max_alpha_o_da_add dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_ca_sa_min_alpha_1mdc_dc_rsub-color_1mcc_1mca_sub_alpha_1mdc_dc_min-color_o_1mcc_sub_alpha_1msc_z_min-color_sas_1msa_add_alpha_z_1msa_add @@ -84360,6 +84362,7 @@ dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mda_sa_min_alp dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mca_1mda_add_alpha_1mda_1mcc_add-color_da_1msc_add_alpha_1mca_ca_max-color_cc_da_sub_alpha_dc_da_rsub-color_z_1mdc_rsub_alpha_1mca_1msa_max dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_da_sc_rsub_alpha_sa_cc_rsub-color_sas_1mda_sub_alpha_1mcc_dc_sub-color_da_1mca_min_alpha_1mda_o_rsub-color_1msa_da_max_alpha_ca_cc_sub dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mcc_dc_max_alpha_1mca_1mca_sub-color_1mda_1mdc_max_alpha_sc_sas_rsub-color_1msc_cc_add_alpha_1msc_1msc_max-color_cc_sc_min_alpha_dc_1msc_min +dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_dc_dc_add_alpha_o_1msc_add-color_sas_1mdc_max_alpha_sa_1msc_min-color_dc_sas_min_alpha_1mcc_cc_sub-color_z_1mda_add_alpha_o_1mdc_add dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mca_1mca_sub_alpha_o_1mda_add-color_z_1mcc_max_alpha_sc_1mdc_add-color_1mca_1mdc_add_alpha_sc_sa_min-color_sas_o_max_alpha_1mcc_1mdc_add dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_dc_1msc_min_alpha_ca_cc_min-color_z_1msc_rsub_alpha_sa_z_sub-color_1mdc_1mdc_max_alpha_sa_cc_sub-color_1mcc_1mdc_max_alpha_dc_1mda_max dEQP-VK.pipeline.blend.format.r5g5b5a1_unorm_pack16.states.color_1mda_ca_sub_alpha_1mda_dc_add-color_1msa_z_sub_alpha_o_sa_sub-color_dc_1mcc_max_alpha_sa_dc_max-color_o_da_sub_alpha_1mda_1msc_sub @@ -85600,6 +85603,7 @@ dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_o_ca_sub_alp dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1msc_dc_max_alpha_cc_1mca_rsub-color_o_1msa_min_alpha_1mda_1mda_rsub-color_cc_1mdc_add_alpha_sc_1mdc_add-color_sa_1mdc_min_alpha_sc_1mcc_sub dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_o_1msa_min_alpha_1mcc_1mdc_max-color_z_sas_add_alpha_1mda_dc_add-color_sc_1mda_add_alpha_sc_cc_rsub-color_1msc_1msc_max_alpha_z_o_max dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1msa_sas_sub_alpha_1msa_1mca_sub-color_sas_ca_max_alpha_1mda_1msa_add-color_sa_da_sub_alpha_sa_z_rsub-color_ca_1mdc_add_alpha_z_sc_max +dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_sa_z_sub_alpha_ca_cc_sub-color_sas_1msa_rsub_alpha_ca_da_sub-color_1mca_ca_min_alpha_1msc_1mcc_rsub-color_dc_da_sub_alpha_1mcc_1mda_add dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_z_o_sub_alpha_1msa_1msa_sub-color_1mca_o_add_alpha_sa_sc_max-color_o_ca_rsub_alpha_o_dc_max-color_cc_1mdc_rsub_alpha_sas_z_rsub dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1mda_1msc_rsub_alpha_sa_1mda_min-color_sa_1mcc_rsub_alpha_1msa_1mdc_max-color_ca_1mcc_max_alpha_1mca_1mcc_sub-color_dc_dc_max_alpha_da_sc_max dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_z_1mdc_rsub_alpha_1msa_cc_sub-color_da_1msc_min_alpha_1msc_sc_add-color_sa_sas_add_alpha_z_o_sub-color_dc_1msc_max_alpha_sa_da_sub @@ -85658,6 +85662,7 @@ dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1mda_sa_min_ dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1mca_1mda_add_alpha_1mda_1mcc_add-color_da_1msc_add_alpha_1mca_ca_max-color_cc_da_sub_alpha_dc_da_rsub-color_z_1mdc_rsub_alpha_1mca_1msa_max dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_da_sc_rsub_alpha_sa_cc_rsub-color_sas_1mda_sub_alpha_1mcc_dc_sub-color_da_1mca_min_alpha_1mda_o_rsub-color_1msa_da_max_alpha_ca_cc_sub dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1mcc_dc_max_alpha_1mca_1mca_sub-color_1mda_1mdc_max_alpha_sc_sas_rsub-color_1msc_cc_add_alpha_1msc_1msc_max-color_cc_sc_min_alpha_dc_1msc_min +dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_dc_dc_add_alpha_o_1msc_add-color_sas_1mdc_max_alpha_sa_1msc_min-color_dc_sas_min_alpha_1mcc_cc_sub-color_z_1mda_add_alpha_o_1mdc_add dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1mca_1mca_sub_alpha_o_1mda_add-color_z_1mcc_max_alpha_sc_1mdc_add-color_1mca_1mdc_add_alpha_sc_sa_min-color_sas_o_max_alpha_1mcc_1mdc_add dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_dc_1msc_min_alpha_ca_cc_min-color_z_1msc_rsub_alpha_sa_z_sub-color_1mdc_1mdc_max_alpha_sa_cc_sub-color_1mcc_1mdc_max_alpha_dc_1mda_max dEQP-VK.pipeline.blend.format.a2r10g10b10_unorm_pack32.states.color_1mda_ca_sub_alpha_1mda_dc_add-color_1msa_z_sub_alpha_o_sa_sub-color_dc_1mcc_max_alpha_sa_dc_max-color_o_da_sub_alpha_1mda_1msc_sub @@ -87598,6 +87603,7 @@ dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_o_ca_sub_alpha_ dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1msc_dc_max_alpha_cc_1mca_rsub-color_o_1msa_min_alpha_1mda_1mda_rsub-color_cc_1mdc_add_alpha_sc_1mdc_add-color_sa_1mdc_min_alpha_sc_1mcc_sub dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_o_1msa_min_alpha_1mcc_1mdc_max-color_z_sas_add_alpha_1mda_dc_add-color_sc_1mda_add_alpha_sc_cc_rsub-color_1msc_1msc_max_alpha_z_o_max dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1msa_sas_sub_alpha_1msa_1mca_sub-color_sas_ca_max_alpha_1mda_1msa_add-color_sa_da_sub_alpha_sa_z_rsub-color_ca_1mdc_add_alpha_z_sc_max +dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_sa_z_sub_alpha_ca_cc_sub-color_sas_1msa_rsub_alpha_ca_da_sub-color_1mca_ca_min_alpha_1msc_1mcc_rsub-color_dc_da_sub_alpha_1mcc_1mda_add dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_z_o_sub_alpha_1msa_1msa_sub-color_1mca_o_add_alpha_sa_sc_max-color_o_ca_rsub_alpha_o_dc_max-color_cc_1mdc_rsub_alpha_sas_z_rsub dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mda_1msc_rsub_alpha_sa_1mda_min-color_sa_1mcc_rsub_alpha_1msa_1mdc_max-color_ca_1mcc_max_alpha_1mca_1mcc_sub-color_dc_dc_max_alpha_da_sc_max dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_z_1mdc_rsub_alpha_1msa_cc_sub-color_da_1msc_min_alpha_1msc_sc_add-color_sa_sas_add_alpha_z_o_sub-color_dc_1msc_max_alpha_sa_da_sub @@ -87626,6 +87632,7 @@ dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_da_sc_max_alpha dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_sas_1msc_min_alpha_dc_1mda_sub-color_o_1msc_max_alpha_1mda_1mca_add-color_cc_sc_add_alpha_ca_1mcc_rsub-color_1mca_dc_min_alpha_sc_o_sub dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mcc_1mda_rsub_alpha_da_da_rsub-color_sas_1mdc_rsub_alpha_1msa_sa_add-color_cc_cc_rsub_alpha_sa_1mca_min-color_z_1msa_max_alpha_1msc_cc_rsub dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_cc_cc_rsub_alpha_sas_1mcc_max-color_da_1mca_max_alpha_da_1msa_sub-color_z_o_rsub_alpha_dc_sas_sub-color_1mda_1msa_add_alpha_1mda_1mdc_rsub +dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mcc_cc_min_alpha_sc_cc_min-color_o_o_min_alpha_1msc_1msc_add-color_sas_da_add_alpha_1mdc_ca_add-color_cc_1mda_sub_alpha_dc_1mda_add dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mca_z_min_alpha_1mcc_cc_max-color_z_sas_max_alpha_ca_sa_max-color_1mcc_1mca_sub_alpha_sa_o_rsub-color_z_1mdc_sub_alpha_o_1mda_sub dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_z_1msa_sub_alpha_z_o_rsub-color_o_sc_sub_alpha_1mdc_1mda_rsub-color_1mcc_1mdc_rsub_alpha_1mcc_z_min-color_cc_sa_max_alpha_o_da_add dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_ca_sa_min_alpha_1mdc_dc_rsub-color_1mcc_1mca_sub_alpha_1mdc_dc_min-color_o_1mcc_sub_alpha_1msc_z_min-color_sas_1msa_add_alpha_z_1msa_add @@ -87655,6 +87662,7 @@ dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mda_sa_min_alp dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mca_1mda_add_alpha_1mda_1mcc_add-color_da_1msc_add_alpha_1mca_ca_max-color_cc_da_sub_alpha_dc_da_rsub-color_z_1mdc_rsub_alpha_1mca_1msa_max dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_da_sc_rsub_alpha_sa_cc_rsub-color_sas_1mda_sub_alpha_1mcc_dc_sub-color_da_1mca_min_alpha_1mda_o_rsub-color_1msa_da_max_alpha_ca_cc_sub dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mcc_dc_max_alpha_1mca_1mca_sub-color_1mda_1mdc_max_alpha_sc_sas_rsub-color_1msc_cc_add_alpha_1msc_1msc_max-color_cc_sc_min_alpha_dc_1msc_min +dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_dc_dc_add_alpha_o_1msc_add-color_sas_1mdc_max_alpha_sa_1msc_min-color_dc_sas_min_alpha_1mcc_cc_sub-color_z_1mda_add_alpha_o_1mdc_add dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mca_1mca_sub_alpha_o_1mda_add-color_z_1mcc_max_alpha_sc_1mdc_add-color_1mca_1mdc_add_alpha_sc_sa_min-color_sas_o_max_alpha_1mcc_1mdc_add dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_dc_1msc_min_alpha_ca_cc_min-color_z_1msc_rsub_alpha_sa_z_sub-color_1mdc_1mdc_max_alpha_sa_cc_sub-color_1mcc_1mdc_max_alpha_dc_1mda_max dEQP-VK.pipeline.blend.format.b5g5r5a1_unorm_pack16.states.color_1mda_ca_sub_alpha_1mda_dc_add-color_1msa_z_sub_alpha_o_sa_sub-color_dc_1mcc_max_alpha_sa_dc_max-color_o_da_sub_alpha_1mda_1msc_sub -- 2.7.4