GPU/OpenGL: Fix incorrect fragcolor binding
This commit is contained in:
parent
2d6bdc1f82
commit
9dc82a738f
|
@ -190,15 +190,6 @@ void GPU_HW_OpenGL::SetCapabilities(HostDisplay* host_display)
|
||||||
int max_dual_source_draw_buffers = 0;
|
int max_dual_source_draw_buffers = 0;
|
||||||
glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &max_dual_source_draw_buffers);
|
glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &max_dual_source_draw_buffers);
|
||||||
m_supports_dual_source_blend = (max_dual_source_draw_buffers > 0);
|
m_supports_dual_source_blend = (max_dual_source_draw_buffers > 0);
|
||||||
|
|
||||||
// Dual-source blend currently has issues on Mesa for at least Gen7/Gen7.5. This needs more investigation, but just
|
|
||||||
// disable it for now.
|
|
||||||
if (std::strstr(gl_renderer, "Mesa DRI Intel(R) Haswell") || std::strstr(gl_renderer, "Mesa DRI Intel(R) Ivybridge"))
|
|
||||||
{
|
|
||||||
Log_WarningPrintf("Detected Mesa DRI broken dual-source blend, disabling.");
|
|
||||||
m_supports_dual_source_blend = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_supports_dual_source_blend)
|
if (!m_supports_dual_source_blend)
|
||||||
Log_WarningPrintf("Dual-source blending is not supported, this may break some mask effects.");
|
Log_WarningPrintf("Dual-source blending is not supported, this may break some mask effects.");
|
||||||
|
|
||||||
|
@ -355,7 +346,17 @@ bool GPU_HW_OpenGL::CompilePrograms()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_is_gles)
|
if (!m_is_gles)
|
||||||
prog.BindFragData(0, "o_col0");
|
{
|
||||||
|
if (m_supports_dual_source_blend)
|
||||||
|
{
|
||||||
|
prog.BindFragDataIndexed(0, "o_col0");
|
||||||
|
prog.BindFragDataIndexed(1, "o_col1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prog.BindFragData(0, "o_col0");
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::optional<GL::Program> prog = m_shader_cache.GetProgram(batch_vs, {}, fs, link_callback);
|
std::optional<GL::Program> prog = m_shader_cache.GetProgram(batch_vs, {}, fs, link_callback);
|
||||||
|
@ -397,17 +398,7 @@ bool GPU_HW_OpenGL::CompilePrograms()
|
||||||
|
|
||||||
std::optional<GL::Program> prog = m_shader_cache.GetProgram(vs, {}, fs, [this](GL::Program& prog) {
|
std::optional<GL::Program> prog = m_shader_cache.GetProgram(vs, {}, fs, [this](GL::Program& prog) {
|
||||||
if (!m_is_gles)
|
if (!m_is_gles)
|
||||||
{
|
prog.BindFragData(0, "o_col0");
|
||||||
if (m_supports_dual_source_blend)
|
|
||||||
{
|
|
||||||
prog.BindFragDataIndexed(0, "o_col0");
|
|
||||||
prog.BindFragDataIndexed(1, "o_col1");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
prog.BindFragData(0, "o_col0");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
if (!prog)
|
if (!prog)
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue