Merge pull request #5337 from stenzek/d3d-common-blending-state

D3D: Use blending state from VideoCommon
This commit is contained in:
Anthony
2017-09-03 19:25:46 -07:00
committed by GitHub
13 changed files with 51 additions and 280 deletions

View File

@ -8,6 +8,7 @@
#include "VideoCommon/BPFunctions.h"
#include "VideoCommon/BPMemory.h"
#include "VideoCommon/RenderBase.h"
#include "VideoCommon/RenderState.h"
#include "VideoCommon/VertexManagerBase.h"
#include "VideoCommon/VideoCommon.h"
#include "VideoCommon/VideoConfig.h"
@ -72,17 +73,9 @@ void SetDepthMode()
void SetBlendMode()
{
g_renderer->SetBlendMode(false);
}
void SetLogicOpMode()
{
g_renderer->SetLogicOpMode();
}
void SetColorMask()
{
g_renderer->SetColorMask();
BlendingState state;
state.Generate(bpmem);
g_renderer->SetBlendingState(state);
}
/* Explanation of the magic behind ClearScreen:

View File

@ -19,8 +19,6 @@ void SetGenerationMode();
void SetScissor();
void SetDepthMode();
void SetBlendMode();
void SetLogicOpMode();
void SetColorMask();
void ClearScreen(const EFBRectangle& rc);
void OnPixelFormatChange();
void SetInterlacingMode(const BPCmd& bp);

View File

@ -148,17 +148,7 @@ static void BPWritten(const BPCmd& bp)
bpmem.blendmode.dstfactor.Value(), bpmem.blendmode.srcfactor.Value(),
bpmem.blendmode.subtract.Value(), bpmem.blendmode.logicmode.Value());
// Set Blending Mode
if (bp.changes)
SetBlendMode();
// Set LogicOp Blending Mode
if (bp.changes & 0xF002) // logicopenable | logicmode
SetLogicOpMode();
// Set Color Mask
if (bp.changes & 0x18) // colorupdate | alphaupdate
SetColorMask();
SetBlendMode();
// Dither
if (bp.changes & 0x04)
@ -331,7 +321,6 @@ static void BPWritten(const BPCmd& bp)
if (bp.changes)
{
PixelShaderManager::SetAlphaTestChanged();
g_renderer->SetColorMask();
SetBlendMode();
}
return;
@ -420,11 +409,7 @@ static void BPWritten(const BPCmd& bp)
case BPMEM_ZCOMPARE: // Set the Z-Compare and EFB pixel format
OnPixelFormatChange();
if (bp.changes & 7)
{
SetBlendMode(); // dual source could be activated by changing to PIXELFMT_RGBA6_Z24
g_renderer->SetColorMask(); // alpha writing needs to be disabled if the new pixel format
// doesn't have an alpha channel
}
PixelShaderManager::SetZModeControl();
return;
@ -1414,8 +1399,6 @@ void BPReload()
SetGenerationMode();
SetScissor();
SetDepthMode();
SetLogicOpMode();
SetBlendMode();
SetColorMask();
OnPixelFormatChange();
}

View File

@ -29,6 +29,7 @@
#include "VideoCommon/AVIDump.h"
#include "VideoCommon/BPMemory.h"
#include "VideoCommon/FPSCounter.h"
#include "VideoCommon/RenderState.h"
#include "VideoCommon/VideoCommon.h"
class PostProcessingShaderImplementation;
@ -63,12 +64,10 @@ public:
PP_EFB_COPY_CLOCKS
};
virtual void SetColorMask() {}
virtual void SetBlendMode(bool forceUpdate) {}
virtual void SetBlendingState(const BlendingState& state) {}
virtual void SetScissorRect(const EFBRectangle& rc) {}
virtual void SetGenerationMode() {}
virtual void SetDepthMode() {}
virtual void SetLogicOpMode() {}
virtual void SetSamplerState(int stage, int texindex, bool custom_tex) {}
virtual void SetInterlacingMode() {}
virtual void SetViewport() {}