KhronosGroup / KhronosGroup/Vulkan-ValidationLayers
Fix vkCmdSetColorBlendAdvancedEXT extension dependency
Open
@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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.