From 800aca6f0f85db310de6d9f6c86e78f3386b4b3e Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Mon, 1 Aug 2022 13:43:50 +1000 Subject: [PATCH] GS/OpenGL: Force UBO reupload on restore api state --- pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp b/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp index 129b04eab0..ced2c4a581 100644 --- a/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp +++ b/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp @@ -319,6 +319,10 @@ bool GSDeviceOGL::Create() return false; } + // Force UBOs to be uploaded on first use. + std::memset(&m_vs_cb_cache, 0xFF, sizeof(m_vs_cb_cache)); + std::memset(&m_ps_cb_cache, 0xFF, sizeof(m_ps_cb_cache)); + // rebind because of VAO state m_vertex_stream_buffer->Bind(); m_index_stream_buffer->Bind(); @@ -704,6 +708,10 @@ void GSDeviceOGL::RestoreAPIState() if (GLState::point_size) glEnable(GL_PROGRAM_POINT_SIZE); + + // Force UBOs to be reuploaded, we don't know what else was bound there. + std::memset(&m_vs_cb_cache, 0xFF, sizeof(m_vs_cb_cache)); + std::memset(&m_ps_cb_cache, 0xFF, sizeof(m_ps_cb_cache)); } void GSDeviceOGL::DrawPrimitive()