gsdx AMD: broken for broken

Until AMD release the driver with a fix, I can't use 2nd blending source with SSO.

So let's use the first source. Blending/Alpha will be wrong. But it is likely better
than an uninitialized alpha value.
This commit is contained in:
Gregory Hainaut 2016-05-05 12:24:55 +02:00
parent f712c5c6d0
commit 5948c2d8cd
1 changed files with 18 additions and 2 deletions

View File

@ -1493,10 +1493,26 @@ void GSDeviceOGL::OMSetBlendState(uint8 blend_index, uint8 blend_factor, bool is
if (GLState::f_sRGB != b.src || GLState::f_dRGB != b.dst) {
GLState::f_sRGB = b.src;
GLState::f_dRGB = b.dst;
// AMD DRIVER SUCK
uint16 src = b.src;
uint16 dst = b.dst;
if (GLLoader::fglrx_buggy_driver) {
if (src == GL_SRC1_ALPHA)
src = GL_SRC_ALPHA;
else if (src == GL_ONE_MINUS_SRC1_ALPHA)
src = GL_ONE_MINUS_SRC_ALPHA;
if (dst == GL_SRC1_ALPHA)
dst = GL_SRC_ALPHA;
else if (dst == GL_ONE_MINUS_SRC1_ALPHA)
dst = GL_ONE_MINUS_SRC_ALPHA;
}
// AMD DRIVER SUCK
if (glBlendFuncSeparateiARB)
glBlendFuncSeparateiARB(0, b.src, b.dst, GL_ONE, GL_ZERO);
glBlendFuncSeparateiARB(0, src, dst, GL_ONE, GL_ZERO);
else
glBlendFuncSeparate(b.src, b.dst, GL_ONE, GL_ZERO);
glBlendFuncSeparate(src, dst, GL_ONE, GL_ZERO);
}
} else {