Dual source blending?!

What exactly is dual source blending good for?

Is it just for specific hardware that can get some more performance then doing it in a fragment shader? Or does it actually give some functionality that can not be done via shader and single source blending?

Seems to be a very esoteric feature. But Vulkan implements it. I was hoping somebody here can tell me more about it?!

Links:

[ul]
[li]Re: Blend selected color components? [/li][li]Writing the Blend-Color in the fragment shader [/li][li]OpenGL#OpenGL 3.3 [/li][li]OpenGL 3.3 (2010)[/li][li]Blending Pixel Shader Outputs (DX11) [/li][/ul]
Looking back, it appears it was added to OpenGL 3.3/4.0 for feature-parity with DX10.

See Example Use Cases.

I use it for sub-pixel font rendering.

Pixel shader example:


#version 330 core

uniform sampler2D tCharTex;
uniform vec4 vCharColor;

smooth in vec2 vTexXY;

layout (location = 0, index = 0) out vec4 vFragColor;
layout (location = 0, index = 1) out vec4 vFragBlend;

void main() {
	vFragColor = vec4(vCharColor.rgb, 1.0);
	vFragBlend = texture(tCharTex, vTexXY) * vCharColor.aaaa;
}