Browse Source

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 <hugo.amiard@wonderlandengine.com>
pull/499/head
Vladimír Vondruš 3 years ago
parent
commit
d0e18e1f5c
  1. 9
      doc/changelog.dox
  2. 5
      src/Magnum/GL/AbstractShaderProgram.cpp
  3. 2
      src/Magnum/GL/AbstractShaderProgram.h
  4. 21
      src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp
  5. 9
      src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp
  6. 10
      src/Magnum/Shaders/Test/FlatGLTest.cpp
  7. 20
      src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp
  8. 10
      src/Magnum/Shaders/Test/PhongGLTest.cpp
  9. 9
      src/Magnum/Shaders/Test/VectorGLTest.cpp
  10. 9
      src/Magnum/Shaders/Test/VertexColorGLTest.cpp

9
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).

5
src/Magnum/GL/AbstractShaderProgram.cpp

@ -29,6 +29,7 @@
#include <Corrade/Containers/Array.h>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Pair.h>
#ifdef MAGNUM_BUILD_DEPRECATED
#include <Corrade/Containers/Reference.h>
#endif
@ -339,7 +340,7 @@ AbstractShaderProgram& AbstractShaderProgram::setLabel(const Containers::StringV
}
#endif
std::pair<bool, Containers::String> AbstractShaderProgram::validate() {
Containers::Pair<bool, Containers::String> AbstractShaderProgram::validate() {
glValidateProgram(_id);
/* Check validation status */
@ -361,7 +362,7 @@ std::pair<bool, Containers::String> 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) {

2
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<bool, Containers::String> validate();
Containers::Pair<bool, Containers::String> validate();
/**
* @brief Draw a mesh

21
src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp

@ -26,6 +26,7 @@
#include <sstream>
#include <Corrade/Containers/Iterable.h>
#include <Corrade/Containers/Pair.h>
#include <Corrade/Containers/Reference.h>
#include <Corrade/Containers/StridedArrayView.h>
#include <Corrade/Containers/StringStl.h> /* 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<bool, Containers::String> result = program.validate();
Containers::Pair<bool, Containers::String> 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);

9
src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp

@ -26,6 +26,7 @@
#include <sstream>
#include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/Pair.h>
#include <Corrade/Containers/StridedArrayView.h>
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/StringIterable.h>
@ -381,7 +382,7 @@ template<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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();

10
src/Magnum/Shaders/Test/FlatGLTest.cpp

@ -1068,7 +1068,7 @@ template<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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();

20
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();

10
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();

9
src/Magnum/Shaders/Test/VectorGLTest.cpp

@ -26,6 +26,7 @@
#include <sstream>
#include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/Pair.h>
#include <Corrade/Containers/StridedArrayView.h>
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/StringIterable.h>
@ -377,7 +378,7 @@ template<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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();

9
src/Magnum/Shaders/Test/VertexColorGLTest.cpp

@ -25,6 +25,7 @@
*/
#include <sstream>
#include <Corrade/Containers/Pair.h>
#include <Corrade/Containers/StridedArrayView.h>
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/StringIterable.h>
@ -314,7 +315,7 @@ template<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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<UnsignedInt dimensions> 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();

Loading…
Cancel
Save