Browse Source

Proper unimplemented ES2 extension disabling.

To have the disabling detectable.
pull/51/head
Vladimír Vondruš 12 years ago
parent
commit
70cf206112
  1. 39
      src/Magnum/Context.cpp
  2. 36
      src/Magnum/Implementation/setupDriverWorkarounds.cpp

39
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;

36
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
}

Loading…
Cancel
Save