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");
#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
Shader vert(Version::GLES200, Shader::Type::Vertex);
#endif
@ -163,7 +169,13 @@ void AbstractShaderProgramGLTest::create() {
const bool vertCompiled = vert.compile();
#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
Shader frag(Version::GLES200, Shader::Type::Fragment);
#endif
@ -203,11 +215,23 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() {
#ifndef MAGNUM_TARGET_GLES
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"));
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"));
const bool fragCompiled = frag.compile();
@ -240,11 +264,23 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() {
void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() {
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"));
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"));
const bool fragCompiled = frag.compile();
@ -273,14 +309,33 @@ void AbstractShaderProgramGLTest::uniformLocationOptimizedOut() {
MyPublicShader program;
#ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex);
Shader frag(Version::GL210, Shader::Type::Fragment);
Shader vert(
#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
Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment);
#endif
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}));
program.attachShaders({vert, frag});
@ -313,8 +368,20 @@ MyShader::MyShader() {
Utility::Resource rs("AbstractShaderProgramGLTest");
#ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex);
Shader frag(Version::GL210, Shader::Type::Fragment);
Shader vert(
#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
Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment);

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

@ -2,10 +2,18 @@
#define lowp
#endif
#if defined(GL_ES) || __VERSION__ == 120
#define fragColor gl_FragColor
#endif
uniform lowp float multiplier;
uniform lowp vec4 color;
uniform lowp vec4 additions[3];
#if !defined(GL_ES) && __VERSION__ >= 130
out lowp vec4 fragColor;
#endif
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
#endif
attribute mediump vec4 position;
#if defined(GL_ES) || __VERSION__ == 120
#define in attribute
#endif
in mediump vec4 position;
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
rectangle matrices */
#ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex);
Shader frag(Version::GL210, Shader::Type::Fragment);
Shader vert(
#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)
Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment);
@ -395,32 +407,32 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion)
#endif
vert.addSource(
#if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2)
"#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define mediump\n"
"#endif\n"
"attribute mediump " + type + " value;\n"
"varying mediump " + type + " valueInterpolated;\n"
#else
"#if defined(GL_ES) || __VERSION__ == 120\n"
"#define in attribute\n"
"#define out varying\n"
"#endif\n"
"in mediump " + type + " value;\n"
"out mediump " + type + " valueInterpolated;\n"
#endif
"void main() {\n"
" valueInterpolated = value;\n"
" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n"
"}\n");
#if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2)
frag.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define mediump\n"
"#endif\n"
"varying mediump " + type + " valueInterpolated;\n"
"void main() { gl_FragColor = " + conversion + "; }\n");
#else
frag.addSource("in mediump " + type + " valueInterpolated;\n"
"out mediump vec4 result;\n"
"void main() { result = " + conversion + "; }\n");
#endif
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 " + type + " valueInterpolated;\n"
"#if !defined(GL_ES) && __VERSION__ >= 130\n"
"out mediump vec4 result;\n"
"#endif\n"
"void main() { result = " + conversion + "; }\n");
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
IntegerShader::IntegerShader(const std::string& type) {
#ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL300, Shader::Type::Vertex);
Shader frag(Version::GL300, Shader::Type::Fragment);
Shader vert(
#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
Shader vert(Version::GLES300, Shader::Type::Vertex);
Shader frag(Version::GLES300, Shader::Type::Fragment);
@ -1144,29 +1168,54 @@ namespace {
#ifndef DOXYGEN_GENERATING_OUTPUT
MultipleShader::MultipleShader() {
#ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex);
Shader frag(Version::GL210, Shader::Type::Fragment);
Shader vert(
#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
Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment);
#endif
vert.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define mediump\n"
"#endif\n"
"attribute mediump vec4 position;\n"
"attribute mediump vec3 normal;\n"
"attribute mediump vec2 textureCoordinates;\n"
"varying mediump vec4 valueInterpolated;\n"
"void main() {\n"
" valueInterpolated = position + vec4(normal, 0.0) + vec4(textureCoordinates, 0.0, 0.0);\n"
" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n"
"}\n");
frag.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define mediump\n"
"#endif\n"
"varying mediump vec4 valueInterpolated;\n"
"void main() { gl_FragColor = valueInterpolated; }\n");
vert.addSource(
"#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define mediump\n"
"#endif\n"
"#if defined(GL_ES) || __VERSION__ == 120\n"
"#define in attribute\n"
"#define out varying\n"
"#endif\n"
"in mediump vec4 position;\n"
"in mediump vec3 normal;\n"
"in mediump vec2 textureCoordinates;\n"
"out mediump vec4 valueInterpolated;\n"
"void main() {\n"
" valueInterpolated = position + vec4(normal, 0.0) + vec4(textureCoordinates, 0.0, 0.0);\n"
" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\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}));

22
src/Magnum/Test/PrimitiveQueryGLTest.cpp

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

28
src/Magnum/Test/SampleQueryGLTest.cpp

@ -111,8 +111,20 @@ namespace {
#ifndef DOXYGEN_GENERATING_OUTPUT
MyShader::MyShader() {
#ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex);
Shader frag(Version::GL210, Shader::Type::Fragment);
Shader vert(
#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
Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment);
@ -122,13 +134,21 @@ MyShader::MyShader() {
"#if !defined(GL_ES) && __VERSION__ == 120\n"
"#define lowp\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"
" gl_Position = position;\n"
"}\n");
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"
" gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n"
" color = vec4(1.0, 1.0, 1.0, 1.0);\n"
"}\n");
CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag}));

8
src/Magnum/Test/ShaderGLTest.cpp

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

24
src/Magnum/Test/TransformFeedbackGLTest.cpp

@ -189,7 +189,13 @@ struct XfbShader: AbstractShaderProgram {
XfbShader::XfbShader() {
#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
Shader vert(Version::GLES300, Shader::Type::Vertex);
Shader frag(Version::GLES300, Shader::Type::Fragment);
@ -299,7 +305,13 @@ struct XfbMultiShader: AbstractShaderProgram {
XfbMultiShader::XfbMultiShader() {
#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
Shader vert(Version::GLES300, Shader::Type::Vertex);
Shader frag(Version::GLES300, Shader::Type::Fragment);
@ -426,7 +438,13 @@ void TransformFeedbackGLTest::interleaved() {
typedef Attribute<0, Vector2> Input;
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(
"in mediump vec2 inputData;\n"
"out mediump vec2 output1;\n"

Loading…
Cancel
Save