aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGpuGL.cpp
Commit message (Collapse)AuthorAge
* Allow compressed texture data to be updated.Gravatar krajcevski2014-06-11
| | | | | | | | R=robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/326383003
* Generate path names on the client sideGravatar cdalton2014-06-09
| | | | | | | | | | | | | | Pre-allocates a range of path names and manages allocations within that range on the client side. This allows us to generate new path objects in a feed-forward manner that doesn't require round trips to the GL server. BUG=skia: R=bsalomon@google.com, markkilgard@gmail.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/304403003
* Initial work to get ETC1 data up to the GPUGravatar krajcevski2014-06-02
| | | | | | | | | | Committed: http://code.google.com/p/skia/source/detail?r=15001 R=bsalomon@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/302783002
* Revert of Initial work to get ETC1 data up to the GPU ↵Gravatar commit-bot@chromium.org2014-05-30
| | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/302783002/) Reason for revert: ETC1 linking problems with chrome. Original issue's description: > Initial work to get ETC1 data up to the GPU > > Committed: http://code.google.com/p/skia/source/detail?r=15001 R=bsalomon@google.com, robertphillips@google.com TBR=bsalomon@google.com, robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: krajcevski@google.com Review URL: https://codereview.chromium.org/303273008 git-svn-id: http://skia.googlecode.com/svn/trunk@15004 2bbb7eff-a529-9590-31e7-b0007b416f81
* Initial work to get ETC1 data up to the GPUGravatar commit-bot@chromium.org2014-05-30
| | | | | | | | | | R=bsalomon@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/302783002 git-svn-id: http://skia.googlecode.com/svn/trunk@15001 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move the LATC and ETC1 enum values to GrPixelConfig. I also tried to put in ↵Gravatar commit-bot@chromium.org2014-05-30
| | | | | | | | | | | | | | checks in a few places to make sure that we weren't using these pixel configurations in places that we shouldn't be. LATC is a DXT-esque alpha compression format that goes by a few other names (RGTC, 3DC). It might be useful to investigate using it to compress the alpha masks that we get from software rasterization. This patch set adds enums for that and recognition whether or not the device can support it. R=bsalomon@google.com, robertphillips@google.com Author: krajcevski@google.com Review URL: https://codereview.chromium.org/304743004 git-svn-id: http://skia.googlecode.com/svn/trunk@14991 2bbb7eff-a529-9590-31e7-b0007b416f81
* separate view matrix from rt adjustmentGravatar commit-bot@chromium.org2014-05-29
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/299943002 git-svn-id: http://skia.googlecode.com/svn/trunk@14944 2bbb7eff-a529-9590-31e7-b0007b416f81
* Rename SkMatrix::get(Max|Min)Stretch to get(Min|Max)ScaleGravatar commit-bot@chromium.org2014-05-20
| | | | | | | | | | R=reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/295713002 git-svn-id: http://skia.googlecode.com/svn/trunk@14798 2bbb7eff-a529-9590-31e7-b0007b416f81
* Factor GrTexture into public GrTexture and private GrTextureImpl.Gravatar commit-bot@chromium.org2014-05-09
| | | | | | | | | | | | Committed: http://code.google.com/p/skia/source/detail?r=14680 R=jvanverth@google.com, robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/275903002 git-svn-id: http://skia.googlecode.com/svn/trunk@14687 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert of Factor GrTexture into public GrTexture and private GrTextureImpl. ↵Gravatar commit-bot@chromium.org2014-05-09
| | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/275903002/) Reason for revert: Breaks chrome build. Original issue's description: > Factor GrTexture into public GrTexture and private GrTextureImpl. > > Committed: http://code.google.com/p/skia/source/detail?r=14680 R=jvanverth@google.com, robertphillips@google.com TBR=jvanverth@google.com, robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: bsalomon@google.com Review URL: https://codereview.chromium.org/278073002 git-svn-id: http://skia.googlecode.com/svn/trunk@14681 2bbb7eff-a529-9590-31e7-b0007b416f81
* Factor GrTexture into public GrTexture and private GrTextureImpl.Gravatar commit-bot@chromium.org2014-05-09
| | | | | | | | | | R=jvanverth@google.com, robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/275903002 git-svn-id: http://skia.googlecode.com/svn/trunk@14680 2bbb7eff-a529-9590-31e7-b0007b416f81
* Split GrResource into GrCacheable/GrGpuObjectGravatar commit-bot@chromium.org2014-05-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, an object needed to inherit from GrResource (and thus be a GPU object) in order to live in the GrResourceCache. That was a problem for caching items that weren't GPU objects themselves, but owned GPU objects. This change splits GrResource into two classes: 1. GrCacheable: The base class for objects that can live in the GrResourceCache. 2. GrGpuObject, which inherits from GrCacheable: The base class for objects that get tracked by GrGpu. This change is purely a refactor; there is no change in functionality. Change-Id: I3e8daeb1f123041f414aa306c1366e959ae9e39e BUG=skia: R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/251013002 git-svn-id: http://skia.googlecode.com/svn/trunk@14553 2bbb7eff-a529-9590-31e7-b0007b416f81
* Convert GrCrash->SkFAIL GrDebugCrash->SkDEBUGFAILGravatar commit-bot@chromium.org2014-04-30
| | | | | | | | | | R=robertphillips@google.com, reed@google.com, mtklein@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/257393004 git-svn-id: http://skia.googlecode.com/svn/trunk@14460 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use EXT_direct_state_access for path matrix manipulationGravatar commit-bot@chromium.org2014-04-25
| | | | | | | | | | | | | | | | Use EXT_direct_state_access for path matrix manipulation when using NV_path_rendering extension. This makes Chromium command buffer integration easier, since the current matrix mode does not need to be exposed as state and fewer function calls and enums are needed. BUG=chromium:344330 R=bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/245963009 git-svn-id: http://skia.googlecode.com/svn/trunk@14374 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use fixed function pipeline only when drawing pathsGravatar commit-bot@chromium.org2014-04-23
| | | | | | | | | | | | | | | | | | | | | | Use fixed function pipeline only when drawing paths. Previously FF vertex shader was used when drawing normal geometry if path rendering was enabled. This is required to make Chromium integration easier. This way fixed function vertex shading, including vertexshader-less programs, need not be implemented in the Chromium command buffer. Removes FF TexGen functionality, as it is not used anymore. Likewise removes the fixedFunctionSupport GL capability flag. BUG=chromium:344330 R=bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/212753002 git-svn-id: http://skia.googlecode.com/svn/trunk@14334 2bbb7eff-a529-9590-31e7-b0007b416f81
* Double assignment in GrGpuGL::configToGLFormats()Gravatar commit-bot@chromium.org2014-04-16
| | | | | | | | | | | | | Remove the first one. R=hcm@google.com, bsalomon@google.com BUG=skia:2427 Author: siglesias@igalia.com Review URL: https://codereview.chromium.org/240123002 git-svn-id: http://skia.googlecode.com/svn/trunk@14222 2bbb7eff-a529-9590-31e7-b0007b416f81
* glDiscardFramebuffer() in GrGpuGL::discard uses invalid GLenumGravatar commit-bot@chromium.org2014-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | According to the spec: "If a framebuffer object is bound to <target>, then <attachments> may contain COLOR_ATTACHMENT0, DEPTH_ATTACHMENT, and/or STENCIL_ATTACHMENT. If the framebuffer object is not complete, DiscardFramebufferEXT may be ignored. If the default framebuffer is bound to <target>, then <attachment> may contain COLOR, identifying the color buffer; DEPTH, identifying the depth buffer; or STENCIL, identifying the stencil buffer." Do the same as in glInvalidateFramebuffer() case. Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> R=bsalomon@google.com BUG=skia:2411 Author: siglesias@igalia.com Review URL: https://codereview.chromium.org/236193007 git-svn-id: http://skia.googlecode.com/svn/trunk@14220 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use glInvalidateFramebuffer() when it is supported.Gravatar commit-bot@chromium.org2014-04-02
| | | | | | | | | | | BUG=skia:1541 R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/218763006 git-svn-id: http://skia.googlecode.com/svn/trunk@14026 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use int rather than size_t for pathCount in GrDrawTarget::drawPathsGravatar commit-bot@chromium.org2014-03-28
| | | | | | | | | | | R=reed@google.com TBR=reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/216293006 git-svn-id: http://skia.googlecode.com/svn/trunk@13988 2bbb7eff-a529-9590-31e7-b0007b416f81
* SK_SUPPORT_LEGACY_GRTYPES to hide duplicate types from SkTypes.hGravatar commit-bot@chromium.org2014-03-28
| | | | | | | | | | | BUG=skia: R=bsalomon@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/216503004 git-svn-id: http://skia.googlecode.com/svn/trunk@13982 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add discard API to SkCanvas, plumb it to glDiscardFramebuffer()Gravatar commit-bot@chromium.org2014-03-28
| | | | | | | | | | | BUG=skia:2349 R=robertphillips@google.com, reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/211683002 git-svn-id: http://skia.googlecode.com/svn/trunk@13976 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove forceRenderTargetFlush (unused)Gravatar commit-bot@chromium.org2014-03-25
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/210253004 git-svn-id: http://skia.googlecode.com/svn/trunk@13948 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add Gpu Tracing to GaneshGravatar commit-bot@chromium.org2014-03-25
| | | | | | | | | | | BUG=skia:2316 R=bsalomon@google.com, tomhudson@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/184443003 git-svn-id: http://skia.googlecode.com/svn/trunk@13936 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make it possible to draw multiple paths at once to a draw targetGravatar commit-bot@chromium.org2014-03-25
| | | | | | | | | | | | | | | | | | | | | | | Add interface to draw multiple paths in a single "command" to a draw target. Implement this interface in GrGpuGL with NVPR "instanced" calls. The instanced calls accept list of paths and list of transformations as their parameters. The transformations are at this moment expected to be 2d affine transformations, as the functions are called only for text rendering. This will be used when drawing fonts. Later it can be maybe be used in GrInOrderDrawBuffer to aggregate many draw calls into one instanced draw call, similar to drawing rects. R=jvanverth@google.com, bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/209413006 git-svn-id: http://skia.googlecode.com/svn/trunk@13930 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add hooks for GL_EXT_debug_marker in gpuGravatar commit-bot@chromium.org2014-02-21
| | | | | | | | | | | BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/174123003 git-svn-id: http://skia.googlecode.com/svn/trunk@13538 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move GrGLExtensions from GrGLContextInfo to GrGLInterfaceGravatar commit-bot@chromium.org2014-01-17
| | | | | | | | | | | BUG=skia:2042 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/140823003 git-svn-id: http://skia.googlecode.com/svn/trunk@13118 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove GR_GL_IGNORE_ES3_MSAA.sGravatar commit-bot@chromium.org2014-01-16
| | | | | | | | | | R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/140933005 git-svn-id: http://skia.googlecode.com/svn/trunk@13115 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make GrGLContextInfo have private ptr to GrGLInterfaceGravatar commit-bot@chromium.org2014-01-16
| | | | | | | | | | | BUG=skia:2042 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/140843003 git-svn-id: http://skia.googlecode.com/svn/trunk@13111 2bbb7eff-a529-9590-31e7-b0007b416f81
* Rename GrGLBinding->GrGLStandard, no longer a bitfieldGravatar commit-bot@chromium.org2014-01-16
| | | | | | | | | | | BUG=skia:2042 R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/133413003 git-svn-id: http://skia.googlecode.com/svn/trunk@13108 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add detection of mip supportGravatar commit-bot@chromium.org2013-12-19
| | | | | | | | | | R=robertphillips@google.com, jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/102853005 git-svn-id: http://skia.googlecode.com/svn/trunk@12771 2bbb7eff-a529-9590-31e7-b0007b416f81
* Do not use GrBicubic effect when downscaling. Also, don't use glTexStorage ↵Gravatar commit-bot@chromium.org2013-12-09
| | | | | | | | | | | | as it interferes with deleyed mipmap generation. R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/105353002 git-svn-id: http://skia.googlecode.com/svn/trunk@12576 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverting r12427Gravatar rmistry@google.com2013-12-02
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@12428 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-12-02
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@12427 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-11-28
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@12425 2bbb7eff-a529-9590-31e7-b0007b416f81
* Don't check the framebuffer status every time we flush when we're on Chromium;Gravatar commit-bot@chromium.org2013-11-27
| | | | | | | | | | | | | | this reduces the number of unnecessary command buffer flushes by about 50% for page loads when doing Ganesh rendering, since we do a flush on clear. BUG= R=bsalomon@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/92103002 git-svn-id: http://skia.googlecode.com/svn/trunk@12421 2bbb7eff-a529-9590-31e7-b0007b416f81
* Avoid printing draw target info to stderr while running unit testsGravatar commit-bot@chromium.org2013-11-21
| | | | | | | | | | | | | | Change draw target dump function to return a SkString. Clients can do whatever they want with the string. BUG=skia:1837 R=caryclark@google.com, bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/72353003 git-svn-id: http://skia.googlecode.com/svn/trunk@12340 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove the SKIA_IGNORE_GPU_MIPMAPS now that Chrome sets glGenMipmap forGravatar commit-bot@chromium.org2013-11-20
| | | | | | | | | | | | the skia GL interface. R=bsalomon@google.com, humper@google.com Author: skaslev@chromium.org Review URL: https://codereview.chromium.org/74783011 git-svn-id: http://skia.googlecode.com/svn/trunk@12319 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix two inconsistencies in handling fixed-function texture coordinate set ↵Gravatar commit-bot@chromium.org2013-11-01
| | | | | | | | | | | | | | | | | | | generation Prevent off-by-one bug leaving the texture coordinate set 0 always enabled if it ever was used. This makes the code consistent with its apparent purpose. When enabling / disabling texture coordinate sets, call glPathTexGen only if path rendering is applicable. This makes the functions consistent with GrGpuGL::resetContext. R=cdalton@nvidia.com, bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/54403003 git-svn-id: http://skia.googlecode.com/svn/trunk@12074 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add can-ignore-rect hint to clear callGravatar robertphillips@google.com2013-10-31
| | | | | | | | https://codereview.chromium.org/53823003/ git-svn-id: http://skia.googlecode.com/svn/trunk@12064 2bbb7eff-a529-9590-31e7-b0007b416f81
* More clang warning fixes.Gravatar commit-bot@chromium.org2013-10-21
| | | | | | | | | | | | | | | | Mostly unused functions and variables removed. BUG=None TEST=ninja -C out/Debug most ninja -C out/Release most R=bsalomon@google.com, caryclark@google.com, robertphillips@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/27933002 git-svn-id: http://skia.googlecode.com/svn/trunk@11884 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix GrProgramsTest to not generate tests with too many TexCoord referencesGravatar commit-bot@chromium.org2013-10-21
| | | | | | | | | | | | | | | | | | | | | | | | | | Make GrProgramsTest check how many texture coordinate sets are available and select random effects up until the amount runs out. Otherwise, following effect sequence would fail the shader compilation when Skia is compiled with nv_path_rendering on (eg. when fixed function codepath is used): * Stage 0: TextureDomain (1 texcoord) * Stage 1: Convolution (1 texcoord) * Stage 2: Bitmap Alpha Threshold (2 texcoords) * Stage 3: DisplacementMap (2 texcoords) * Stage 4: Config Conversion (1 texcoords) * Stage 5: Two-Point Conical Gradient (2 texcoords) This would use more texture coordinate sets than 8, which is fairly common amount currently. R=bsalomon@google.com, cdalton@nvidia.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/32403002 git-svn-id: http://skia.googlecode.com/svn/trunk@11881 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-10-17
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@11834 2bbb7eff-a529-9590-31e7-b0007b416f81
* Third wave of Win64 warning cleanupGravatar robertphillips@google.com2013-10-16
| | | | | | | | https://codereview.chromium.org/27487003/ git-svn-id: http://skia.googlecode.com/svn/trunk@11817 2bbb7eff-a529-9590-31e7-b0007b416f81
* separate state for msaa renderabilityGravatar commit-bot@chromium.org2013-10-15
| | | | | | | | | | R=robertphillips@google.com, brian@thesalomons.net Author: bsalomon@google.com Review URL: https://codereview.chromium.org/26695005 git-svn-id: http://skia.googlecode.com/svn/trunk@11770 2bbb7eff-a529-9590-31e7-b0007b416f81
* Start cleaning up 64bit Win warningsGravatar robertphillips@google.com2013-10-14
| | | | | | | | https://codereview.chromium.org/27192003/ git-svn-id: http://skia.googlecode.com/svn/trunk@11764 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move renderable config list to GrDrawTargetCapsGravatar commit-bot@chromium.org2013-10-14
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/26342006 git-svn-id: http://skia.googlecode.com/svn/trunk@11756 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement stroking a path with nv_path_renderingGravatar commit-bot@chromium.org2013-10-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | Initialize the path stroke properties in the GrGLPath constructor. Use StencilStrokePath and CoverStrokePath to stroke the path. The order of the GL calls is: 1. StencilFill, if needed 2. StencilStroke, if needed 2a. CoverStroke, if stroke was applied 2b. CoverFill, if stroke was not applied The reason for not pairing StencilFill + CoverFill, StencilStroke + CoverStroke is that Skia API does not allow separate fill and stroke color within one call. Covering the stroke bounding box should also cover the fill bounding box. Causes different rendering in gm/dashcubics due to different rendering algorithm. (?) (TODO: this should be resolved somehow.) R=bsalomon@google.com, markkilgard@gmail.com, cdalton@nvidia.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/23440049 git-svn-id: http://skia.googlecode.com/svn/trunk@11672 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement filling a path with nv_path_rendering coverGravatar commit-bot@chromium.org2013-10-09
| | | | | | | | | | | | | | | | | | Implement filling a path with nv_path_rendering cover functionality. The nv_path_rendering cover can be used if the fill is non-inverted and the draw operation does not require use of vertex shaders. Moves code for the inverted fill from GrStencilAndCoverPathRenderer down to GrGpuGL. R=bsalomon@google.com, markkilgard@gmail.com, cdalton@nvidia.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/22686002 git-svn-id: http://skia.googlecode.com/svn/trunk@11667 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use vertexless shaders when NVpr is availableGravatar commit-bot@chromium.org2013-10-04
| | | | | | | | | | | | | | | | Adds support for vertexless shaders and enables them when NV_path_rendering is available. This takes a GrGLFragmentOnlyShaderBuilder class, a GrGLTexGenEffectArray class, support for setting TexGen and the projection matrix in GrGpuGL, and code for setting the GL fixed function state where necessary. R=bsalomon@google.com, kkinnunen@nvidia.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/25846002 git-svn-id: http://skia.googlecode.com/svn/trunk@11620 2bbb7eff-a529-9590-31e7-b0007b416f81
* Don't access RT when disabling scissor.Gravatar commit-bot@chromium.org2013-10-04
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/25446004 git-svn-id: http://skia.googlecode.com/svn/trunk@11608 2bbb7eff-a529-9590-31e7-b0007b416f81