1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/canvas/src/WebGLExtensionInstancedArrays.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,63 @@ 1.4 +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "WebGLContext.h" 1.10 +#include "WebGLExtensions.h" 1.11 +#include "mozilla/dom/WebGLRenderingContextBinding.h" 1.12 +#include "GLContext.h" 1.13 + 1.14 +using namespace mozilla; 1.15 + 1.16 +WebGLExtensionInstancedArrays::WebGLExtensionInstancedArrays(WebGLContext* context) 1.17 + : WebGLExtensionBase(context) 1.18 +{ 1.19 + MOZ_ASSERT(IsSupported(context), "should not construct WebGLExtensionInstancedArrays: " 1.20 + "ANGLE_instanced_arrays unsupported."); 1.21 +} 1.22 + 1.23 +WebGLExtensionInstancedArrays::~WebGLExtensionInstancedArrays() 1.24 +{ 1.25 +} 1.26 + 1.27 +void 1.28 +WebGLExtensionInstancedArrays::DrawArraysInstancedANGLE(GLenum mode, GLint first, 1.29 + GLsizei count, GLsizei primcount) 1.30 +{ 1.31 + if (mIsLost) 1.32 + return mContext->ErrorInvalidOperation("drawArraysInstancedANGLE: Extension is lost."); 1.33 + 1.34 + mContext->DrawArraysInstanced(mode, first, count, primcount); 1.35 +} 1.36 + 1.37 +void 1.38 +WebGLExtensionInstancedArrays::DrawElementsInstancedANGLE(GLenum mode, GLsizei count, 1.39 + GLenum type, WebGLintptr offset, 1.40 + GLsizei primcount) 1.41 +{ 1.42 + if (mIsLost) 1.43 + return mContext->ErrorInvalidOperation("drawElementsInstancedANGLE: Extension is lost."); 1.44 + 1.45 + mContext->DrawElementsInstanced(mode, count, type, offset, primcount); 1.46 +} 1.47 + 1.48 +void 1.49 +WebGLExtensionInstancedArrays::VertexAttribDivisorANGLE(GLuint index, GLuint divisor) 1.50 +{ 1.51 + if (mIsLost) 1.52 + return mContext->ErrorInvalidOperation("vertexAttribDivisorANGLE: Extension is lost."); 1.53 + 1.54 + mContext->VertexAttribDivisor(index, divisor); 1.55 +} 1.56 + 1.57 +bool 1.58 +WebGLExtensionInstancedArrays::IsSupported(const WebGLContext* context) 1.59 +{ 1.60 + gl::GLContext* gl = context->GL(); 1.61 + 1.62 + return gl->IsSupported(gl::GLFeature::draw_instanced) && 1.63 + gl->IsSupported(gl::GLFeature::instanced_arrays); 1.64 +} 1.65 + 1.66 +IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionInstancedArrays)