Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Apr 2, 2015
  1. @fmalita

    [SkDebugger] Flatten drawPicture ops

    fmalita authored Commit bot committed
    Add two drawPicture bracketing ops (BeginDrawPicture, EndDrawPicture) to
    replace the current DrawPicture op, and flatten picture contents.
    
    Review URL: https://codereview.chromium.org/1048383002
Commits on Apr 1, 2015
  1. @rmistry

    Revert of Implement approx-match support in image filter saveLayer() …

    rmistry authored Commit bot committed
    …offscreen. (patchset #31 id:590001 of https://codereview.chromium.org/1034733002/)
    
    Reason for revert:
    Spoke to Stephen about this. Reverting because failing debug builds:
    
    https://uberchromegw.corp.google.com/i/client.skia/builders/Test-Mac10.9-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug/builds/51
    https://uberchromegw.corp.google.com/i/client.skia/builders/Test-Ubuntu-GCC-ShuttleA-GPU-GTX660-x86_64-Debug/builds/54
    
    Original issue's description:
    > Implement approx-match support in image filter saveLayer() offscreen.
    >
    > Currently, the GPU-side image filter implementation creates
    > exact-match textures for the offscreen backing stores for
    > saveLayer().  This is because several filters have GPU
    > implementations which depend on the texture coordinates
    > being 0..1.
    >
    > The fix is three-fold:
    >
    > 1) Store the actual requested size in the SkGpuDevice, so
    > that when wrapping it in an SkBitmap for passing to
    > filterImage(), we can give it the original size.
    > 2) Fix the filters (SkMagnifierImageFilter,
    > SkLightingImageFilter, SkMatrixConvolutionImageFilter,
    > SkMatrixImageFilter) whose GPU implementation depends on
    > 0..1 texture coordinates.
    > 3) Remove the exception for GPU-side image filters in
    > SkCanvas::internalSaveLayer().
    >
    > For the lighting filters, there were two bugs which were
    > cancelling each other out: the sobel filter matrix was
    > being computed upside down, but then we'd negate the
    > resulting normal. This worked fine in the exact-match case,
    > but in the approx-match case we'd sample garbage along
    > the edge pixels. Also, we never implemented the edge pixels
    > according to spec in the GPU case. It requires a
    > different fragment shader for each edge of the nine-patch,
    > which meant we couldn't use asFragmentProcessor(), and had
    > to implement the drawing via a filterImageGPU() override.
    > In order to avoid polluting the public API, I inserted a
    > new base class, SkLightingImageFilterInternal above
    > Sk[Diffuse|Specular]LightingImageFilter to handle the
    > implementation.
    >
    > For the SkMatrixConvolutionImageFilter, it seems the
    > GLSL clamp() function occasionally returns values outside
    > the clamped range, resulting in access of garbage
    > texels even in GL_NEAREST. The fix here is to clamp to a
    > rect inset by half a texel. There was also a bug in
    > the unpremultiply step when fConvolveAlpha is false.
    >
    > For SkMatrixImageFilter, the fix was to make the generic
    > draw path be more careful about when to use texture domain.
    > If the bitmap already has a texture, use texture domain
    > if the srcRect is smaller than the entire texture (not
    > the entire bitmap).
    >
    > N.B.: this change will cause some minor pixel diffs in the
    > GPU results of the following GMs (and possibly more):
    > matriximagefilter, matrixconvolution, imagefiltersscaled,
    > lighting, imagemagnifier, filterfastbounds,
    > complexclip_aa_Layer_invert, complexclip_aa_layer,
    > complexclip_bw_layer_invert, complexclip_bw_layer.
    >
    > BUG=skia:3532
    >
    > Committed: https://skia.googlesource.com/skia/+/b97dafefe63ea0a1bbce8e8b209f4920983fb8b9
    >
    > Committed: https://skia.googlesource.com/skia/+/f5f8518fe0bbd2703e4ffc1b11ad7b4312ff7641
    >
    > Committed: https://skia.googlesource.com/skia/+/46112cf2a7c7307f1c9eebb5f881cbda15aa460c
    
    TBR=bsalomon@google.com,reed@chromium.org,senorblanco@chromium.org
    NOPRESUBMIT=true
    NOTREECHECKS=true
    NOTRY=true
    BUG=skia:3532
    
    Review URL: https://codereview.chromium.org/1057693002
  2. @rmistry

    Revert of Fix GLSL error on Android. (patchset #2 id:20001 of https:/…

    rmistry authored Commit bot committed
    …/codereview.chromium.org/1053873002/)
    
    Reason for revert:
    Spoke to Stephan about this. Reverting because failing debug builds:
    
    https://uberchromegw.corp.google.com/i/client.skia/builders/Test-Mac10.9-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug/builds/51
    https://uberchromegw.corp.google.com/i/client.skia/builders/Test-Ubuntu-GCC-ShuttleA-GPU-GTX660-x86_64-Debug/builds/54
    
    Original issue's description:
    > Fix GLSL error on Android.
    >
    > BUG=skia:
    > TBR=bsalomon
    > NOTREECHECKS=true
    > NOTRY=true
    >
    > Committed: https://skia.googlesource.com/skia/+/f90cd8e0e39af02c3826c80366efa3c06e88f642
    
    TBR=bsalomon@google.com,senorblanco@chromium.org
    NOPRESUBMIT=true
    NOTREECHECKS=true
    NOTRY=true
    BUG=skia:
    
    Review URL: https://codereview.chromium.org/1056713002
  3. Fix GLSL error on Android.

    senorblanco authored Commit bot committed
    BUG=skia:
    TBR=bsalomon
    NOTREECHECKS=true
    NOTRY=true
    
    Review URL: https://codereview.chromium.org/1053873002
  4. Add constant color GrFP.

    bsalomon authored Commit bot committed
  5. nanobench does not need to handle failed rewind.

    scroggo authored Commit bot committed
    Now that all SkCodecs can rewind (assuming the stream is rewindable),
    we do not need to special case it.
    
    Pointed out by Derek in the code review that added this.
    
    TBR=djsollen
    
    Review URL: https://codereview.chromium.org/1058633002
  6. Implement approx-match support in image filter saveLayer() offscreen.

    senorblanco authored Commit bot committed
    Currently, the GPU-side image filter implementation creates
    exact-match textures for the offscreen backing stores for
    saveLayer().  This is because several filters have GPU
    implementations which depend on the texture coordinates
    being 0..1.
    
    The fix is three-fold:
    
    1) Store the actual requested size in the SkGpuDevice, so
    that when wrapping it in an SkBitmap for passing to
    filterImage(), we can give it the original size.
    2) Fix the filters (SkMagnifierImageFilter,
    SkLightingImageFilter, SkMatrixConvolutionImageFilter,
    SkMatrixImageFilter) whose GPU implementation depends on
    0..1 texture coordinates.
    3) Remove the exception for GPU-side image filters in
    SkCanvas::internalSaveLayer().
    
    For the lighting filters, there were two bugs which were
    cancelling each other out: the sobel filter matrix was
    being computed upside down, but then we'd negate the
    resulting normal. This worked fine in the exact-match case,
    but in the approx-match case we'd sample garbage along
    the edge pixels. Also, we never implemented the edge pixels
    according to spec in the GPU case. It requires a
    different fragment shader for each edge of the nine-patch,
    which meant we couldn't use asFragmentProcessor(), and had
    to implement the drawing via a filterImageGPU() override.
    In order to avoid polluting the public API, I inserted a
    new base class, SkLightingImageFilterInternal above
    Sk[Diffuse|Specular]LightingImageFilter to handle the
    implementation.
    
    For the SkMatrixConvolutionImageFilter, it seems the
    GLSL clamp() function occasionally returns values outside
    the clamped range, resulting in access of garbage
    texels even in GL_NEAREST. The fix here is to clamp to a
    rect inset by half a texel. There was also a bug in
    the unpremultiply step when fConvolveAlpha is false.
    
    For SkMatrixImageFilter, the fix was to make the generic
    draw path be more careful about when to use texture domain.
    If the bitmap already has a texture, use texture domain
    if the srcRect is smaller than the entire texture (not
    the entire bitmap).
    
    N.B.: this change will cause some minor pixel diffs in the
    GPU results of the following GMs (and possibly more):
    matriximagefilter, matrixconvolution, imagefiltersscaled,
    lighting, imagemagnifier, filterfastbounds,
    complexclip_aa_Layer_invert, complexclip_aa_layer,
    complexclip_bw_layer_invert, complexclip_bw_layer.
    
    BUG=skia:3532
    
    Committed: https://skia.googlesource.com/skia/+/b97dafefe63ea0a1bbce8e8b209f4920983fb8b9
    
    Committed: https://skia.googlesource.com/skia/+/f5f8518fe0bbd2703e4ffc1b11ad7b4312ff7641
    
    Review URL: https://codereview.chromium.org/1034733002
  7. That last CL subverted the purpose of the test. Put it back how it was.

    mtklein authored Commit bot committed
  8. @HalCanary

    DM: JSON output adds process_max_resident_set_size_MB

    HalCanary authored Commit bot committed
  9. @HalCanary

    SkPDF: SkPDFGraphicState Lookup hashtabled

    HalCanary authored Commit bot committed
    In Release, running `dm --src skp --config pdf`, I get a
    speedup of about 1.2%.
    
    SkPDFGraphicState class:
    -   Holds the subset of SkPaint that maps to a PDF Graphics
        State
    -   These fields are easily comparable, making hashtable
        comparisons easy.
    
    SkPDFCanon:
    -   findGraphicState() takes a SkPDFGraphicState, not a SkPaint
    -   fGraphicStateRecords is a SkHashSet, not a SkTDArray
    
    SkPDFGraphicState:
    -   mode_for_pdf() replaces logic inside equivalent(), but is
        only called once per lookup.
    -   emitObject() no longer modifies the SkPDFGraphicState to
        cache the SkPDFDict stucture.  (Since it is de-duped,
        this get no speedup).
    -   Static Functions that don't use the canon return a plain
        SkPDFDict now.  No need for fPopulated.
    
    SkTHash.h
    -   SkHashSet::forall added
    
    SkPDFDevice; SkPDFShader
    -   Updated for new SkPDFGraphicState interface.
    
    BUG=skia:3585
    
    Review URL: https://codereview.chromium.org/1046293002
  10. Implicit constructors for SkFunction are much more readable.

    mtklein authored Commit bot committed
  11. Emulate distance field gamma fix by making glyphs thicker or thinner

    jvanverth authored Commit bot committed
    The idea here is that we determine the 0.5 crossover for each
    row in the gamma table, then invert the mapping to determine
    which point that maps to in the original range [-.65,
    .65]. That gives us a change in the apparent width of the
    glyph that closely corresponds to the change produced by the gamma fix.
    
    BUG=skia:2933
    
    Review URL: https://codereview.chromium.org/1042373002
  12. move Atlas Text Context to its own file

    joshualitt authored Commit bot committed
  13. Update the Android scripts to refresh device names and capabilities.

    djsollen authored Commit bot committed
  14. Ico test with embedded png

    msarett authored Commit bot committed
  15. Add timing SkCodec to nanobench.

    scroggo authored Commit bot committed
    CodecBench:
    Add new class for timing using SkCodec.
    
    DecodingBench:
    Include creating a decoder inside the loop. This is to have a better
    comparison against SkCodec. SkCodec's factory function does not
    necessarily read the same amount as SkImageDecoder's, so in order to
    have a meaningful comparison, read the entire stream from the
    beginning. Also for comparison, create a new SkStream from the
    SkData each time.
    Add a debugging check to make sure we have an SkImageDecoder.
    Add include guards.
    
    nanobench.cpp:
    Decode using SkCodec.
    When decoding using SkImageDecoder, exclude benches where we decoded
    to a different color type than requested. SkImageDecoder may decide to
    decode to a different type, in which case the name is misleading.
    
    TODOs:
    Now that we ignore color types that do not match the desired
    color type, we should add Index8. This also means calling the more
    complex version of getPixels so CodecBench can support kIndex8.
    
    BUG=skia:3257
    
    Review URL: https://codereview.chromium.org/1044363002
  16. Switch to one single bitmap text blob cache allocation

    joshualitt authored Commit bot committed
  17. Constructor and call argument forwarding for SkFunction.

    mtklein authored Commit bot committed
  18. SkCodec::onGetScanlineDecoder must call rewind.

    scroggo authored Commit bot committed
    This mirrors the behavior in onGetPixels, and allows the implementation
    to share code for handling calls to rewindIfNeeded.
    
    This also fixes a bug where getScanlineDecoder was calling
    rewindIfNeeded and treating the result as a bool.
    
    In SkPngCodec, factor out the code to call rewindIfNeeded, and call it
    in both onGetPixels and onGetScanlineDecoder.
    
    Update the test to include testing the scanline decoder. Rename "gen"
    to "codec" now that it must be an SkCodec.
    
    BUG=skia:3257
    
    Depends on https://codereview.chromium.org/1048423003/ (DIFFERENT ISSUE).
    
    Review URL: https://codereview.chromium.org/1050893002
  19. Add SkTHashSet::find()

    mtklein authored Commit bot committed
  20. Revert of Enable both static and dynamically linked libpng (patchset …

    djsollen authored Commit bot committed
    …#4 id:60001 of https://codereview.chromium.org/1032253003/)
    
    Reason for revert:
    breaking the nexus_9 and ios builds.
    
    Original issue's description:
    > Enable both static and dynamically linked libpng
    >
    > All platforms except android are configured to use the statically linked copy of libpng.  Android uses the system provided dynamic copy for SkImageDecoder and the static copy for SkCodec. The exception being android framework builds that currently use the dynamic copy everywhere.
    >
    > This CL also enables NEON optimizations for libpng.
    >
    > Committed: https://skia.googlesource.com/skia/+/2469c999518e7b0063d35e9e2eb074a0477c21ac
    
    TBR=scroggo@google.com,msarett@google.com
    NOPRESUBMIT=true
    NOTREECHECKS=true
    NOTRY=true
    
    Review URL: https://codereview.chromium.org/1050183002
  21. Enable both static and dynamically linked libpng

    djsollen authored Commit bot committed
    All platforms except android are configured to use the statically linked copy of libpng.  Android uses the system provided dynamic copy for SkImageDecoder and the static copy for SkCodec. The exception being android framework builds that currently use the dynamic copy everywhere.
    
    This CL also enables NEON optimizations for libpng.
    
    Review URL: https://codereview.chromium.org/1032253003
  22. Acknowledge that SkIcoCodec can rewind and test it.

    scroggo authored Commit bot committed
    Since SkIcoCodec has an SkCodec for its encoded images, backed by
    SkMemoryStreams, the SkMemoryStream can always rewind, and will be
    rewound by the sub-codec if necessary (now that SkBmpCodec and
    SkPngCodec support rewinding).
    
    Depends on https://codereview.chromium.org/1057483003/ and
    https://codereview.chromium.org/1048423003/ (DIFFERENT ISSUES).
    
    BUG=skia:3257
    
    Review URL: https://codereview.chromium.org/1054603002
  23. Make SkPngCodec support rewinding properly.

    scroggo authored Commit bot committed
    Separate out the code for reading the header, and use it to reinitialize
    fPng_ptr and fInfo_ptr after a rewind.
    
    Use common code to clean up fPng_ptr and fInfo_ptr, and set them to
    NULL and treat them as NULL as appropriate.
    
    Update the test to expect SkPngCodec to succeed.
    
    BUG=skia:3257
    
    Review URL: https://codereview.chromium.org/1048423003
  24. @rmistry

    Find the HASHTAGS file even if you are not at the checkout root.

    rmistry authored Commit bot committed
    The post upload hook was failing if you were not at the root, this fixes it.
    
    NOTRY=true
    
    Review URL: https://codereview.chromium.org/1058483002
  25. small-object optimization for SkFunction

    mtklein authored Commit bot committed
    Anything <= sizeof(void*) will be inlined, avoiding heap allocation.
    
    BUG=skia:
    
    Review URL: https://codereview.chromium.org/1048243002
  26. Handle rewinds in SkBmpCodec.

    scroggo authored Commit bot committed
    Factor our BMP code for reading the header, and call it after a rewind.
    
    BUG=skia:3257
    
    Review URL: https://codereview.chromium.org/1057483003
  27. Creating a new wrapper for gif decoder

    msarett authored Commit bot committed
    BUG=skia:3257
    BUG=skia:3534
    
    Review URL: https://codereview.chromium.org/1022673011
  28. GrGLInterface: Add support for NV_framebuffer_mixed_samples

    vbuzinov authored Commit bot committed
    Import glCoverageModulation if NV_framebuffer_mixed samples
    is available
    
    BUG=skia:3177
    
    Review URL: https://codereview.chromium.org/993363002
  29. @rmistry

    Revert of Implement approx-match support in image filter saveLayer() …

    rmistry authored Commit bot committed
    …offscreen. (patchset #27 id:510001 of https://codereview.chromium.org/1034733002/)
    
    Reason for revert:
    Looks like this change is causing layout test failures which is blocking Skia's DEPS roll into Chromium:
    https://codereview.chromium.org/1050563002/
    https://codereview.chromium.org/1043133005/
    https://codereview.chromium.org/1048273002/
    
    Reverting to see if this fixes the DEPS roll.
    
    Original issue's description:
    > Implement approx-match support in image filter saveLayer() offscreen.
    >
    > Currently, the GPU-side image filter implementation creates
    > exact-match textures for the offscreen backing stores for
    > saveLayer().  This is because several filters have GPU
    > implementations which depend on the texture coordinates
    > being 0..1.
    >
    > The fix is three-fold:
    >
    > 1) Store the actual requested size in the SkGpuDevice, so
    > that when wrapping it in an SkBitmap for passing to
    > filterImage(), we can give it the original size.
    > 2) Fix the filters (SkMagnifierImageFilter,
    > SkLightingImageFilter) whose GPU implementation depends on
    > 0..1 texture coordinates.
    > 3) Remove the exception for GPU-side image filters in
    > SkCanvas::internalSaveLayer().
    >
    > For the lighting filters, there were two bugs which were
    > cancelling each other out: the sobel filter matrix was
    > being computed upside down, but then we'd negate the
    > resulting normal. This worked fine in the exact-match case,
    > but in the approx-match case we'd sample garbage along
    > the edge pixels. Also, we never implemented the edge pixels
    > according to spec in the GPU case. It requires a
    > different fragment shader for each edge of the nine-patch,
    > which meant we couldn't use asFragmentProcessor(), and had
    > to implement the drawing via a filterImageGPU() override.
    > In order to avoid polluting the public API, I inserted a
    > new base class, SkLightingImageFilterInternal above
    > Sk[Diffuse|Specular]LightingImageFilter to handle the
    > implementation.
    >
    > N.B.: this change will cause some minor pixel diffs in the
    > GPU results of the following GMs (and possibly more):
    > matriximagefilter, matrixconvolution, imagefiltersscaled,
    > lighting, imagemagnifier, filterfastbounds,
    > complexclip_aa_Layer_invert, complexclip_aa_layer,
    > complexclip_bw_layer_invert, complexclip_bw_layer.
    >
    > BUG=skia:3532
    >
    > Committed: https://skia.googlesource.com/skia/+/b97dafefe63ea0a1bbce8e8b209f4920983fb8b9
    >
    > Committed: https://skia.googlesource.com/skia/+/f5f8518fe0bbd2703e4ffc1b11ad7b4312ff7641
    
    TBR=bsalomon@google.com,reed@chromium.org,senorblanco@chromium.org
    NOPRESUBMIT=true
    NOTREECHECKS=true
    NOTRY=true
    BUG=skia:3532
    
    Review URL: https://codereview.chromium.org/1057443003
