KhronosGroup / KhronosGroup/Vulkan-ValidationLayers

Fix vkCmdSetColorBlendAdvancedEXT extension dependency

Open
#10,282 0 comments 0 reactions 1 assignee View on GitHub

@spencer-lunarg is already working on this.

Since Jun 18, 2025.

codegen
Dominant language
C++
Stars
1k
Forks
505
Avg merge
11h 25m
Merged PRs (30d)
229

Description

Currently we have

bool Device::PreCallValidateCmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment,
                                                        uint32_t attachmentCount,
                                                        const VkColorBlendAdvancedEXT* pColorBlendAdvanced,
                                                        const ErrorObject& error_obj) const {
    bool skip = false;
    Context context(*this, error_obj, extensions);
    [[maybe_unused]] const Location loc = error_obj.location;
    if (!(IsExtEnabled(extensions.vk_ext_extended_dynamic_state3) || IsExtEnabled(extensions.vk_ext_shader_object)))
        skip |= OutputExtensionError(loc, {vvl::Extension::_VK_EXT_extended_dynamic_state3, vvl::Extension::_VK_EXT_shader_object});

the issue is in mesa if you call vkCmdSetColorBlendAdvancedEXT it will blow up, but they also don't support/expose VK_EXT_blend_operation_advanced so it should be caught, but it is not

test for later

TEST_F(VkLayerTest, ExtensionsCmdSetColorBlendAdvancedEXT) {
    TEST_DESCRIPTION("Don't enable VK_EXT_blend_operation_advanced");
    SetTargetApiVersion(VK_API_VERSION_1_1);
    AddRequiredExtensions(VK_EXT_SHADER_OBJECT_EXTENSION_NAME);
    AddRequiredFeature(vkt::Feature::shaderObject);
    RETURN_IF_SKIP(Init());

    m_command_buffer.Begin();
    VkColorBlendAdvancedEXT advanced = {VK_BLEND_OP_ADD, VK_FALSE, VK_FALSE, VK_BLEND_OVERLAP_UNCORRELATED_EXT,
                                                  VK_FALSE};
    // VU should be thrown here
    vk::CmdSetColorBlendAdvancedEXT(m_command_buffer, 0u, 1u, &advanced);
    m_command_buffer.End();
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.