VideoCommon: Add usedualsrc field to BlendingState

This is because we re-use BlendingState for our internal drawing (e.g.
RasterFont) and for these shaders, we can't assume the presence of a
second color output.
This commit is contained in:
Stenzek 2017-04-17 23:11:58 +10:00
parent 936910163a
commit 34ad5b457d
3 changed files with 3 additions and 1 deletions

View File

@ -1214,7 +1214,7 @@ void Renderer::SetBlendMode(bool forceUpdate)
state.Generate(bpmem);
bool useDualSource =
g_ActiveConfig.backend_info.bSupportsDualSourceBlend &&
state.usedualsrc && g_ActiveConfig.backend_info.bSupportsDualSourceBlend &&
(!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_DUAL_SOURCE_BLENDING) || state.dstalpha);
const GLenum src_factors[8] = {

View File

@ -65,6 +65,7 @@ void BlendingState::Generate(const BPMemory& bp)
colorupdate = bp.blendmode.colorupdate && alpha_test_may_success;
alphaupdate = bp.blendmode.alphaupdate && target_has_alpha && alpha_test_may_success;
dstalpha = bp.dstalpha.enable && alphaupdate;
usedualsrc = true;
// The subtract bit has the highest priority
if (bp.blendmode.subtract)

View File

@ -26,6 +26,7 @@ union BlendingState
BitField<14, 3, BlendMode::BlendFactor> dstfactoralpha;
BitField<17, 3, BlendMode::BlendFactor> srcfactoralpha;
BitField<20, 4, BlendMode::LogicOp> logicmode;
BitField<24, 1, u32> usedualsrc;
u32 hex;
};