Browse Source

Don't use GLSL < 130 in GL tests on OSX.

OSX doesn't support anything below what's in GL 3.1 when using core contexts.
pull/132/head
Vladimír Vondruš 10 years ago
parent
commit
2e6e53b552
  1. 89
      src/Magnum/Test/AbstractShaderProgramGLTest.cpp
  2. 10
      src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.frag
  3. 6
      src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.vert
  4. 127
      src/Magnum/Test/MeshGLTest.cpp
  5. 22
      src/Magnum/Test/PrimitiveQueryGLTest.cpp
  6. 28
      src/Magnum/Test/SampleQueryGLTest.cpp
  7. 8
      src/Magnum/Test/ShaderGLTest.cpp
  8. 24
      src/Magnum/Test/TransformFeedbackGLTest.cpp

89
src/Magnum/Test/AbstractShaderProgramGLTest.cpp

@ -155,7 +155,13 @@ void AbstractShaderProgramGLTest::create() {
Utility::Resource rs("AbstractShaderProgramGLTest"); Utility::Resource rs("AbstractShaderProgramGLTest");
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
#else #else
Shader vert(Version::GLES200, Shader::Type::Vertex); Shader vert(Version::GLES200, Shader::Type::Vertex);
#endif #endif
@ -163,7 +169,13 @@ void AbstractShaderProgramGLTest::create() {
const bool vertCompiled = vert.compile(); const bool vertCompiled = vert.compile();
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader frag(Version::GL210, Shader::Type::Fragment); Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Fragment);
#else #else
Shader frag(Version::GLES200, Shader::Type::Fragment); Shader frag(Version::GLES200, Shader::Type::Fragment);
#endif #endif
@ -203,11 +215,23 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Utility::Resource rs("AbstractShaderProgramGLTest"); Utility::Resource rs("AbstractShaderProgramGLTest");
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
vert.addSource(rs.get("MyShader.vert")); vert.addSource(rs.get("MyShader.vert"));
const bool vertCompiled = vert.compile(); const bool vertCompiled = vert.compile();
Shader frag(Version::GL300, Shader::Type::Fragment); Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Fragment);
frag.addSource(rs.get("MyShaderFragmentOutputs.frag")); frag.addSource(rs.get("MyShaderFragmentOutputs.frag"));
const bool fragCompiled = frag.compile(); const bool fragCompiled = frag.compile();
@ -240,11 +264,23 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() {
void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() { void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() {
Utility::Resource rs("AbstractShaderProgramGLTest"); Utility::Resource rs("AbstractShaderProgramGLTest");
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
vert.addSource(rs.get("MyShader.vert")); vert.addSource(rs.get("MyShader.vert"));
const bool vertCompiled = vert.compile(); const bool vertCompiled = vert.compile();
Shader frag(Version::GL300, Shader::Type::Fragment); Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Fragment);
frag.addSource(rs.get("MyShaderFragmentOutputs.frag")); frag.addSource(rs.get("MyShaderFragmentOutputs.frag"));
const bool fragCompiled = frag.compile(); const bool fragCompiled = frag.compile();
@ -273,14 +309,33 @@ void AbstractShaderProgramGLTest::uniformLocationOptimizedOut() {
MyPublicShader program; MyPublicShader program;
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
Shader frag(Version::GL210, Shader::Type::Fragment); #ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Fragment);
#else #else
Shader vert(Version::GLES200, Shader::Type::Vertex); Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment); Shader frag(Version::GLES200, Shader::Type::Fragment);
#endif #endif
vert.addSource("void main() { gl_Position = vec4(0.0); }"); vert.addSource("void main() { gl_Position = vec4(0.0); }");
frag.addSource("void main() { gl_FragColor = vec4(1.0); }"); frag.addSource(
#ifndef CORRADE_TARGET_APPLE
"void main() { gl_FragColor = vec4(1.0); }"
#else
"out vec4 color;\n"
"void main() { color = vec4(1.0); }"
#endif
);
CORRADE_VERIFY(Shader::compile({vert, frag})); CORRADE_VERIFY(Shader::compile({vert, frag}));
program.attachShaders({vert, frag}); program.attachShaders({vert, frag});
@ -313,8 +368,20 @@ MyShader::MyShader() {
Utility::Resource rs("AbstractShaderProgramGLTest"); Utility::Resource rs("AbstractShaderProgramGLTest");
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
Shader frag(Version::GL210, Shader::Type::Fragment); #ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Fragment);
#else #else
Shader vert(Version::GLES200, Shader::Type::Vertex); Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment); Shader frag(Version::GLES200, Shader::Type::Fragment);

10
src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.frag

@ -2,10 +2,18 @@
#define lowp #define lowp
#endif #endif
#if defined(GL_ES) || __VERSION__ == 120
#define fragColor gl_FragColor
#endif
uniform lowp float multiplier; uniform lowp float multiplier;
uniform lowp vec4 color; uniform lowp vec4 color;
uniform lowp vec4 additions[3]; uniform lowp vec4 additions[3];
#if !defined(GL_ES) && __VERSION__ >= 130
out lowp vec4 fragColor;
#endif
void main() { void main() {
gl_FragColor = color*multiplier + additions[0] + additions[1] + additions[2]; fragColor = color*multiplier + additions[0] + additions[1] + additions[2];
} }

6
src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.vert

@ -2,7 +2,11 @@
#define mediump #define mediump
#endif #endif
attribute mediump vec4 position; #if defined(GL_ES) || __VERSION__ == 120
#define in attribute
#endif
in mediump vec4 position;
uniform mediump mat4 matrix; uniform mediump mat4 matrix;

127
src/Magnum/Test/MeshGLTest.cpp

@ -384,8 +384,20 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion)
/* We need special version for ES3, because GLSL in ES2 doesn't support /* We need special version for ES3, because GLSL in ES2 doesn't support
rectangle matrices */ rectangle matrices */
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
Shader frag(Version::GL210, Shader::Type::Fragment); #ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Fragment);
#elif defined(MAGNUM_TARGET_GLES2) #elif defined(MAGNUM_TARGET_GLES2)
Shader vert(Version::GLES200, Shader::Type::Vertex); Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment); Shader frag(Version::GLES200, Shader::Type::Fragment);
@ -395,32 +407,32 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion)
#endif #endif
vert.addSource( vert.addSource(
#if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2)
"#if !defined(GL_ES) && __VERSION__ == 120\n" "#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define mediump\n" "#define mediump\n"
"#endif\n" "#endif\n"
"attribute mediump " + type + " value;\n" "#if defined(GL_ES) || __VERSION__ == 120\n"
"varying mediump " + type + " valueInterpolated;\n" "#define in attribute\n"
#else "#define out varying\n"
"#endif\n"
"in mediump " + type + " value;\n" "in mediump " + type + " value;\n"
"out mediump " + type + " valueInterpolated;\n" "out mediump " + type + " valueInterpolated;\n"
#endif
"void main() {\n" "void main() {\n"
" valueInterpolated = value;\n" " valueInterpolated = value;\n"
" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" " gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n"
"}\n"); "}\n");
frag.addSource(
#if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) "#if !defined(GL_ES) && __VERSION__ == 120\n"
frag.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n" "#define mediump\n"
"#define mediump\n" "#endif\n"
"#endif\n" "#if defined(GL_ES) || __VERSION__ == 120\n"
"varying mediump " + type + " valueInterpolated;\n" "#define in varying\n"
"void main() { gl_FragColor = " + conversion + "; }\n"); "#define result gl_FragColor\n"
#else "#endif\n"
frag.addSource("in mediump " + type + " valueInterpolated;\n" "in mediump " + type + " valueInterpolated;\n"
"out mediump vec4 result;\n" "#if !defined(GL_ES) && __VERSION__ >= 130\n"
"void main() { result = " + conversion + "; }\n"); "out mediump vec4 result;\n"
#endif "#endif\n"
"void main() { result = " + conversion + "; }\n");
CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag}));
@ -434,8 +446,20 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion)
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
IntegerShader::IntegerShader(const std::string& type) { IntegerShader::IntegerShader(const std::string& type) {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL300, Shader::Type::Vertex); Shader vert(
Shader frag(Version::GL300, Shader::Type::Fragment); #ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Vertex);
Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Fragment);
#else #else
Shader vert(Version::GLES300, Shader::Type::Vertex); Shader vert(Version::GLES300, Shader::Type::Vertex);
Shader frag(Version::GLES300, Shader::Type::Fragment); Shader frag(Version::GLES300, Shader::Type::Fragment);
@ -1144,29 +1168,54 @@ namespace {
#ifndef DOXYGEN_GENERATING_OUTPUT #ifndef DOXYGEN_GENERATING_OUTPUT
MultipleShader::MultipleShader() { MultipleShader::MultipleShader() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
Shader frag(Version::GL210, Shader::Type::Fragment); #ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Fragment);
#else #else
Shader vert(Version::GLES200, Shader::Type::Vertex); Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment); Shader frag(Version::GLES200, Shader::Type::Fragment);
#endif #endif
vert.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n" vert.addSource(
"#define mediump\n" "#if !defined(GL_ES) && __VERSION__ == 120\n"
"#endif\n" "#define mediump\n"
"attribute mediump vec4 position;\n" "#endif\n"
"attribute mediump vec3 normal;\n" "#if defined(GL_ES) || __VERSION__ == 120\n"
"attribute mediump vec2 textureCoordinates;\n" "#define in attribute\n"
"varying mediump vec4 valueInterpolated;\n" "#define out varying\n"
"void main() {\n" "#endif\n"
" valueInterpolated = position + vec4(normal, 0.0) + vec4(textureCoordinates, 0.0, 0.0);\n" "in mediump vec4 position;\n"
" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" "in mediump vec3 normal;\n"
"}\n"); "in mediump vec2 textureCoordinates;\n"
frag.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n" "out mediump vec4 valueInterpolated;\n"
"#define mediump\n" "void main() {\n"
"#endif\n" " valueInterpolated = position + vec4(normal, 0.0) + vec4(textureCoordinates, 0.0, 0.0);\n"
"varying mediump vec4 valueInterpolated;\n" " gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n"
"void main() { gl_FragColor = valueInterpolated; }\n"); "}\n");
frag.addSource(
"#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define mediump\n"
"#endif\n"
"#if defined(GL_ES) || __VERSION__ == 120\n"
"#define in varying\n"
"#define result gl_FragColor\n"
"#endif\n"
"in mediump vec4 valueInterpolated;\n"
"#if !defined(GL_ES) && __VERSION__ >= 130\n"
"out mediump vec4 result;\n"
"#endif\n"
"void main() { result = valueInterpolated; }\n");
CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag}));

