From 7ac84644dae6834ab719a9bffb54ecae4c528af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 7 Jan 2016 09:18:11 +0100 Subject: [PATCH] Avoid errors in GL tests on windowless applications w/o default FB. Like the one on OSX. --- src/Magnum/Test/PrimitiveQueryGLTest.cpp | 17 +++++++++ src/Magnum/Test/TransformFeedbackGLTest.cpp | 38 +++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/Magnum/Test/PrimitiveQueryGLTest.cpp b/src/Magnum/Test/PrimitiveQueryGLTest.cpp index c4f09d2da..93d3f1016 100644 --- a/src/Magnum/Test/PrimitiveQueryGLTest.cpp +++ b/src/Magnum/Test/PrimitiveQueryGLTest.cpp @@ -28,8 +28,11 @@ #include "Magnum/AbstractShaderProgram.h" #include "Magnum/Buffer.h" +#include "Magnum/Framebuffer.h" #include "Magnum/Mesh.h" #include "Magnum/PrimitiveQuery.h" +#include "Magnum/Renderbuffer.h" +#include "Magnum/RenderbufferFormat.h" #include "Magnum/Shader.h" #include "Magnum/TransformFeedback.h" #include "Magnum/Math/Vector2.h" @@ -95,6 +98,13 @@ void PrimitiveQueryGLTest::primitivesGenerated() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::GL::EXT::transform_feedback::string() + std::string(" is not available.")); + /* Bind some FB to avoid errors on contexts w/o default FB */ + Renderbuffer color; + color.setStorage(RenderbufferFormat::RGBA8, Vector2i{32}); + Framebuffer fb{{{}, Vector2i{32}}}; + fb.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color) + .bind(); + struct MyShader: AbstractShaderProgram { typedef Attribute<0, Vector2> Position; @@ -156,6 +166,13 @@ void PrimitiveQueryGLTest::transformFeedbackPrimitivesWritten() { CORRADE_SKIP(Extensions::GL::ARB::transform_feedback2::string() + std::string(" is not available.")); #endif + /* Bind some FB to avoid errors on contexts w/o default FB */ + Renderbuffer color; + color.setStorage(RenderbufferFormat::RGBA8, Vector2i{32}); + Framebuffer fb{{{}, Vector2i{32}}}; + fb.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color) + .bind(); + struct MyShader: AbstractShaderProgram { explicit MyShader() { #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Test/TransformFeedbackGLTest.cpp b/src/Magnum/Test/TransformFeedbackGLTest.cpp index d7012ec2b..a59cbe7db 100644 --- a/src/Magnum/Test/TransformFeedbackGLTest.cpp +++ b/src/Magnum/Test/TransformFeedbackGLTest.cpp @@ -25,7 +25,10 @@ #include "Magnum/AbstractShaderProgram.h" #include "Magnum/Buffer.h" +#include "Magnum/Framebuffer.h" #include "Magnum/Mesh.h" +#include "Magnum/Renderbuffer.h" +#include "Magnum/RenderbufferFormat.h" #include "Magnum/Shader.h" #include "Magnum/TransformFeedback.h" #include "Magnum/Math/Vector2.h" @@ -229,6 +232,13 @@ void TransformFeedbackGLTest::attachBase() { CORRADE_SKIP(Extensions::GL::ARB::transform_feedback2::string() + std::string(" is not supported.")); #endif + /* Bind some FB to avoid errors on contexts w/o default FB */ + Renderbuffer color; + color.setStorage(RenderbufferFormat::RGBA8, Vector2i{32}); + Framebuffer fb{{{}, Vector2i{32}}}; + fb.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color) + .bind(); + XfbShader shader; Buffer input; @@ -265,6 +275,13 @@ void TransformFeedbackGLTest::attachRange() { CORRADE_SKIP(Extensions::GL::ARB::transform_feedback2::string() + std::string(" is not supported.")); #endif + /* Bind some FB to avoid errors on contexts w/o default FB */ + Renderbuffer color; + color.setStorage(RenderbufferFormat::RGBA8, Vector2i{32}); + Framebuffer fb{{{}, Vector2i{32}}}; + fb.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color) + .bind(); + XfbShader shader; Buffer input; @@ -347,6 +364,13 @@ void TransformFeedbackGLTest::attachBases() { CORRADE_SKIP(Extensions::GL::ARB::transform_feedback2::string() + std::string(" is not supported.")); #endif + /* Bind some FB to avoid errors on contexts w/o default FB */ + Renderbuffer color; + color.setStorage(RenderbufferFormat::RGBA8, Vector2i{32}); + Framebuffer fb{{{}, Vector2i{32}}}; + fb.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color) + .bind(); + XfbMultiShader shader; Buffer input; @@ -389,6 +413,13 @@ void TransformFeedbackGLTest::attachRanges() { CORRADE_SKIP(Extensions::GL::ARB::transform_feedback2::string() + std::string(" is not supported.")); #endif + /* Bind some FB to avoid errors on contexts w/o default FB */ + Renderbuffer color; + color.setStorage(RenderbufferFormat::RGBA8, Vector2i{32}); + Framebuffer fb{{{}, Vector2i{32}}}; + fb.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color) + .bind(); + Buffer input; input.setData(inputData, BufferUsage::StaticDraw); Buffer output1, output2; @@ -434,6 +465,13 @@ void TransformFeedbackGLTest::interleaved() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::GL::ARB::transform_feedback3::string() + std::string(" is not supported.")); + /* Bind some FB to avoid errors on contexts w/o default FB */ + Renderbuffer color; + color.setStorage(RenderbufferFormat::RGBA8, Vector2i{32}); + Framebuffer fb{{{}, Vector2i{32}}}; + fb.attachRenderbuffer(Framebuffer::ColorAttachment{0}, color) + .bind(); + struct XfbInterleavedShader: AbstractShaderProgram { typedef Attribute<0, Vector2> Input;