From a27c6371023255fc532525c0cc624b0b63a541f6 Mon Sep 17 00:00:00 2001 From: "reveman@chromium.org" Date: Sat, 24 Nov 2012 03:31:24 +0000 Subject: cc: Add CHROMIUM_pixel_transfer_buffer_object support. Add ResourceProvider interface for using CHROMIUM_pixel_transfer_buffer_object extension for texture uploads. This provides an interface for performing resource updates without any unnecessary copying being performed. BUG=155209 TEST=cc_unittests Review URL: https://chromiumcodereview.appspot.com/11428002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@169380 0039d316-1c4b-4281-b951-d872f2087c98 --- cc/resource_provider.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'cc/resource_provider.h') diff --git a/cc/resource_provider.h b/cc/resource_provider.h index e75cda6..3d7b208 100644 --- a/cc/resource_provider.h +++ b/cc/resource_provider.h @@ -197,6 +197,18 @@ public: DISALLOW_COPY_AND_ASSIGN(ScopedWriteLockSoftware); }; + // Acquire pixel buffer for resource. The pixel buffer can be used to + // set resource pixels without performing unnecessary copying. + void acquirePixelBuffer(ResourceId id); + void releasePixelBuffer(ResourceId id); + + // Map/unmap the acquired pixel buffer. + uint8_t* mapPixelBuffer(ResourceId id); + void unmapPixelBuffer(ResourceId id); + + // Update pixels from acquired pixel buffer. + void setPixelsFromBuffer(ResourceId id); + private: struct Resource { Resource(); @@ -204,8 +216,11 @@ private: Resource(uint8_t* pixels, int pool, const gfx::Size& size, GLenum format); unsigned glId; + // Pixel buffer used for set pixels without unnecessary copying. + unsigned glPixelBufferId; Mailbox mailbox; uint8_t* pixels; + uint8_t* pixelBuffer; int pool; int lockForReadCount; bool lockedForWrite; -- cgit v1.1