Browse Source

Shaders: ah, GCC, and your optimizations.

pull/518/head
Vladimír Vondruš 5 years ago
parent
commit
0ea727f21e
  1. 16
      src/Magnum/Shaders/Test/DistanceFieldVectorTest.cpp
  2. 9
      src/Magnum/Shaders/Test/FlatTest.cpp
  3. 37
      src/Magnum/Shaders/Test/GenericTest.cpp
  4. 25
      src/Magnum/Shaders/Test/MeshVisualizerTest.cpp
  5. 31
      src/Magnum/Shaders/Test/PhongTest.cpp
  6. 9
      src/Magnum/Shaders/Test/VectorTest.cpp

16
src/Magnum/Shaders/Test/DistanceFieldVectorTest.cpp

@ -105,7 +105,12 @@ void DistanceFieldVectorTest::drawUniformConstructNoInit() {
a.materialId = 76; a.materialId = 76;
new(&a) DistanceFieldVectorDrawUniform{NoInit}; new(&a) DistanceFieldVectorDrawUniform{NoInit};
CORRADE_COMPARE(a.materialId, 76); {
#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.materialId, 76);
}
CORRADE_VERIFY(std::is_nothrow_constructible<DistanceFieldVectorDrawUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<DistanceFieldVectorDrawUniform, NoInitT>::value);
@ -168,8 +173,13 @@ void DistanceFieldVectorTest::materialUniformConstructNoInit() {
a.outlineEnd = 0.37f; a.outlineEnd = 0.37f;
new(&a) DistanceFieldVectorMaterialUniform{NoInit}; new(&a) DistanceFieldVectorMaterialUniform{NoInit};
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); {
CORRADE_COMPARE(a.outlineEnd, 0.37f); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf);
CORRADE_COMPARE(a.outlineEnd, 0.37f);
}
CORRADE_VERIFY(std::is_nothrow_constructible<DistanceFieldVectorMaterialUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<DistanceFieldVectorMaterialUniform, NoInitT>::value);

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

@ -100,8 +100,13 @@ void FlatTest::drawUniformConstructNoInit() {
a.alphaMask = 0.7f; a.alphaMask = 0.7f;
new(&a) FlatDrawUniform{NoInit}; new(&a) FlatDrawUniform{NoInit};
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); {
CORRADE_COMPARE(a.alphaMask, 0.7f); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf);
CORRADE_COMPARE(a.alphaMask, 0.7f);
}
CORRADE_VERIFY(std::is_nothrow_constructible<FlatDrawUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<FlatDrawUniform, NoInitT>::value);

37
src/Magnum/Shaders/Test/GenericTest.cpp

@ -154,7 +154,12 @@ void GenericTest::projectionUniform2DConstructNoInit() {
a.projectionMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; a.projectionMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f};
new(&a) ProjectionUniform2D{NoInit}; new(&a) ProjectionUniform2D{NoInit};
CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); {
#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f}));
}
CORRADE_VERIFY(std::is_nothrow_constructible<ProjectionUniform2D, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<ProjectionUniform2D, NoInitT>::value);
@ -215,7 +220,12 @@ void GenericTest::projectionUniform3DConstructNoInit() {
a.projectionMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; a.projectionMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f};
new(&a) ProjectionUniform3D{NoInit}; new(&a) ProjectionUniform3D{NoInit};
CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); {
#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f}));
}
CORRADE_VERIFY(std::is_nothrow_constructible<ProjectionUniform3D, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<ProjectionUniform3D, NoInitT>::value);
@ -268,7 +278,12 @@ void GenericTest::transformationUniform2DConstructNoInit() {
a.transformationMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; a.transformationMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f};
new(&a) TransformationUniform2D{NoInit}; new(&a) TransformationUniform2D{NoInit};
CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); {
#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f}));
}
CORRADE_VERIFY(std::is_nothrow_constructible<TransformationUniform2D, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<TransformationUniform2D, NoInitT>::value);
@ -329,7 +344,12 @@ void GenericTest::transformationUniform3DConstructNoInit() {
a.transformationMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; a.transformationMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f};
new(&a) TransformationUniform3D{NoInit}; new(&a) TransformationUniform3D{NoInit};
CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); {
#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f}));
}
CORRADE_VERIFY(std::is_nothrow_constructible<TransformationUniform3D, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<TransformationUniform3D, NoInitT>::value);
@ -383,8 +403,13 @@ void GenericTest::textureTransformationUniformConstructNoInit() {
a.offset = {2.7f, 0.3f}; a.offset = {2.7f, 0.3f};
new(&a) TextureTransformationUniform{NoInit}; new(&a) TextureTransformationUniform{NoInit};
CORRADE_COMPARE(a.rotationScaling[1], (Vector2{2.5f, -3.0f})); {
CORRADE_COMPARE(a.offset, (Vector2{2.7f, 0.3f})); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.rotationScaling[1], (Vector2{2.5f, -3.0f}));
CORRADE_COMPARE(a.offset, (Vector2{2.7f, 0.3f}));
}
CORRADE_VERIFY(std::is_nothrow_constructible<TextureTransformationUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<TextureTransformationUniform, NoInitT>::value);

