diff options
Diffstat (limited to 'Source/WebCore/html/canvas/WebGLBuffer.h')
-rw-r--r-- | Source/WebCore/html/canvas/WebGLBuffer.h | 46 |
1 files changed, 20 insertions, 26 deletions
diff --git a/Source/WebCore/html/canvas/WebGLBuffer.h b/Source/WebCore/html/canvas/WebGLBuffer.h index 3451bb68c..7b9ea55f0 100644 --- a/Source/WebCore/html/canvas/WebGLBuffer.h +++ b/Source/WebCore/html/canvas/WebGLBuffer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Apple Inc. All rights reserved. + * Copyright (C) 2009-2017 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -23,11 +23,9 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef WebGLBuffer_h -#define WebGLBuffer_h +#pragma once #include "WebGLSharedObject.h" - #include <wtf/Forward.h> namespace JSC { @@ -37,44 +35,43 @@ class ArrayBufferView; namespace WebCore { -class WebGLBuffer : public WebGLSharedObject { +class WebGLBuffer final : public WebGLSharedObject { public: + static Ref<WebGLBuffer> create(WebGLRenderingContextBase&); virtual ~WebGLBuffer(); - static PassRefPtr<WebGLBuffer> create(WebGLRenderingContext*); - bool associateBufferData(GC3Dsizeiptr size); bool associateBufferData(JSC::ArrayBuffer*); bool associateBufferData(JSC::ArrayBufferView*); bool associateBufferSubData(GC3Dintptr offset, JSC::ArrayBuffer*); bool associateBufferSubData(GC3Dintptr offset, JSC::ArrayBufferView*); + bool associateCopyBufferSubData(const WebGLBuffer& readBuffer, GC3Dintptr readOffset, GC3Dintptr writeOffset, GC3Dsizeiptr); + + void disassociateBufferData(); GC3Dsizeiptr byteLength() const; const JSC::ArrayBuffer* elementArrayBuffer() const { return m_elementArrayBuffer.get(); } - // Gets the cached max index for the given type. Returns -1 if - // none has been set. - int getCachedMaxIndex(GC3Denum type); + // Gets the cached max index for the given type if one has been set. + std::optional<unsigned> getCachedMaxIndex(GC3Denum type); // Sets the cached max index for the given type. - void setCachedMaxIndex(GC3Denum type, int value); + void setCachedMaxIndex(GC3Denum type, unsigned value); GC3Denum getTarget() const { return m_target; } - void setTarget(GC3Denum); + void setTarget(GC3Denum, bool forWebGL2); bool hasEverBeenBound() const { return object() && m_target; } protected: - WebGLBuffer(WebGLRenderingContext*); + WebGLBuffer(WebGLRenderingContextBase&); - virtual void deleteObjectImpl(GraphicsContext3D*, Platform3DObject) override; + void deleteObjectImpl(GraphicsContext3D*, Platform3DObject) override; private: - virtual bool isBuffer() const override { return true; } - - GC3Denum m_target; + GC3Denum m_target { 0 }; RefPtr<JSC::ArrayBuffer> m_elementArrayBuffer; - GC3Dsizeiptr m_byteLength; + GC3Dsizeiptr m_byteLength { 0 }; // Optimization for index validation. For each type of index // (i.e., UNSIGNED_SHORT), cache the maximum index in the @@ -85,13 +82,12 @@ private: // that size. struct MaxIndexCacheEntry { GC3Denum type; - int maxIndex; + unsigned maxIndex; }; // OpenGL ES 2.0 only has two valid index types (UNSIGNED_BYTE - // and UNSIGNED_SHORT), but might as well leave open the - // possibility of adding others. + // and UNSIGNED_SHORT) plus one extension (UNSIGNED_INT). MaxIndexCacheEntry m_maxIndexCache[4]; - unsigned int m_nextAvailableCacheEntry; + unsigned m_nextAvailableCacheEntry { 0 }; // Clears all of the cached max indices. void clearCachedMaxIndices(); @@ -103,5 +99,3 @@ private: }; } // namespace WebCore - -#endif // WebGLBuffer_h |