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

Issue 962723002: Change CHROMIUM_image declarations to support multi planar input. (Closed)

Created:
5 years, 10 months ago by emircan
Modified:
5 years, 9 months ago
Reviewers:
mcasas, reveman
CC:
chromium-apps-reviews_chromium.org, chromium-reviews, extensions-reviews_chromium.org, piman+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Change CHROMIUM_image declarations to support multi planar input. GLuint CreateImageCHROMIUM(ClientBuffer* buffers, GLsizei width, GLsizei height, GLenum internalformat) <buffers> specifies an array in which ClientBuffer elements corresponding to image planes are stored. The number of ClientBuffer object are inferred through the specified <internalformat>. I went through and changed all the calls to CreateImageCHROMIUM(). In the next CLs, I will tackle these steps: - Add new GpuMemoryBuffer formats such as gfx::GpuMemoryBuffer::X_8, gfx::GpuMemoryBuffer::X_2, and GLEnum GL_RGB_YUV420. - Implement SHARED_MEMORY support for the new formats with multiple planes. - Implement software multi-plane CHROMIUM_image support. - Add GLImageLinuxDMABuffer support for multiple planes. - Add OzoneNativeBuffer support for the new GpuMemoryBuffer formats. BUG=439520 TEST= GpuMemoryBufferTest.Lifecycle in gl_tests, ResourceProviderTest.Image_GLTexture in cc_unittests, and BufferQueueStandaloneTest.FboBinding in content_unittests passes. +--------------------------------------------------+ |GLuint CreateImageCHROMIUM(ClientBuffer* buffers, | | GLsizei width, | | GLsizei height, | | GLenum internalformat) | +-------------+------------------------------------+ | CALLS +-------------+----------------------------+ |GLES2Implementation::CreateImageCHROMIUM()| +-------------+----------------------------+ | CALLS +-------------+-----------+----+ IMPLEMENTED BY |GpuControl::CreateImage()|VIRT+--+------+--------------------+-----------------------------------------+ +-------------------------+----+ | | | | | | | | +---------------------------------v----+ | +--------------+----------------------+ +-------+-----------------------------+ |egl::Display::CreateImage() | | |CommandBufferProxyImpl::CreateImage()| |InProcessCommandBuffer::CreateImage()| |MockClientGpuControl::CreateImage() | | +----------+------+-------------------+ +--------------------+----------------+ |PpapiCommandBufferProxy::CreateImage()| | +------+ | CALLS +--------------------------------------+ | | IPC | CALLS +--------------------v------------------------+----+ | NOTIMPLEMENTED(); | | +------+ |ImageFactory::CreateImageForGpuMemoryBuffer()|VIRT| +--------------------------------------+ | +----------+------+-------------------+ +---------------------------------------------+----+ | |GpuCommandBufferStub::OnCreateImage()| +-----------------------------+ +------------------+------------------+ THREAD COMMUNICATION PATH |test/GLmanager::CreateImage()| | CALLS +-----------------------------+ +------------------+------------------------+ |gfx::GLImageRefCountedMemory | |GpuChannel::CreateImageForGpuMemoryBuffer()| +-----------------------------+ +-------------------------------------------+ TEST PATH PROCESS COMMUNICATION PATH GLES2Implementation methods use GpuControl interface to interact with Gpu. I added a new virtual method GpuControl::CreateImage() that overloads and takes multiple buffers. GpuControl has 6 subclasses where this method needs to be implemented: - 3 of them; Display, MockClientGpuControl, PpapiCommandBufferProxy have NOTIMPLEMENTED(). - 1 of them; GLManager is a test class but includes an actual implementation based on gfx::GLImageRefCountedMemory. Multi buffer usage can be implemented in the next CLs via conversion to RGB. - 2 of them; InProcessCommandBuffer and CommandBufferProxyImpl are the where actually communication with GPU happens. PROCESS COMMUNICATION PATH THREAD COMMUNICATION PATH +-------------------------------------------+ +------------------------------------------------+----+ |GpuChannel::CreateImageForGpuMemoryBuffer()| +----> ImageFactory::CreateImageForGpuMemoryBuffers() |VIRT| +---------------+------------+--------------+ | +-------------+----------------------+---------+-+----+ | CALLS | | | IMPLEMENTED BY | | | | +---------------------+ +-------------+--------------------+ | | | | |GpuMemoryBufferFactorySharedMemory| | | | +---------------+-----------------+ +----------------------------------+ | | | |GLImageSharedMemory::Initialize()| |gfx::GLImageSharedMemory | | | | +---------------------------------+ +----------------------------------+ | | | | | | | | | +------------------------------------+------+ | | |ui::GpuMemoryBufferFactoryOzoneNatiVeBuffer| | | +-------------------------------------------+ | | |ui::GLImageOzoneNatiVePixmap OR | | | |ui::GLImageOzoneNatiVePixmapDmaBuf | | | +-------------------------------------------+ | | | | +----------------------------------------------+ | |ui::GpuMemoryBufferFactoryIOSurface | | +----------------------------------------------+ | | +-----------------------------------------------------+ |ui::GpuMemoryBufferFactorySurfaceTexture | +-----------------------------------------------------+

