Index: third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.h |
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.h b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.h |
index e0a19da5761fbfe3445f69b93b6f22155621eb72..c6d86e4e7897291fa812573e9e04fc06a5227c81 100644 |
--- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.h |
+++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.h |
@@ -72,6 +72,10 @@ public: |
Preserve, |
Discard |
}; |
+ enum WebGLVersion { |
+ WebGL1, |
+ WebGL2, |
+ }; |
static PassRefPtr<DrawingBuffer> create( |
std::unique_ptr<WebGraphicsContext3DProvider>, |
@@ -81,7 +85,8 @@ public: |
bool wantDepthBuffer, |
bool wantStencilBuffer, |
bool wantAntialiasing, |
- PreserveDrawingBuffer); |
+ PreserveDrawingBuffer, |
+ WebGLVersion); |
static void forceNextDrawingBufferCreationToFail(); |
~DrawingBuffer() override; |
@@ -227,6 +232,7 @@ protected: // For unittests |
bool wantAlphaChannel, |
bool premultipliedAlpha, |
PreserveDrawingBuffer, |
+ WebGLVersion, |
bool wantsDepth, |
bool wantsStencil); |
@@ -253,6 +259,7 @@ private: |
DISALLOW_NEW(); |
GLuint textureId = 0; |
GLuint imageId = 0; |
+ bool immutable = false; |
// A GpuMemoryBuffer is a concept that the compositor understands. and |
// is able to operate on. The id is scoped to renderer process. |
@@ -321,9 +328,8 @@ private: |
// Helper function to flip a bitmap vertically. |
void flipVertically(uint8_t* data, int width, int height); |
- // Helper to texImage2D with pixel==0 case: pixels are initialized to 0. |
- // By default, alignment is 4, the OpenGL default setting. |
- void texImage2DResourceSafe(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLint alignment = 4); |
+ // Allocate a storage texture if possible. Otherwise, allocate a regular texture. |
+ void allocateConditionallyImmutableTexture(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type); |
// Allocate buffer storage to be sent to compositor using either texImage2D or CHROMIUM_image based on available support. |
void deleteChromiumImageForTexture(TextureInfo*); |
@@ -358,6 +364,7 @@ private: |
GLenum getMultisampledRenderbufferFormat(); |
const PreserveDrawingBuffer m_preserveDrawingBuffer; |
+ const WebGLVersion m_webGLVersion; |
bool m_scissorEnabled = false; |
GLuint m_texture2DBinding = 0; |
GLuint m_drawFramebufferBinding = 0; |
@@ -376,6 +383,7 @@ private: |
const bool m_wantAlphaChannel; |
const bool m_premultipliedAlpha; |
bool m_hasImplicitStencilBuffer = false; |
+ bool m_storageTextureSupported = false; |
struct FrontBufferInfo { |
TextureInfo texInfo; |
WebExternalTextureMailbox mailbox; |