From 0a22bc66f7833222756759d38b0c96488ce1b684 Mon Sep 17 00:00:00 2001 From: Vladislav Belov Date: Wed, 8 Jul 2026 08:13:46 +0200 Subject: [PATCH] Makes GL error handling explicit in report --- source/renderer/backend/gl/Device.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/source/renderer/backend/gl/Device.cpp b/source/renderer/backend/gl/Device.cpp index 5a474602cc..d2981c0d19 100644 --- a/source/renderer/backend/gl/Device.cpp +++ b/source/renderer/backend/gl/Device.cpp @@ -205,6 +205,11 @@ void GLAD_API_PTR OnDebugMessage( } } +void ResetGLError() +{ + do {} while (glGetError() != GL_NO_ERROR); +} + template void ReportParameter( const Script::Request& rq, JS::HandleValue settings, @@ -240,14 +245,17 @@ void ReportParameter( values[0] = errorString; } else - static_assert(false); + { + debug_warn("Unsupported type"); + } - const bool errorHappened{ogl_SquelchError(GL_INVALID_ENUM)}; + const bool errorHappened{glGetError() != GL_NO_ERROR}; + ResetGLError(); char buffer[1024]; for (size_t index{0}; index < parameterCount; ++index) { - PS::StringBuilder stringBuilder{buffer}; + PS::StringBuilder stringBuilder{{std::begin(buffer), std::end(buffer)}}; stringBuilder.Append(paremeterName); if constexpr (parameterCount > 1) { @@ -449,6 +457,10 @@ void CDevice::Report(const Script::Request& rq, JS::HandleValue settings) { Script::SetProperty(rq, settings, "name", "gl"); + // We need to reset all previous errors because we don't call glGetError + // by default. + ResetGLError(); + #define INTEGER(NAME) ReportParameter(rq, settings, GL_##NAME, "GL_" #NAME) #define INTEGER2(NAME) ReportParameter(rq, settings, GL_##NAME, "GL_" #NAME)