Patch Set 1 : Changing the function calls #

Total comments: 14

Patch Set 2 : mcasas@comments #

Total comments: 20

Patch Set 3 : reveman@ comments and const-corrected function signatures. #

Total comments: 12

Patch Set 4 : reveman@ comments and gpu::ImageFactory::ImageFormatToGpuMemoryBufferFormats. #

Patch Set 5 : Handle through IPC. #

Total comments: 30

Patch Set 6 : reveman@ comments. #

Patch Set 7 : ImageFactory::CreateImageForGpuMemoryBuffer interface changes. #

Total comments: 29

Patch Set 8 : Rebase. #

Patch Set 9 : reveman@ comments. #

Patch Set 10 : Added implementations of ImageFactory::CreateImageForGpuMemoryBuffers(). #

Total comments: 2

Patch Set 11 : reveman@ comments and fixes. #

Patch Set 12 : Rebased. #

Patch Set 13 : Cleanups and extra error checks. #

Patch Set 14 : Static array size issue fixed. #

Patch Set 15 : Trybot issues fixed. #

Total comments: 37

Patch Set 16 : reveman@ comments. #

Total comments: 18

Patch Set 17 : reveman@ comments. #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+451 lines, -219 lines) Patch
M cc/resources/resource_provider.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +3 lines, -5 lines 0 comments Download
M cc/resources/resource_provider_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M cc/resources/tile_task_worker_pool_perftest.cc View 3 1 chunk +1 line, -1 line 0 comments Download
M cc/test/test_gles2_interface.h View 3 1 chunk +1 line, -1 line 0 comments Download
M cc/test/test_gles2_interface.cc View 3 1 chunk +3 lines, -3 lines 0 comments Download
M cc/test/test_image_factory.h View 1 2 3 4 5 6 7 8 1 chunk +3 lines, -3 lines 0 comments Download
M cc/test/test_image_factory.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +8 lines, -5 lines 0 comments Download
M cc/test/test_web_graphics_context_3d.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M cc/test/test_web_graphics_context_3d.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M content/browser/compositor/buffer_queue.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +6 lines, -3 lines 0 comments Download
M content/browser/compositor/buffer_queue_unittest.cc View 3 1 chunk +1 line, -1 line 0 comments Download
M content/browser/renderer_host/media/video_capture_texture_wrapper.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +3 lines, -4 lines 0 comments Download
M content/common/gpu/client/command_buffer_proxy_impl.h View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M content/common/gpu/client/command_buffer_proxy_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3 chunks +66 lines, -28 lines 2 comments Download
M content/common/gpu/gpu_channel.h View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_channel.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +28 lines, -11 lines 0 comments Download
M content/common/gpu/gpu_command_buffer_stub.h View 1 2 3 4 5 6 1 chunk +2 lines, -2 lines 0 comments Download
M content/common/gpu/gpu_command_buffer_stub.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +39 lines, -17 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_io_surface.h View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_io_surface.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +11 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_ozone_native_buffer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +5 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_ozone_native_buffer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +16 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_shared_memory.h View 1 2 3 4 5 6 7 8 1 chunk +3 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_shared_memory.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +14 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_surface_texture.h View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_memory_buffer_factory_surface_texture.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +11 lines, -3 lines 0 comments Download
M content/common/gpu/gpu_messages.h View 1 2 3 4 5 1 chunk +6 lines, -6 lines 0 comments Download
M gpu/GLES2/extensions/CHROMIUM/CHROMIUM_image.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +7 lines, -4 lines 0 comments Download
M gpu/GLES2/gl2extchromium.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +6 lines, -5 lines 0 comments Download
M gpu/command_buffer/build_gles2_cmd_buffer.py View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/client/client_test_helper.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +6 lines, -5 lines 0 comments Download
M gpu/command_buffer/client/client_test_helper.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +6 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_c_lib_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -2 lines 0 comments Download
M gpu/command_buffer/client/gles2_implementation.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/client/gles2_implementation.cc View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +13 lines, -11 lines 0 comments Download
M gpu/command_buffer/client/gles2_implementation_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/client/gles2_interface_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/client/gles2_interface_stub_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/client/gles2_trace_implementation_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -2 lines 0 comments Download
M gpu/command_buffer/client/gpu_control.h View 1 2 3 1 chunk +2 lines, -2 lines 0 comments Download
M gpu/command_buffer/cmd_buffer_functions.txt View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/service/image_factory.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +19 lines, -7 lines 0 comments Download
M gpu/command_buffer/service/image_factory.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4 chunks +39 lines, -6 lines 0 comments Download
M gpu/command_buffer/service/in_process_command_buffer.h View 1 2 3 4 5 2 chunks +7 lines, -6 lines 0 comments Download
M gpu/command_buffer/service/in_process_command_buffer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4 chunks +69 lines, -30 lines 0 comments Download
M gpu/command_buffer/tests/gl_gpu_memory_buffer_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +3 lines, -2 lines 0 comments Download
M gpu/command_buffer/tests/gl_manager.h View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M gpu/command_buffer/tests/gl_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3 chunks +14 lines, -3 lines 0 comments Download
M gpu/gles2_conform_support/egl/display.h View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M gpu/gles2_conform_support/egl/display.cc View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M ppapi/proxy/ppapi_command_buffer_proxy.h View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M ppapi/proxy/ppapi_command_buffer_proxy.cc View 1 2 3 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 31 (8 generated)
emircan
PTAL.
5 years, 9 months ago (2015-02-27 20:20:50 UTC) #3
emircan
Btw, I want to point out something for the future use of this function, in ...
5 years, 9 months ago (2015-02-27 23:35:58 UTC) #4
mcasas
A few minor comments, otherwise looks fine from generic-Cr POV. https://codereview.chromium.org/962723002/diff/20001/cc/resources/resource_provider.cc File cc/resources/resource_provider.cc (right): https://codereview.chromium.org/962723002/diff/20001/cc/resources/resource_provider.cc#newcode1089 ...
5 years, 9 months ago (2015-02-28 01:14:26 UTC) #5
emircan
https://codereview.chromium.org/962723002/diff/20001/cc/resources/resource_provider.cc File cc/resources/resource_provider.cc (right): https://codereview.chromium.org/962723002/diff/20001/cc/resources/resource_provider.cc#newcode1089 cc/resources/resource_provider.cc:1089: ClientBuffer client_buffer = gpu_memory_buffer_->AsClientBuffer(); On 2015/02/28 01:14:26, mcasas wrote: ...
5 years, 9 months ago (2015-02-28 02:33:36 UTC) #6
reveman
https://codereview.chromium.org/962723002/diff/40001/cc/resources/resource_provider.cc File cc/resources/resource_provider.cc (right): https://codereview.chromium.org/962723002/diff/40001/cc/resources/resource_provider.cc#newcode1089 cc/resources/resource_provider.cc:1089: const ClientBuffer& client_buffer = gpu_memory_buffer_->AsClientBuffer(); why a const ref? ...
5 years, 9 months ago (2015-03-02 20:09:56 UTC) #7
emircan
Considering const-correctness, I changed the function calls as below: GLuint GLES2Implementation::CreateImageCHROMIUM(const ClientBuffer* const buffers, GLsizei ...
5 years, 9 months ago (2015-03-03 02:02:19 UTC) #10
reveman
https://codereview.chromium.org/962723002/diff/40001/cc/resources/resource_provider.cc File cc/resources/resource_provider.cc (right): https://codereview.chromium.org/962723002/diff/40001/cc/resources/resource_provider.cc#newcode1089 cc/resources/resource_provider.cc:1089: const ClientBuffer& client_buffer = gpu_memory_buffer_->AsClientBuffer(); On 2015/03/03 02:02:18, emircan ...
5 years, 9 months ago (2015-03-03 05:30:13 UTC) #11
reveman
sorry, forgot to respond to this comment. https://codereview.chromium.org/962723002/diff/40001/gpu/command_buffer/client/gles2_implementation.cc File gpu/command_buffer/client/gles2_implementation.cc (right): https://codereview.chromium.org/962723002/diff/40001/gpu/command_buffer/client/gles2_implementation.cc#newcode4720 gpu/command_buffer/client/gles2_implementation.cc:4720: if (buffers ...
5 years, 9 months ago (2015-03-03 05:57:09 UTC) #12
emircan
We are planning to add generic GpuMemoryBuffer::Format such as GpuMemoryBuffer::FormatX_8 and GLEnum such as GL_RGB_YUV420. ...
5 years, 9 months ago (2015-03-04 03:03:16 UTC) #13
reveman
https://codereview.chromium.org/962723002/diff/100001/content/common/gpu/client/command_buffer_proxy_impl.cc File content/common/gpu/client/command_buffer_proxy_impl.cc (right): https://codereview.chromium.org/962723002/diff/100001/content/common/gpu/client/command_buffer_proxy_impl.cc#newcode403 content/common/gpu/client/command_buffer_proxy_impl.cc:403: int32_t CommandBufferProxyImpl::CreateGpuMemoryBufferImage( On 2015/03/04 03:03:16, emircan wrote: > On ...
5 years, 9 months ago (2015-03-04 05:56:00 UTC) #14
emircan
There are 4 function that have NOTIMPLEMENTED after adding these new interfaces: - TestImageFactory::CreateImageForGpuMemoryBuffer() - ...
5 years, 9 months ago (2015-03-04 23:31:50 UTC) #15
reveman
https://codereview.chromium.org/962723002/diff/100001/content/common/gpu/client/command_buffer_proxy_impl.cc File content/common/gpu/client/command_buffer_proxy_impl.cc (right): https://codereview.chromium.org/962723002/diff/100001/content/common/gpu/client/command_buffer_proxy_impl.cc#newcode403 content/common/gpu/client/command_buffer_proxy_impl.cc:403: int32_t CommandBufferProxyImpl::CreateGpuMemoryBufferImage( On 2015/03/04 23:31:50, emircan wrote: > On ...
5 years, 9 months ago (2015-03-05 19:35:33 UTC) #16
emircan
I drew the diagram above to describe the possible paths. I implemented the calls going ...
5 years, 9 months ago (2015-03-09 21:07:23 UTC) #17
reveman
I'm not sure we want a sw fallback path. Instead expose the availability of the ...
5 years, 9 months ago (2015-03-10 04:27:21 UTC) #18
emircan
PTAL. https://codereview.chromium.org/962723002/diff/100001/content/common/gpu/client/command_buffer_proxy_impl.cc File content/common/gpu/client/command_buffer_proxy_impl.cc (right): https://codereview.chromium.org/962723002/diff/100001/content/common/gpu/client/command_buffer_proxy_impl.cc#newcode403 content/common/gpu/client/command_buffer_proxy_impl.cc:403: int32_t CommandBufferProxyImpl::CreateGpuMemoryBufferImage( Sure. The current function should be ...
5 years, 9 months ago (2015-03-11 18:36:36 UTC) #19
emircan
I rebased, cleaned up and fixed trybot issues. I reported http://crbug.com/466689.
5 years, 9 months ago (2015-03-12 18:52:29 UTC) #21
reveman
https://codereview.chromium.org/962723002/diff/360001/cc/test/test_image_factory.cc File cc/test/test_image_factory.cc (right): https://codereview.chromium.org/962723002/diff/360001/cc/test/test_image_factory.cc#newcode23 cc/test/test_image_factory.cc:23: // TODO(emircan): See http://crbug.com/439520; support passing multiple You can ...
5 years, 9 months ago (2015-03-12 19:37:23 UTC) #22
emircan
PTAL. Reverted changes in /ui/* folders to be continued in another CL as requested. https://codereview.chromium.org/962723002/diff/360001/cc/test/test_image_factory.cc ...
5 years, 9 months ago (2015-03-12 22:34:27 UTC) #23
emircan
reveman@ PTAL when you have time.
5 years, 9 months ago (2015-03-18 00:09:20 UTC) #24
reveman
A few more comments. Looks good in general and I think it's close to ready. ...
5 years, 9 months ago (2015-03-18 16:59:01 UTC) #25
emircan
PTAL. https://codereview.chromium.org/962723002/diff/380001/content/common/gpu/client/command_buffer_proxy_impl.cc File content/common/gpu/client/command_buffer_proxy_impl.cc (right): https://codereview.chromium.org/962723002/diff/380001/content/common/gpu/client/command_buffer_proxy_impl.cc#newcode364 content/common/gpu/client/command_buffer_proxy_impl.cc:364: if (!gpu::ImageFactory::IsImageFormatSupported(internalformat)) { On 2015/03/18 16:59:00, reveman wrote: ...
5 years, 9 months ago (2015-03-18 23:51:26 UTC) #27
emircan
I need more owner reviews as this patch touches a lot of files. sievers@ please ...
5 years, 9 months ago (2015-03-19 00:47:57 UTC) #29
reveman
5 years, 9 months ago (2015-03-19 15:39:45 UTC) #30
I was thinking some more about this and came to the conclusion that we need to
consider the option of instead adding multiple planes to the GpuMemoryBuffer
type before we move forward and land this patch:

Adding multiple planes to the GpuMemoryBuffer type would look something  like
this:

class GpuMemoryBuffer {
 public:
  // Maps each plane of the buffer into the client's address space so it can be
  // written to by the CPU. A pointer to plane K is stored at index K-1 of the
  // |data| array. This call may block, for instance if the GPU needs to finish
  // accessing the buffer or if CPU caches need to be synchronized. Returns
  // false on failure. 
  virtual bool Map(void** data) = 0;
                                                       
  // Unmaps the buffer. It's illegal to use the pointers returned by Map() after
  // this has been called.
  virtual void Unmap() = 0;

  // Returns the stride in bytes for the each plane of the buffer. The stride of
  // plane K is stored at index K-1 of the |stride| array.
  virtual void GetStride(uint32* stride) const = 0;
};

One advantage is that this would require much less refactoring. It also gives
the implementation more flexibility as it could potentially use one large buffer
for YUV data where planes are interleaved or packed after each other.

emircan, mcasas, I'm in mtv this week if you want to discuss this.

https://codereview.chromium.org/962723002/diff/420001/content/common/gpu/clie...
File content/common/gpu/client/command_buffer_proxy_impl.cc (right):

https://codereview.chromium.org/962723002/diff/420001/content/common/gpu/clie...
content/common/gpu/client/command_buffer_proxy_impl.cc:363: // Log and return if
the |internalformat| isn't supported.
This comment is incorrect

https://codereview.chromium.org/962723002/diff/420001/content/common/gpu/clie...
content/common/gpu/client/command_buffer_proxy_impl.cc:368: // isn't supported.
Log and return... ? Please update comment

Powered by Google App Engine
This is Rietveld 408576698