From d0e18e1f5c50c1043aec596ab5084853228db938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 30 Dec 2022 21:54:47 +0100 Subject: [PATCH] GL: drop std::pair from AbstractShaderProgram::validate() as well. Given that I made a breaking change by returning Containers::String instead of a std::string, I can take it further and replace also std::pair with Containers::Pair -- it won't bring any more pain to the users, they have to change their code anyway. Co-authored-by: Hugo Amiard --- doc/changelog.dox | 9 ++++---- src/Magnum/GL/AbstractShaderProgram.cpp | 5 +++-- src/Magnum/GL/AbstractShaderProgram.h | 2 +- .../GL/Test/AbstractShaderProgramGLTest.cpp | 21 ++++++++++--------- .../Test/DistanceFieldVectorGLTest.cpp | 9 ++++---- src/Magnum/Shaders/Test/FlatGLTest.cpp | 10 ++++----- .../Shaders/Test/MeshVisualizerGLTest.cpp | 20 +++++++++--------- src/Magnum/Shaders/Test/PhongGLTest.cpp | 10 ++++----- src/Magnum/Shaders/Test/VectorGLTest.cpp | 9 ++++---- src/Magnum/Shaders/Test/VertexColorGLTest.cpp | 9 ++++---- 10 files changed, 55 insertions(+), 49 deletions(-) diff --git a/doc/changelog.dox b/doc/changelog.dox index 12175f7c2..7ecf58505 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -1135,11 +1135,12 @@ See also: significant positive effect on compile times of code using the @ref GL, @ref Audio, @ref Trade and @ref Text libraries - As part of the ongoing STL header dependency cleanup, the following - breaking changes related to @ref std::string and a @ref std::vector are - done: + breaking changes related to @ref std::string, @ref std::vector and + @ref std::pair are done: - @ref GL::AbstractShaderProgram::validate() now returns a - @relativeref{Corrade,Containers::String} instead of a @ref std::string; - @ref GL::Shader::sources() now returns a + @relativeref{Corrade,Containers::Pair} with a + @relativeref{Corrade,Containers::String} instead of a @ref std::pair + with a @ref std::string; @ref GL::Shader::sources() now returns a @relativeref{Corrade,Containers::StringIterable} instead of a @ref std::vector of a @ref std::string See also [mosra/magnum#499](https://github.com/mosra/magnum/pull/499) and [mosra/magnum#608](https://github.com/mosra/magnum/pull/608). diff --git a/src/Magnum/GL/AbstractShaderProgram.cpp b/src/Magnum/GL/AbstractShaderProgram.cpp index 611820117..c47952e45 100644 --- a/src/Magnum/GL/AbstractShaderProgram.cpp +++ b/src/Magnum/GL/AbstractShaderProgram.cpp @@ -29,6 +29,7 @@ #include #include +#include #ifdef MAGNUM_BUILD_DEPRECATED #include #endif @@ -339,7 +340,7 @@ AbstractShaderProgram& AbstractShaderProgram::setLabel(const Containers::StringV } #endif -std::pair AbstractShaderProgram::validate() { +Containers::Pair AbstractShaderProgram::validate() { glValidateProgram(_id); /* Check validation status */ @@ -361,7 +362,7 @@ std::pair AbstractShaderProgram::validate() { /** @todo this allocates a new string, revisit once String is capable of trimming in-place, e.g. `std::move(message).trimmed()` would just shift the data around */ - return {success, message.trimmed()}; + return {bool(success), message.trimmed()}; } AbstractShaderProgram& AbstractShaderProgram::draw(Mesh& mesh) { diff --git a/src/Magnum/GL/AbstractShaderProgram.h b/src/Magnum/GL/AbstractShaderProgram.h index 639eac9e8..b9c927067 100644 --- a/src/Magnum/GL/AbstractShaderProgram.h +++ b/src/Magnum/GL/AbstractShaderProgram.h @@ -834,7 +834,7 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * @def_gl{VALIDATE_STATUS}, @def_gl{INFO_LOG_LENGTH}, * @fn_gl_keyword{GetProgramInfoLog} */ - std::pair validate(); + Containers::Pair validate(); /** * @brief Draw a mesh diff --git a/src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp b/src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp index 85f8e79e5..3cd1b6998 100644 --- a/src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp +++ b/src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include /* StringHasPrefix / StringHasSuffix */ @@ -350,7 +351,7 @@ void AbstractShaderProgramGLTest::create() { program.bindAttributeLocation(0, data.positionName); const bool linked = program.link(); - const bool valid = program.validate().first; + const bool valid = program.validate().first(); MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_VERIFY(linked); @@ -425,7 +426,7 @@ void AbstractShaderProgramGLTest::createAsync() { CORRADE_VERIFY(program.checkLink({vert, frag})); CORRADE_VERIFY(program.isLinkFinished()); - const bool valid = program.validate().first; + const bool valid = program.validate().first(); MAGNUM_VERIFY_NO_GL_ERROR(); { @@ -492,7 +493,7 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() { program.bindFragmentDataLocation(0, data.firstName); program.bindFragmentDataLocation(1, data.secondName); const bool linked = program.link(); - const bool valid = program.validate().first; + const bool valid = program.validate().first(); MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_VERIFY(linked); @@ -554,7 +555,7 @@ void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() { program.bindFragmentDataLocationIndexed(0, 0, data.firstName); program.bindFragmentDataLocationIndexed(0, 1, data.secondName); const bool linked = program.link(); - const bool valid = program.validate().first; + const bool valid = program.validate().first(); MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_VERIFY(linked); @@ -782,16 +783,16 @@ void main() { program.setUniform(program.uniformLocation("textureData2D"), 0); program.setUniform(program.uniformLocation("textureData3D"), 0); - std::pair result = program.validate(); + Containers::Pair result = program.validate(); MAGNUM_VERIFY_NO_GL_ERROR(); - CORRADE_VERIFY(!result.first); + CORRADE_VERIFY(!result.first()); /* The message shouldn't be empty */ - CORRADE_COMPARE_AS(result.second, + CORRADE_COMPARE_AS(result.second(), "", TestSuite::Compare::NotEqual); /* No stray \0 or \n should be anywhere */ - CORRADE_COMPARE_AS(result.second, "\0"_s, TestSuite::Compare::StringNotContains); - CORRADE_COMPARE_AS(result.second, "\n"_s, TestSuite::Compare::StringNotContains); + CORRADE_COMPARE_AS(result.second(), "\0"_s, TestSuite::Compare::StringNotContains); + CORRADE_COMPARE_AS(result.second(), "\n"_s, TestSuite::Compare::StringNotContains); #endif } @@ -1084,7 +1085,7 @@ void AbstractShaderProgramGLTest::createUniformBlocks() { MAGNUM_VERIFY_NO_GL_ERROR(); const bool linked = program.link(); - const bool valid = program.validate().first; + const bool valid = program.validate().first(); MAGNUM_VERIFY_NO_GL_ERROR(); CORRADE_VERIFY(linked); diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index d1508ad44..0f5f08658 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -381,7 +382,7 @@ template void DistanceFieldVectorGLTest::construct() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -405,7 +406,7 @@ template void DistanceFieldVectorGLTest::constructAsync( #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -448,7 +449,7 @@ template void DistanceFieldVectorGLTest::constructUnifor #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -483,7 +484,7 @@ template void DistanceFieldVectorGLTest::constructUnifor #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index 1747021cb..1c7a8d5ab 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -1068,7 +1068,7 @@ template void FlatGLTest::construct() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1096,7 +1096,7 @@ template void FlatGLTest::constructSkinning() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1124,7 +1124,7 @@ template void FlatGLTest::constructAsync() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1175,7 +1175,7 @@ template void FlatGLTest::constructUniformBuffers() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1218,7 +1218,7 @@ template void FlatGLTest::constructUniformBuffersAsync() #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index fda87830e..06bf095a7 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -1676,7 +1676,7 @@ void MeshVisualizerGLTest::construct2D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1736,7 +1736,7 @@ void MeshVisualizerGLTest::construct3D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1766,7 +1766,7 @@ void MeshVisualizerGLTest::constructSkinning2D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1795,7 +1795,7 @@ void MeshVisualizerGLTest::constructSkinning3D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1821,7 +1821,7 @@ void MeshVisualizerGLTest::constructAsync2D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1846,7 +1846,7 @@ void MeshVisualizerGLTest::constructAsync3D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1933,7 +1933,7 @@ void MeshVisualizerGLTest::constructUniformBuffers2D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -2019,7 +2019,7 @@ void MeshVisualizerGLTest::constructUniformBuffers3D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -2060,7 +2060,7 @@ void MeshVisualizerGLTest::constructUniformBuffersAsync2D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -2099,7 +2099,7 @@ void MeshVisualizerGLTest::constructUniformBuffersAsync3D() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index 54f4142f6..0235649af 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -1408,7 +1408,7 @@ void PhongGLTest::construct() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1437,7 +1437,7 @@ void PhongGLTest::constructSkinning() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1466,7 +1466,7 @@ void PhongGLTest::constructAsync() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1517,7 +1517,7 @@ void PhongGLTest::constructUniformBuffers() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -1563,7 +1563,7 @@ void PhongGLTest::constructUniformBuffersAsync() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index f4f39151a..20321bfe0 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -377,7 +378,7 @@ template void VectorGLTest::construct() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -401,7 +402,7 @@ template void VectorGLTest::constructAsync() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -444,7 +445,7 @@ template void VectorGLTest::constructUniformBuffers() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -479,7 +480,7 @@ template void VectorGLTest::constructUniformBuffersAsync #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index 51f1bcf7e..1b7fa174b 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -25,6 +25,7 @@ */ #include +#include #include #include #include @@ -314,7 +315,7 @@ template void VertexColorGLTest::construct() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -335,7 +336,7 @@ template void VertexColorGLTest::constructAsync() { #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -377,7 +378,7 @@ template void VertexColorGLTest::constructUniformBuffers #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR(); @@ -409,7 +410,7 @@ template void VertexColorGLTest::constructUniformBuffers #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); #endif - CORRADE_VERIFY(shader.validate().first); + CORRADE_VERIFY(shader.validate().first()); } MAGNUM_VERIFY_NO_GL_ERROR();