Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Unified Diff: Source/platform/graphics/gpu/DrawingBuffer.h

Issue 274833002: Enable WebGL rendering into ImageCHROMIUM, backed by a scanout buffer to enable overlay suppor… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix release Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/platform/graphics/GraphicsTypes3D.h ('k') | Source/platform/graphics/gpu/DrawingBuffer.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/graphics/gpu/DrawingBuffer.h
diff --git a/Source/platform/graphics/gpu/DrawingBuffer.h b/Source/platform/graphics/gpu/DrawingBuffer.h
index b8a51abb68908f13cc491b4e8e54be221b18badb..841c70fc546126c26704cd44f5d4f298728bcecd 100644
--- a/Source/platform/graphics/gpu/DrawingBuffer.h
+++ b/Source/platform/graphics/gpu/DrawingBuffer.h
@@ -70,9 +70,22 @@ public:
// Manages a rendering target (framebuffer + attachment) for a canvas. Can publish its rendering
// results to a blink::WebLayer for compositing.
class PLATFORM_EXPORT DrawingBuffer : public RefCounted<DrawingBuffer>, public blink::WebExternalTextureLayerClient {
+ // If we used CHROMIUM_image as the backing storage for our buffers,
+ // we need to know the mapping from texture id to image.
+ struct TextureInfo {
+ Platform3DObject textureId;
+ blink::WGC3Duint imageId;
+
+ TextureInfo()
+ : textureId(0)
+ , imageId(0)
+ {
+ }
+ };
+
struct MailboxInfo : public RefCounted<MailboxInfo> {
blink::WebExternalTextureMailbox mailbox;
- unsigned textureId;
+ TextureInfo textureInfo;
IntSize size;
// This keeps the parent drawing buffer alive as long as the compositor is
// referring to one of the mailboxes DrawingBuffer produced. The parent drawing buffer is
@@ -160,7 +173,7 @@ protected: // For unittests
private:
void mailboxReleasedWhileDestructionInProgress(const blink::WebExternalTextureMailbox&);
- unsigned createColorTexture(const IntSize& size = IntSize());
+ unsigned createColorTexture();
// Create the depth/stencil and multisample buffers, if needed.
void createSecondaryBuffers();
bool resizeFramebuffer(const IntSize&);
@@ -173,7 +186,7 @@ private:
void clearPlatformLayer();
PassRefPtr<MailboxInfo> recycledMailbox();
- PassRefPtr<MailboxInfo> createNewMailbox(unsigned);
+ PassRefPtr<MailboxInfo> createNewMailbox(const TextureInfo&);
void deleteMailbox(const blink::WebExternalTextureMailbox&);
// Updates the current size of the buffer, ensuring that s_currentResourceUsePixels is updated.
@@ -204,6 +217,9 @@ private:
// 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 buffer storage to be sent to compositor using either texImage2D or CHROMIUM_image based on available support.
+ void allocateTextureMemory(TextureInfo*, const IntSize&);
+ void deleteChromiumImageForTexture(TextureInfo*);
PreserveDrawingBuffer m_preserveDrawingBuffer;
bool m_scissorEnabled;
@@ -218,8 +234,8 @@ private:
bool m_packedDepthStencilExtensionSupported;
Platform3DObject m_fbo;
// DrawingBuffer's output is double-buffered. m_colorBuffer is the back buffer.
- Platform3DObject m_colorBuffer;
- Platform3DObject m_frontColorBuffer;
+ TextureInfo m_colorBuffer;
+ TextureInfo m_frontColorBuffer;
// This is used when we have OES_packed_depth_stencil.
Platform3DObject m_depthStencilBuffer;
« no previous file with comments | « Source/platform/graphics/GraphicsTypes3D.h ('k') | Source/platform/graphics/gpu/DrawingBuffer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698