From 4b8fe959d40f3cad87e7565ab0f599e3705d53f2 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Tue, 1 Nov 2022 00:45:11 +0000 Subject: [PATCH 1/2] OGL: fix compute shader labels This fixes GL_INVALID_VALUE errors when using GPU texture decoding. --- Source/Core/VideoBackends/OGL/OGLShader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/VideoBackends/OGL/OGLShader.cpp b/Source/Core/VideoBackends/OGL/OGLShader.cpp index f2b970d71b..7caa24416c 100644 --- a/Source/Core/VideoBackends/OGL/OGLShader.cpp +++ b/Source/Core/VideoBackends/OGL/OGLShader.cpp @@ -44,7 +44,7 @@ OGLShader::OGLShader(GLuint gl_compute_program_id, std::string source, std::stri { if (!m_name.empty() && g_ActiveConfig.backend_info.bSupportsSettingObjectNames) { - glObjectLabel(GL_SHADER, m_gl_compute_program_id, -1, m_name.c_str()); + glObjectLabel(GL_PROGRAM, m_gl_compute_program_id, -1, m_name.c_str()); } } From 22eb7e664516b61e7679844aa846459086154189 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Tue, 1 Nov 2022 00:46:06 +0000 Subject: [PATCH 2/2] OGL: use already known object label lengths Passing -1 means the driver has to call strlen(). --- Source/Core/VideoBackends/OGL/OGLShader.cpp | 4 ++-- Source/Core/VideoBackends/OGL/OGLTexture.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/OGLShader.cpp b/Source/Core/VideoBackends/OGL/OGLShader.cpp index 7caa24416c..3338087132 100644 --- a/Source/Core/VideoBackends/OGL/OGLShader.cpp +++ b/Source/Core/VideoBackends/OGL/OGLShader.cpp @@ -33,7 +33,7 @@ OGLShader::OGLShader(ShaderStage stage, GLenum gl_type, GLuint gl_id, std::strin { if (!m_name.empty() && g_ActiveConfig.backend_info.bSupportsSettingObjectNames) { - glObjectLabel(GL_SHADER, m_gl_id, -1, m_name.c_str()); + glObjectLabel(GL_SHADER, m_gl_id, (GLsizei)m_name.size(), m_name.c_str()); } } @@ -44,7 +44,7 @@ OGLShader::OGLShader(GLuint gl_compute_program_id, std::string source, std::stri { if (!m_name.empty() && g_ActiveConfig.backend_info.bSupportsSettingObjectNames) { - glObjectLabel(GL_PROGRAM, m_gl_compute_program_id, -1, m_name.c_str()); + glObjectLabel(GL_PROGRAM, m_gl_compute_program_id, (GLsizei)m_name.size(), m_name.c_str()); } } diff --git a/Source/Core/VideoBackends/OGL/OGLTexture.cpp b/Source/Core/VideoBackends/OGL/OGLTexture.cpp index 113be2f1f4..8c1b14cd08 100644 --- a/Source/Core/VideoBackends/OGL/OGLTexture.cpp +++ b/Source/Core/VideoBackends/OGL/OGLTexture.cpp @@ -120,7 +120,7 @@ OGLTexture::OGLTexture(const TextureConfig& tex_config, std::string_view name) if (!m_name.empty() && g_ActiveConfig.backend_info.bSupportsSettingObjectNames) { - glObjectLabel(GL_TEXTURE, m_texId, -1, m_name.c_str()); + glObjectLabel(GL_TEXTURE, m_texId, (GLsizei)m_name.size(), m_name.c_str()); } glTexParameteri(target, GL_TEXTURE_MAX_LEVEL, m_config.levels - 1);