From 22af70d0d003a8b28238238802aa321962262100 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Fri, 23 Mar 2018 19:24:40 +0300 Subject: [PATCH] gl: Always use indexed blend caps to avoid conflict with the state cache. - glEnable/glDisable should not be used with GL_BLEND as the main renderer uses the indexed variant --- rpcs3/Emu/RSX/GL/GLOverlays.h | 10 +++++----- rpcs3/Emu/RSX/GL/GLProcTable.h | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/rpcs3/Emu/RSX/GL/GLOverlays.h b/rpcs3/Emu/RSX/GL/GLOverlays.h index c521fa13f3..bec9fa694b 100644 --- a/rpcs3/Emu/RSX/GL/GLOverlays.h +++ b/rpcs3/Emu/RSX/GL/GLOverlays.h @@ -155,7 +155,7 @@ namespace gl GLboolean scissor_enabled = glIsEnabled(GL_SCISSOR_TEST); GLboolean depth_test_enabled = glIsEnabled(GL_DEPTH_TEST); GLboolean cull_face_enabled = glIsEnabled(GL_CULL_FACE); - GLboolean blend_enabled = glIsEnabled(GL_BLEND); + GLboolean blend_enabled = glIsEnabledi(GL_BLEND, 0); GLboolean stencil_test_enabled = glIsEnabled(GL_STENCIL_TEST); if (use_blending) @@ -184,14 +184,14 @@ namespace gl if (use_blending) { if (!blend_enabled) - glEnable(GL_BLEND); + glEnablei(GL_BLEND, 0); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); } else if (blend_enabled) { - glDisable(GL_BLEND); + glDisablei(GL_BLEND, 0); } // Render @@ -226,14 +226,14 @@ namespace gl if (use_blending) { if (!blend_enabled) - glDisable(GL_BLEND); + glDisablei(GL_BLEND, 0); glBlendFuncSeparate(blend_src_rgb, blend_dst_rgb, blend_src_a, blend_dst_a); glBlendEquationSeparate(blend_eq_rgb, blend_eq_a); } else if (blend_enabled) { - glEnable(GL_BLEND); + glEnablei(GL_BLEND, 0); } } else diff --git a/rpcs3/Emu/RSX/GL/GLProcTable.h b/rpcs3/Emu/RSX/GL/GLProcTable.h index 2104dbefc7..890a8b4a02 100644 --- a/rpcs3/Emu/RSX/GL/GLProcTable.h +++ b/rpcs3/Emu/RSX/GL/GLProcTable.h @@ -157,6 +157,7 @@ OPENGL_PROC(PFNGLDRAWBUFFERSPROC, DrawBuffers); OPENGL_PROC(PFNGLENABLEIPROC, Enablei); OPENGL_PROC(PFNGLDISABLEIPROC, Disablei); +OPENGL_PROC(PFNGLISENABLEDIPROC, IsEnabledi); OPENGL_PROC(PFNGLPRIMITIVERESTARTINDEXPROC, PrimitiveRestartIndex);