summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/canvas/WebGLBuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/html/canvas/WebGLBuffer.h')
-rw-r--r--Source/WebCore/html/canvas/WebGLBuffer.h46
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