25
src/Magnum/Shaders/Test/MeshVisualizerTest.cpp

@ -120,7 +120,12 @@ void MeshVisualizerTest::drawUniform2DConstructNoInit() {
a.materialId = 73; a.materialId = 73;
new(&a) MeshVisualizerDrawUniform2D{NoInit}; new(&a) MeshVisualizerDrawUniform2D{NoInit};
CORRADE_COMPARE(a.materialId, 73); {
#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.materialId, 73);
}
CORRADE_VERIFY(std::is_nothrow_constructible<MeshVisualizerDrawUniform2D, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<MeshVisualizerDrawUniform2D, NoInitT>::value);
@ -187,8 +192,13 @@ void MeshVisualizerTest::drawUniform3DConstructNoInit() {
a.materialId = 5; a.materialId = 5;
new(&a) MeshVisualizerDrawUniform3D{NoInit}; new(&a) MeshVisualizerDrawUniform3D{NoInit};
CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); {
CORRADE_COMPARE(a.materialId, 5); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f}));
CORRADE_COMPARE(a.materialId, 5);
}
CORRADE_VERIFY(std::is_nothrow_constructible<MeshVisualizerDrawUniform3D, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<MeshVisualizerDrawUniform3D, NoInitT>::value);
@ -269,8 +279,13 @@ void MeshVisualizerTest::materialUniformConstructNoInit() {
a.lineWidth = 0.765f; a.lineWidth = 0.765f;
new(&a) MeshVisualizerMaterialUniform{NoInit}; new(&a) MeshVisualizerMaterialUniform{NoInit};
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); {
CORRADE_COMPARE(a.lineWidth, 0.765f); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf);
CORRADE_COMPARE(a.lineWidth, 0.765f);
}
CORRADE_VERIFY(std::is_nothrow_constructible<MeshVisualizerMaterialUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<MeshVisualizerMaterialUniform, NoInitT>::value);

31
src/Magnum/Shaders/Test/PhongTest.cpp

@ -152,9 +152,14 @@ void PhongTest::drawUniformConstructNoInit() {
a.lightCount = 7; a.lightCount = 7;
new(&a) PhongDrawUniform{NoInit}; new(&a) PhongDrawUniform{NoInit};
CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); {
CORRADE_COMPARE(a.materialId, 5); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_COMPARE(a.lightCount, 7); CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f}));
CORRADE_COMPARE(a.materialId, 5);
CORRADE_COMPARE(a.lightCount, 7);
}
CORRADE_VERIFY(std::is_nothrow_constructible<PhongDrawUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<PhongDrawUniform, NoInitT>::value);
@ -233,9 +238,14 @@ void PhongTest::materialUniformConstructNoInit() {
a.alphaMask = 7.0f; a.alphaMask = 7.0f;
new(&a) PhongMaterialUniform{NoInit}; new(&a) PhongMaterialUniform{NoInit};
CORRADE_COMPARE(a.diffuseColor, 0x354565fc_rgbaf); {
CORRADE_COMPARE(a.normalTextureScale, 0.4f); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_COMPARE(a.alphaMask, 7.0f); CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.diffuseColor, 0x354565fc_rgbaf);
CORRADE_COMPARE(a.normalTextureScale, 0.4f);
CORRADE_COMPARE(a.alphaMask, 7.0f);
}
CORRADE_VERIFY(std::is_nothrow_constructible<PhongMaterialUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<PhongMaterialUniform, NoInitT>::value);
@ -296,8 +306,13 @@ void PhongTest::lightUniformConstructNoInit() {
a.range = 7.0f; a.range = 7.0f;
new(&a) PhongLightUniform{NoInit}; new(&a) PhongLightUniform{NoInit};
CORRADE_COMPARE(a.color, 0x354565_rgbf); {
CORRADE_COMPARE(a.range, 7.0f); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.color, 0x354565_rgbf);
CORRADE_COMPARE(a.range, 7.0f);
}
CORRADE_VERIFY(std::is_nothrow_constructible<PhongLightUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<PhongLightUniform, NoInitT>::value);

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

@ -96,8 +96,13 @@ void VectorTest::drawUniformConstructNoInit() {
a.backgroundColor = 0x98769facb_rgbaf; a.backgroundColor = 0x98769facb_rgbaf;
new(&a) VectorDrawUniform{NoInit}; new(&a) VectorDrawUniform{NoInit};
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); {
CORRADE_COMPARE(a.backgroundColor, 0x98769facb_rgbaf); #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__
CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value.");
#endif
CORRADE_COMPARE(a.color, 0x354565fc_rgbaf);
CORRADE_COMPARE(a.backgroundColor, 0x98769facb_rgbaf);
}
CORRADE_VERIFY(std::is_nothrow_constructible<VectorDrawUniform, NoInitT>::value); CORRADE_VERIFY(std::is_nothrow_constructible<VectorDrawUniform, NoInitT>::value);

Loading…
Cancel
Save