diff --git a/src/Magnum/CMakeLists.txt b/src/Magnum/CMakeLists.txt index fefd9c66f..fe0754b69 100644 --- a/src/Magnum/CMakeLists.txt +++ b/src/Magnum/CMakeLists.txt @@ -60,9 +60,8 @@ set(Magnum_SRCS Implementation/ShaderProgramState.cpp Implementation/State.cpp Implementation/TextureState.cpp - Implementation/detectedDriver.cpp + Implementation/driverSpecific.cpp Implementation/maxTextureSize.cpp - Implementation/setupDriverWorkarounds.cpp Trade/AbstractImageConverter.cpp Trade/AbstractImporter.cpp diff --git a/src/Magnum/Context.h b/src/Magnum/Context.h index 86a96567b..1ffa8ab30 100644 --- a/src/Magnum/Context.h +++ b/src/Magnum/Context.h @@ -462,7 +462,7 @@ class MAGNUM_EXPORT Context { explicit Context(void functionLoader()); - /* defined in Implementation/setupDriverWorkarounds.cpp */ + /* Defined in Implementation/driverSpecific.cpp */ MAGNUM_LOCAL void setupDriverWorkarounds(); Version _version; diff --git a/src/Magnum/Implementation/detectedDriver.cpp b/src/Magnum/Implementation/detectedDriver.cpp deleted file mode 100644 index 813c6ea33..000000000 --- a/src/Magnum/Implementation/detectedDriver.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - This file is part of Magnum. - - Copyright © 2010, 2011, 2012, 2013, 2014, 2015 - Vladimír Vondruš - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. -*/ - -#include "Magnum/Context.h" -#include "Magnum/Math/Range.h" - -namespace Magnum { - -auto Context::detectedDriver() -> DetectedDrivers { - if(_detectedDrivers) return *_detectedDrivers; - - _detectedDrivers = DetectedDrivers{}; - - #ifndef MAGNUM_TARGET_GLES - const std::string vendor = vendorString(); - - /* AMD binary desktop drivers */ - if(vendor.find("ATI Technologies Inc.") != std::string::npos) - return *_detectedDrivers |= DetectedDriver::AMD; - - #ifdef CORRADE_TARGET_WINDOWS - /* Intel Windows drivers */ - if(vendor.find("Intel") != std::string::npos) - return *_detectedDrivers |= DetectedDriver::IntelWindows; - #endif - #endif - - #ifdef MAGNUM_TARGET_GLES2 - /* OpenGL ES 2.0 implementation using ANGLE. Taken from - http://stackoverflow.com/a/20149090 */ - { - Range1Di range; - glGetIntegerv(GL_ALIASED_LINE_WIDTH_RANGE, range.data()); - if(range.min() == 1 && range.max() == 1) - return *_detectedDrivers |= DetectedDriver::ProbablyAngle; - } - #endif - - return *_detectedDrivers; -} - -} diff --git a/src/Magnum/Implementation/setupDriverWorkarounds.cpp b/src/Magnum/Implementation/driverSpecific.cpp similarity index 81% rename from src/Magnum/Implementation/setupDriverWorkarounds.cpp rename to src/Magnum/Implementation/driverSpecific.cpp index 7f6d009e3..d20eba533 100644 --- a/src/Magnum/Implementation/setupDriverWorkarounds.cpp +++ b/src/Magnum/Implementation/driverSpecific.cpp @@ -25,9 +25,43 @@ #include "Magnum/Context.h" #include "Magnum/Extensions.h" +#include "Magnum/Math/Range.h" namespace Magnum { +auto Context::detectedDriver() -> DetectedDrivers { + if(_detectedDrivers) return *_detectedDrivers; + + _detectedDrivers = DetectedDrivers{}; + + #ifndef MAGNUM_TARGET_GLES + const std::string vendor = vendorString(); + + /* AMD binary desktop drivers */ + if(vendor.find("ATI Technologies Inc.") != std::string::npos) + return *_detectedDrivers |= DetectedDriver::AMD; + + #ifdef CORRADE_TARGET_WINDOWS + /* Intel Windows drivers */ + if(vendor.find("Intel") != std::string::npos) + return *_detectedDrivers |= DetectedDriver::IntelWindows; + #endif + #endif + + #ifdef MAGNUM_TARGET_GLES2 + /* OpenGL ES 2.0 implementation using ANGLE. Taken from + http://stackoverflow.com/a/20149090 */ + { + Range1Di range; + glGetIntegerv(GL_ALIASED_LINE_WIDTH_RANGE, range.data()); + if(range.min() == 1 && range.max() == 1) + return *_detectedDrivers |= DetectedDriver::ProbablyAngle; + } + #endif + + return *_detectedDrivers; +} + void Context::setupDriverWorkarounds() { #define _setRequiredVersion(extension, version) \ if(_extensionRequiredVersion[Extensions::extension::Index] < Version::version) \