/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "WebGLExtensions.h" #include "gfxPrefs.h" #include "GLContext.h" #include "mozilla/dom/WebGLRenderingContextBinding.h" #include "WebGLContext.h" namespace mozilla { WebGLExtensionBase::WebGLExtensionBase(WebGLContext* context) : WebGLContextBoundObject(context), mIsLost(false) {} WebGLExtensionBase::~WebGLExtensionBase() {} void WebGLExtensionBase::MarkLost() { mIsLost = true; OnMarkLost(); } NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(WebGLExtensionBase) NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(WebGLExtensionBase, AddRef) NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(WebGLExtensionBase, Release) // - WebGLExtensionFloatBlend::WebGLExtensionFloatBlend(WebGLContext* const webgl) : WebGLExtensionBase(webgl) { MOZ_ASSERT(IsSupported(webgl), "Don't construct extension if unsupported."); } WebGLExtensionFloatBlend::~WebGLExtensionFloatBlend() = default; bool WebGLExtensionFloatBlend::IsSupported(const WebGLContext* const webgl) { if (!gfxPrefs::WebGLDraftExtensionsEnabled()) return false; if (!WebGLExtensionColorBufferFloat::IsSupported(webgl) && !WebGLExtensionEXTColorBufferFloat::IsSupported(webgl)) return false; const auto& gl = webgl->gl; return !gl->IsGLES() || gl->IsANGLE() || gl->IsExtensionSupported(gl::GLContext::EXT_float_blend); } IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionFloatBlend, EXT_float_blend) } // namespace mozilla