mirror of https://github.com/PCSX2/pcsx2.git
gsdx-ogl: color state impact the clean command
This commit is contained in:
parent
613e215c73
commit
08291aed0c
|
@ -441,6 +441,10 @@ void GSDeviceOGL::ClearRenderTarget(GSTexture* t, const GSVector4& c)
|
||||||
|
|
||||||
// TODO: check size of scissor before toggling it
|
// TODO: check size of scissor before toggling it
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
|
|
||||||
|
uint32 old_color_mask = GLState::wrgba;
|
||||||
|
OMSetColorMaskState();
|
||||||
|
|
||||||
if (T->IsBackbuffer()) {
|
if (T->IsBackbuffer()) {
|
||||||
OMSetFBO(0);
|
OMSetFBO(0);
|
||||||
|
|
||||||
|
@ -453,6 +457,9 @@ void GSDeviceOGL::ClearRenderTarget(GSTexture* t, const GSVector4& c)
|
||||||
|
|
||||||
gl_ClearBufferfv(GL_COLOR, 0, c.v);
|
gl_ClearBufferfv(GL_COLOR, 0, c.v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OMSetColorMaskState(OMColorMaskSelector(old_color_mask));
|
||||||
|
|
||||||
glEnable(GL_SCISSOR_TEST);
|
glEnable(GL_SCISSOR_TEST);
|
||||||
|
|
||||||
GL_POP();
|
GL_POP();
|
||||||
|
@ -470,6 +477,9 @@ void GSDeviceOGL::ClearRenderTarget_i(GSTexture* t, int32 c)
|
||||||
|
|
||||||
GL_PUSH(format("Clear RTi %d", T->GetID()).c_str());
|
GL_PUSH(format("Clear RTi %d", T->GetID()).c_str());
|
||||||
|
|
||||||
|
uint32 old_color_mask = GLState::wrgba;
|
||||||
|
OMSetColorMaskState();
|
||||||
|
|
||||||
// Keep SCISSOR_TEST enabled on purpose to reduce the size
|
// Keep SCISSOR_TEST enabled on purpose to reduce the size
|
||||||
// of clean in DATE (impact big upscaling)
|
// of clean in DATE (impact big upscaling)
|
||||||
int32 col[4] = {c, c, c, c};
|
int32 col[4] = {c, c, c, c};
|
||||||
|
@ -479,6 +489,8 @@ void GSDeviceOGL::ClearRenderTarget_i(GSTexture* t, int32 c)
|
||||||
|
|
||||||
gl_ClearBufferiv(GL_COLOR, 0, col);
|
gl_ClearBufferiv(GL_COLOR, 0, col);
|
||||||
|
|
||||||
|
OMSetColorMaskState(OMColorMaskSelector(old_color_mask));
|
||||||
|
|
||||||
GL_POP();
|
GL_POP();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -825,6 +837,8 @@ void GSDeviceOGL::DoMerge(GSTexture* st[2], GSVector4* sr, GSTexture* dt, GSVect
|
||||||
{
|
{
|
||||||
GL_PUSH("DoMerge");
|
GL_PUSH("DoMerge");
|
||||||
|
|
||||||
|
OMSetColorMaskState();
|
||||||
|
|
||||||
ClearRenderTarget(dt, c);
|
ClearRenderTarget(dt, c);
|
||||||
|
|
||||||
if(st[1] && !slbg)
|
if(st[1] && !slbg)
|
||||||
|
@ -846,6 +860,8 @@ void GSDeviceOGL::DoInterlace(GSTexture* st, GSTexture* dt, int shader, bool lin
|
||||||
{
|
{
|
||||||
GL_PUSH("DoInterlace");
|
GL_PUSH("DoInterlace");
|
||||||
|
|
||||||
|
OMSetColorMaskState();
|
||||||
|
|
||||||
GSVector4 s = GSVector4(dt->GetSize());
|
GSVector4 s = GSVector4(dt->GetSize());
|
||||||
|
|
||||||
GSVector4 sr(0, 0, 1, 1);
|
GSVector4 sr(0, 0, 1, 1);
|
||||||
|
@ -878,6 +894,8 @@ void GSDeviceOGL::DoFXAA(GSTexture* st, GSTexture* dt)
|
||||||
|
|
||||||
GL_PUSH("DoFxaa");
|
GL_PUSH("DoFxaa");
|
||||||
|
|
||||||
|
OMSetColorMaskState();
|
||||||
|
|
||||||
GSVector2i s = dt->GetSize();
|
GSVector2i s = dt->GetSize();
|
||||||
|
|
||||||
GSVector4 sr(0, 0, 1, 1);
|
GSVector4 sr(0, 0, 1, 1);
|
||||||
|
@ -914,6 +932,8 @@ void GSDeviceOGL::DoExternalFX(GSTexture* st, GSTexture* dt)
|
||||||
|
|
||||||
GL_PUSH("DoExternalFX");
|
GL_PUSH("DoExternalFX");
|
||||||
|
|
||||||
|
OMSetColorMaskState();
|
||||||
|
|
||||||
GSVector2i s = dt->GetSize();
|
GSVector2i s = dt->GetSize();
|
||||||
|
|
||||||
GSVector4 sr(0, 0, 1, 1);
|
GSVector4 sr(0, 0, 1, 1);
|
||||||
|
@ -936,6 +956,8 @@ void GSDeviceOGL::DoShadeBoost(GSTexture* st, GSTexture* dt)
|
||||||
{
|
{
|
||||||
GL_PUSH("DoShadeBoost");
|
GL_PUSH("DoShadeBoost");
|
||||||
|
|
||||||
|
OMSetColorMaskState();
|
||||||
|
|
||||||
GSVector2i s = dt->GetSize();
|
GSVector2i s = dt->GetSize();
|
||||||
|
|
||||||
GSVector4 sr(0, 0, 1, 1);
|
GSVector4 sr(0, 0, 1, 1);
|
||||||
|
|
|
@ -411,6 +411,7 @@ class GSDeviceOGL : public GSDevice
|
||||||
operator uint32() {return key & 0xf;}
|
operator uint32() {return key & 0xf;}
|
||||||
|
|
||||||
OMColorMaskSelector() : key(0xF) {}
|
OMColorMaskSelector() : key(0xF) {}
|
||||||
|
OMColorMaskSelector(uint32 c) { wrgba = c; }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct OMBlendSelector
|
struct OMBlendSelector
|
||||||
|
|
Loading…
Reference in New Issue