Commits on Mar 31, 2015
  1. Sketch SkFunction

    mtklein authored Commit bot committed
    Let's start with baby steps in case some bot can't handle this.
    I have left many TODOs, most of which I know how to do if this
    looks feasible and useful.
    
    BUG=skia:
    
    Review URL: https://codereview.chromium.org/1049223003
  2. BitmapTextBatch and BitmapTextBlob

    joshualitt authored Commit bot committed
  3. @HalCanary

    SkPDF: style nit

    HalCanary authored Commit bot committed
    TBR=mtklein@google.com
    
    Review URL: https://codereview.chromium.org/1039313004
  4. @HalCanary

    SkPDF: Factor SkPDFCatalog into SkPDFObjNumMap and SkPDFSubstituteMap

    HalCanary authored Commit bot committed
    Motivation: Keep separate features separate.  Also, future
    linearization work will need to have several objNumMap
    objects share a substituteMap.  Also "catalog" has a
    specific meaning in PDF.  This catalog did not map to that
    catalog.
    
    -   Modify SkPDFObject::emitObject and SkPDFObject::addResources
        interface to requiore SkPDFObjNumMap and SkPDFSubstituteMap.
    -   SkPDFObjNumMap const in SkPDFObject::emitObject.
    -   Remove SkPDFCatalog.cpp/.h
    -   Modify SkDocument_PDF.cpp to use new functions
    -   Fold in SkPDFStream::populate
    -   Fold in SkPDFBitmap::emitDict
    -   Move SkPDFObjNumMap and SkPDFSubstituteMap to SkPDFTypes.h
    -   Note (via assert) that SkPDFArray & SkPDFDict don't need to
        check substitutes.
    -   Remove extra space from SkPDFDict serialization.
    -   SkPDFBitmap SkPDFType0Font SkPDFGraphicState SkPDFStream
        updated to new interface.
    -   PDFPrimitivesTest updated for new interface.
    
    BUG=skia:3585
    
    Review URL: https://codereview.chromium.org/1049753002
  5. skia: Fix text subpixel half sample default for GPU rasterization

    hendrikw authored Commit bot committed
    In software, SkDraw1Glyph::Proc SkDraw1Glyph::init initializes
    fHalfSampleX, fHalfSampleY to SkGlyph::kSubpixelRound.  In hardware,
    however, these values were initialized to zero.
    
    Fix, match software's implementation
    
    BUG=471919
    
    Review URL: https://codereview.chromium.org/1047803004
Something went wrong with that request. Please try again.