From 70cf206112207bdece3583ee26ba8b47376a647e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 19 Feb 2014 01:11:09 +0100 Subject: [PATCH] Proper unimplemented ES2 extension disabling. To have the disabling detectable. --- src/Magnum/Context.cpp | 39 ------------------- .../Implementation/setupDriverWorkarounds.cpp | 36 +++++++++++++++++ 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index be4168385..5bd900695 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -450,45 +450,6 @@ Context::Context() { } #endif - /* Disable extensions for which we need extension loader, as they would - crash otherwise. */ - /** @todo Remove this when extension loader for ES is available */ - #ifdef MAGNUM_TARGET_GLES - #define _disable(prefix, vendor, extension) \ - extensionStatus.reset(Extensions::prefix::vendor::extension::Index); - #ifndef CORRADE_TARGET_NACL - _disable(GL,CHROMIUM,map_sub) - #endif - _disable(GL,EXT,debug_label) - _disable(GL,EXT,debug_marker) - _disable(GL,EXT,disjoint_timer_query) - _disable(GL,EXT,separate_shader_objects) - _disable(GL,EXT,multisampled_render_to_texture) - _disable(GL,EXT,robustness) - _disable(GL,KHR,debug) - _disable(GL,NV,read_buffer_front) - _disable(GL,OES,mapbuffer) - #ifdef MAGNUM_TARGET_GLES2 - _disable(GL,ANGLE,framebuffer_blit) - _disable(GL,ANGLE,framebuffer_multisample) - _disable(GL,APPLE,framebuffer_multisample) - _disable(GL,EXT,discard_framebuffer) - _disable(GL,EXT,blend_minmax) - #ifndef CORRADE_TARGET_NACL - _disable(GL,EXT,occlusion_query_boolean) - #endif - _disable(GL,EXT,texture_storage) - _disable(GL,EXT,map_buffer_range) - _disable(GL,NV,draw_buffers) - _disable(GL,NV,fbo_color_attachments) // ?? - _disable(GL,NV,read_buffer) - _disable(GL,NV,framebuffer_multisample) - _disable(GL,OES,texture_3D) - _disable(GL,OES,vertex_array_object) - #endif - #undef _disable - #endif - /* Reset minimal required version to Version::None for whole array */ for(auto& i: _extensionRequiredVersion) i = Version::None; diff --git a/src/Magnum/Implementation/setupDriverWorkarounds.cpp b/src/Magnum/Implementation/setupDriverWorkarounds.cpp index 4978e63e0..141542297 100644 --- a/src/Magnum/Implementation/setupDriverWorkarounds.cpp +++ b/src/Magnum/Implementation/setupDriverWorkarounds.cpp @@ -33,6 +33,42 @@ void Context::setupDriverWorkarounds() { if(_extensionRequiredVersion[Extensions::extension::Index] < Version::version) \ _extensionRequiredVersion[Extensions::extension::Index] = Version::version + #ifdef MAGNUM_TARGET_GLES + /* Disable extensions for which we need extension loader, as they would + crash otherwise. */ + /** @todo Remove this when extension loader for ES is available */ + #ifndef CORRADE_TARGET_NACL + _setRequiredVersion(GL::CHROMIUM::map_sub, None); + #endif + _setRequiredVersion(GL::EXT::debug_label, None); + _setRequiredVersion(GL::EXT::debug_marker, None); + _setRequiredVersion(GL::EXT::disjoint_timer_query, None); + _setRequiredVersion(GL::EXT::separate_shader_objects, None); + _setRequiredVersion(GL::EXT::multisampled_render_to_texture, None); + _setRequiredVersion(GL::EXT::robustness, None); + _setRequiredVersion(GL::KHR::debug, None); + _setRequiredVersion(GL::NV::read_buffer_front, None); + _setRequiredVersion(GL::OES::mapbuffer, None); + #ifdef MAGNUM_TARGET_GLES2 + _setRequiredVersion(GL::ANGLE::framebuffer_blit, None); + _setRequiredVersion(GL::ANGLE::framebuffer_multisample, None); + _setRequiredVersion(GL::APPLE::framebuffer_multisample, None); + _setRequiredVersion(GL::EXT::discard_framebuffer, None); + _setRequiredVersion(GL::EXT::blend_minmax, None); + #ifndef CORRADE_TARGET_NACL + _setRequiredVersion(GL::EXT::occlusion_query_boolean, None); + #endif + _setRequiredVersion(GL::EXT::texture_storage, None); + _setRequiredVersion(GL::EXT::map_buffer_range, None); + _setRequiredVersion(GL::NV::draw_buffers, None); + _setRequiredVersion(GL::NV::fbo_color_attachments, None); // ?? + _setRequiredVersion(GL::NV::read_buffer, None); + _setRequiredVersion(GL::NV::framebuffer_multisample, None); + _setRequiredVersion(GL::OES::texture_3D, None); + _setRequiredVersion(GL::OES::vertex_array_object, None); + #endif + #endif + #undef _setRequiredVersion }