22
src/Magnum/Test/PrimitiveQueryGLTest.cpp

@ -99,13 +99,19 @@ void PrimitiveQueryGLTest::primitivesGenerated() {
typedef Attribute<0, Vector2> Position; typedef Attribute<0, Vector2> Position;
explicit MyShader() { explicit MyShader() {
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
CORRADE_INTERNAL_ASSERT_OUTPUT(vert.addSource( CORRADE_INTERNAL_ASSERT_OUTPUT(vert.addSource(
"#if !defined(GL_ES) && __VERSION__ == 120\n" "#if __VERSION__ >= 130\n"
"#define lowp\n" "#define attribute in\n"
"#endif\n" "#endif\n"
"attribute lowp vec4 position;\n" "attribute vec4 position;\n"
"void main() {\n" "void main() {\n"
" gl_Position = position;\n" " gl_Position = position;\n"
"}\n").compile()); "}\n").compile());
@ -153,7 +159,13 @@ void PrimitiveQueryGLTest::transformFeedbackPrimitivesWritten() {
struct MyShader: AbstractShaderProgram { struct MyShader: AbstractShaderProgram {
explicit MyShader() { explicit MyShader() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL300, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Vertex);
#else #else
Shader vert(Version::GLES300, Shader::Type::Vertex); Shader vert(Version::GLES300, Shader::Type::Vertex);
Shader frag(Version::GLES300, Shader::Type::Fragment); Shader frag(Version::GLES300, Shader::Type::Fragment);

28
src/Magnum/Test/SampleQueryGLTest.cpp

@ -111,8 +111,20 @@ namespace {
#ifndef DOXYGEN_GENERATING_OUTPUT #ifndef DOXYGEN_GENERATING_OUTPUT
MyShader::MyShader() { MyShader::MyShader() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex); Shader vert(
Shader frag(Version::GL210, Shader::Type::Fragment); #ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Vertex);
Shader frag(
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
, Shader::Type::Fragment);
#else #else
Shader vert(Version::GLES200, Shader::Type::Vertex); Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment); Shader frag(Version::GLES200, Shader::Type::Fragment);
@ -122,13 +134,21 @@ MyShader::MyShader() {
"#if !defined(GL_ES) && __VERSION__ == 120\n" "#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define lowp\n" "#define lowp\n"
"#endif\n" "#endif\n"
"attribute lowp vec4 position;\n" "#if defined(GL_ES) || __VERSION__ == 120\n"
"#define in attribute\n"
"#endif\n"
"in lowp vec4 position;\n"
"void main() {\n" "void main() {\n"
" gl_Position = position;\n" " gl_Position = position;\n"
"}\n"); "}\n");
frag.addSource( frag.addSource(
"#if !defined(GL_ES) && __VERSION__ >= 130\n"
"out vec4 color;\n"
"#else\n"
"#define color gl_FragColor\n"
"#endif\n"
"void main() {\n" "void main() {\n"
" gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n" " color = vec4(1.0, 1.0, 1.0, 1.0);\n"
"}\n"); "}\n");
CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag}));

8
src/Magnum/Test/ShaderGLTest.cpp

@ -209,7 +209,13 @@ void ShaderGLTest::addFile() {
void ShaderGLTest::compile() { void ShaderGLTest::compile() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
constexpr Version v = Version::GL210; constexpr Version v =
#ifndef CORRADE_TARGET_APPLE
Version::GL210
#else
Version::GL310
#endif
;
#else #else
constexpr Version v = Version::GLES200; constexpr Version v = Version::GLES200;
#endif #endif

24
src/Magnum/Test/TransformFeedbackGLTest.cpp

@ -189,7 +189,13 @@ struct XfbShader: AbstractShaderProgram {
XfbShader::XfbShader() { XfbShader::XfbShader() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL300, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Vertex);
#else #else
Shader vert(Version::GLES300, Shader::Type::Vertex); Shader vert(Version::GLES300, Shader::Type::Vertex);
Shader frag(Version::GLES300, Shader::Type::Fragment); Shader frag(Version::GLES300, Shader::Type::Fragment);
@ -299,7 +305,13 @@ struct XfbMultiShader: AbstractShaderProgram {
XfbMultiShader::XfbMultiShader() { XfbMultiShader::XfbMultiShader() {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL300, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Vertex);
#else #else
Shader vert(Version::GLES300, Shader::Type::Vertex); Shader vert(Version::GLES300, Shader::Type::Vertex);
Shader frag(Version::GLES300, Shader::Type::Fragment); Shader frag(Version::GLES300, Shader::Type::Fragment);
@ -426,7 +438,13 @@ void TransformFeedbackGLTest::interleaved() {
typedef Attribute<0, Vector2> Input; typedef Attribute<0, Vector2> Input;
explicit XfbInterleavedShader() { explicit XfbInterleavedShader() {
Shader vert(Version::GL300, Shader::Type::Vertex); Shader vert(
#ifndef CORRADE_TARGET_APPLE
Version::GL300
#else
Version::GL310
#endif
, Shader::Type::Vertex);
CORRADE_INTERNAL_ASSERT_OUTPUT(vert.addSource( CORRADE_INTERNAL_ASSERT_OUTPUT(vert.addSource(
"in mediump vec2 inputData;\n" "in mediump vec2 inputData;\n"
"out mediump vec2 output1;\n" "out mediump vec2 output1;\n"

Loading…
Cancel
Save