aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
Commit message (Collapse)AuthorAge
* Always store pixels of mutable bitmaps when recording a SkPicture.Gravatar djsollen@google.com2012-07-27
| | | | | | | | | | | | | | | | | | | | | | | Prior to this CL mutable bitmaps only saved a copy of their pixels if a flag was set at recording time. That flag has been removed and the default behavior when recording a mutable bitmap is to make a copy of it's pixels. This is the only way to ensure that the pixels are not manipulated before we playback their contents. However, enabling this behavior breaks the recording of extracted bitmaps in SkPicture. This is because we currently cache bitmaps within a picture based only on their pixelRef. This results in false positive cache hit when drawing an extracted bitmap as it shares a pixelRef with its orginating bitmap. Therefore we must update the index of the bitmap cache to be both the pixelRef AND the size and offset of the bitmap using those pixels. BUG= TEST=extractbitmap.cpp Review URL: https://codereview.appspot.com/6439043 git-svn-id: http://skia.googlecode.com/svn/trunk@4809 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reapply "Remove Bitmaps Raw Pixel Support."Gravatar djsollen@google.com2012-07-27
| | | | | | | | | This CL reapplies r4722. Now that we have addressed the issues in Chrome tests that were causing asserts to be fired. Review URL: https://codereview.appspot.com/6452050 git-svn-id: http://skia.googlecode.com/svn/trunk@4804 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added ctor to SkClipStack and isEmpty methodGravatar robertphillips@google.com2012-07-26
| | | | | | | | http://codereview.appspot.com/6444048/ git-svn-id: http://skia.googlecode.com/svn/trunk@4787 2bbb7eff-a529-9590-31e7-b0007b416f81
* reject any paths that are not finite.Gravatar reed@google.com2012-07-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4785 2bbb7eff-a529-9590-31e7-b0007b416f81
* explicitly track if a path is finite or notGravatar reed@google.com2012-07-26
| | | | | | | | we need this (it appears) so we can definitively reject non-finite paths in canvas, before passing them down into the guts. Review URL: https://codereview.appspot.com/6453047 git-svn-id: http://skia.googlecode.com/svn/trunk@4784 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Remove Bitmaps Raw Pixel Support."Gravatar djsollen@google.com2012-07-26
| | | | | | | | | BUG= TEST= Review URL: https://codereview.appspot.com/6449049 git-svn-id: http://skia.googlecode.com/svn/trunk@4780 2bbb7eff-a529-9590-31e7-b0007b416f81
* Correctly calculate remaining span length in Neon fallback blitterGravatar skyostil@google.com2012-07-26
| | | | | | | | | | | | | | | | | | | | | | In the non-Neon optimized fallback in SCALE_NOFILTER_NAME() the pixels are first processed in groups of 4, followed by the final remaining 0-3 pixels depending on the span length. Currently the remaining span length (0-3) pixels is incorrectly calculated as count - count / 4. This generally causes the function to access outside the bounds of the input and/or output bitmaps. The correct formula is count % 4, because all the full multiples of 4 pixels have been processed and only the remainder remains. Bug spotted by Xianzhu Wang. TEST=None, because this part of the code isn't actually even being compiled due to the !defined(__ARM_HAVE_NEON) guard at the top of the file. It was compiled in by mistake in Chrome for Android, which is how this bug was spotted. Review URL: https://codereview.appspot.com/6441050 git-svn-id: http://skia.googlecode.com/svn/trunk@4777 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use asNewCustomStage instead of asABitmap in SkGpuDevice, also removed ↵Gravatar rileya@google.com2012-07-25
| | | | | | | | | now-unecessary twoPointRadialParams parameter from asABitmap. In SkGpuDevice we still fall back on using asABitmap for effects that don't have asNewCustomStage implemented, but it still simplifies things a fair amount. Review URL: https://codereview.appspot.com/6430060 git-svn-id: http://skia.googlecode.com/svn/trunk@4755 2bbb7eff-a529-9590-31e7-b0007b416f81
* Prevent MipMaps from crashing.Gravatar bungeman@google.com2012-07-25
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4753 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added isIntersectionOfRects to SkClipStackGravatar robertphillips@google.com2012-07-24
| | | | | | | | http://codereview.appspot.com/6434050/ git-svn-id: http://skia.googlecode.com/svn/trunk@4745 2bbb7eff-a529-9590-31e7-b0007b416f81
* Avoid a loop in writeString and writePad by zeroing padding first.Gravatar scroggo@google.com2012-07-24
| | | | | | | | | | | | | Also add a benchmark to time the new improved writeString. Before my change the bench took ~1.23ms and afterwards it takes ~.95ms. Add some testing to ensure that writePad works properly. TEST=Writer32Test, WriterBench Review URL: https://codereview.appspot.com/6438045 git-svn-id: http://skia.googlecode.com/svn/trunk@4742 2bbb7eff-a529-9590-31e7-b0007b416f81
* Split SkGlyph into its own header.Gravatar bungeman@google.com2012-07-24
| | | | | | | https://codereview.appspot.com/6434049/ git-svn-id: http://skia.googlecode.com/svn/trunk@4741 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added bound computation to SkClipStackGravatar robertphillips@google.com2012-07-24
| | | | | | | | | | http://codereview.appspot.com/6419048/ This will require re-baselining of complexclip* and filltypespersp git-svn-id: http://skia.googlecode.com/svn/trunk@4730 2bbb7eff-a529-9590-31e7-b0007b416f81
* land http://codereview.appspot.com/6353063/ by LeiGravatar reed@google.com2012-07-24
| | | | | | | | | | | | | | | | | | | | | | | optimizations for D16 using SSE2 skia_bench -config 565 -match bitmap_8888_scale_filter -forceFilter 1 -repeat 30 The result I got on Android platform was below: w/o this optimization routine: D/skia ( 1868): running bench [640 480] bitmap_8888_scale_filter D/skia ( 1868): 565: cmsecs = 286.50 w/ with optimization: D/skia ( 1463): running bench [640 480] bitmap_8888_scale_filter D/skia ( 1463): 565: cmsecs = 186.80 The net gain is 34.80%. git-svn-id: http://skia.googlecode.com/svn/trunk@4729 2bbb7eff-a529-9590-31e7-b0007b416f81
* Gave GrClip an SkClipStack-style iteratorGravatar robertphillips@google.com2012-07-23
| | | | | | | | http://codereview.appspot.com/6434046/ git-svn-id: http://skia.googlecode.com/svn/trunk@4723 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove Bitmaps Raw Pixel Support.Gravatar djsollen@google.com2012-07-23
| | | | | | | | bitmap.setPixels(...) now creates a mutable pixelRef instead of just setting fPixels. Review URL: https://codereview.appspot.com/6419044 git-svn-id: http://skia.googlecode.com/svn/trunk@4722 2bbb7eff-a529-9590-31e7-b0007b416f81
* use SkTRefArray to share readonly data between picturesGravatar reed@google.com2012-07-23
| | | | | | Review URL: https://codereview.appspot.com/6351121 git-svn-id: http://skia.googlecode.com/svn/trunk@4720 2bbb7eff-a529-9590-31e7-b0007b416f81
* add protected method for internal_dispose overrides to jam fRefCnt beforeGravatar reed@google.com2012-07-23
| | | | | | | | | calling destructor. move SkTRefArray to actually inherit from SkRefCnt Review URL: https://codereview.appspot.com/6422057 git-svn-id: http://skia.googlecode.com/svn/trunk@4719 2bbb7eff-a529-9590-31e7-b0007b416f81
* In SkWriter32::writeString, initialize all memory reserved.Gravatar scroggo@google.com2012-07-23
| | | | | | | | | | | | SkFlatData compares data which is sometimes created by writeString. Initialize all the memory in writeString so it does not compare uninitialized memory. See http://code.google.com/p/skia/issues/detail?id=721&thanks=721 Review URL: https://codereview.appspot.com/6428054 git-svn-id: http://skia.googlecode.com/svn/trunk@4715 2bbb7eff-a529-9590-31e7-b0007b416f81
* use SkData to share between record and playbackGravatar reed@google.com2012-07-21
| | | | | | | | use SkReader32 on the stack, as a step towards thread-reentrant playback git-svn-id: http://skia.googlecode.com/svn/trunk@4711 2bbb7eff-a529-9590-31e7-b0007b416f81
* include <new> since we use placement-newGravatar reed@google.com2012-07-21
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4710 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SkTRefArray, in hopes that it will enable more sharing between ↵Gravatar reed@google.com2012-07-21
| | | | | | | | | | pictureplaybacks in different threads. git-svn-id: http://skia.googlecode.com/svn/trunk@4709 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added asNewCustomStage to SkShader and implemented it for all the gradient ↵Gravatar rileya@google.com2012-07-20
| | | | | | | | | shaders. Not actually hooked up yet, but it should be ready to replace asABitmap for a future CL. Review URL: https://codereview.appspot.com/6351113 git-svn-id: http://skia.googlecode.com/svn/trunk@4702 2bbb7eff-a529-9590-31e7-b0007b416f81
* Made clarifying renamings to SkClipStack's iterators (and added to unit test)Gravatar robertphillips@google.com2012-07-20
| | | | | | | | http://codereview.appspot.com/6423051/ git-svn-id: http://skia.googlecode.com/svn/trunk@4692 2bbb7eff-a529-9590-31e7-b0007b416f81
* removing trailing ',' on last entry in enum, to fix warningGravatar reed@google.com2012-07-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4686 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SkPaint::getPosTextPath(), with gm to test itGravatar reed@google.com2012-07-20
| | | | | | Review URL: https://codereview.appspot.com/6427055 git-svn-id: http://skia.googlecode.com/svn/trunk@4684 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add skipToLast method to SkClipStackGravatar robertphillips@google.com2012-07-18
| | | | | | | | http://codereview.appspot.com/6411043/ git-svn-id: http://skia.googlecode.com/svn/trunk@4644 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use SkFlatDictionary in SkGPipe to take advantage of its new features.Gravatar scroggo@google.com2012-07-17
| | | | | | | | | | | | Add a controller class to perform the allocation/unallocation for the dictionary and to provide an entry to be replaced, if replacements are allowed. TODO: Use LRU caching in my custom controller so replacements will be done less often. More refactoring on SkFlatDictionary so picture recording's use of the dictionary does not require going through the path to replace. Review URL: https://codereview.appspot.com/6345102 git-svn-id: http://skia.googlecode.com/svn/trunk@4639 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixed two sub-optimal iterator usesGravatar robertphillips@google.com2012-07-16
| | | | | | | | http://codereview.appspot.com/6409048/ git-svn-id: http://skia.googlecode.com/svn/trunk@4633 2bbb7eff-a529-9590-31e7-b0007b416f81
* Extended SkDeque's reverse iteration capability to SkClipStackGravatar robertphillips@google.com2012-07-16
| | | | | | | | http://codereview.appspot.com/6409046/ git-svn-id: http://skia.googlecode.com/svn/trunk@4631 2bbb7eff-a529-9590-31e7-b0007b416f81
* Refactor SkDeque's iterator and allocation methodGravatar robertphillips@google.com2012-07-16
| | | | | | | | http://codereview.appspot.com/6353098/ git-svn-id: http://skia.googlecode.com/svn/trunk@4624 2bbb7eff-a529-9590-31e7-b0007b416f81
* Adding bracketing save/restore calls to SkPicture at record time andGravatar junov@chromium.org2012-07-16
| | | | | | | | | | preparing tests for enforcing save/restore balancing constraints on SkPicture Review URL: http://codereview.appspot.com/6354105/ git-svn-id: http://skia.googlecode.com/svn/trunk@4618 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add link annotations.Gravatar vandebo@chromium.org2012-07-13
| | | | | | Review URL: https://codereview.appspot.com/6346100 git-svn-id: http://skia.googlecode.com/svn/trunk@4609 2bbb7eff-a529-9590-31e7-b0007b416f81
* don't add circles on chopped cubicsGravatar reed@google.com2012-07-13
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4600 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added SkDevice onAttachToCanvas & onDetachFromCanvas methodsGravatar robertphillips@google.com2012-07-13
| | | | | | | | http://codereview.appspot.com/6348100/ git-svn-id: http://skia.googlecode.com/svn/trunk@4598 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix SkMatrix line endings (LF)Gravatar bsalomon@google.com2012-07-13
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4592 2bbb7eff-a529-9590-31e7-b0007b416f81
* Cleanup restore offsets at end of SkPicture recordingGravatar junov@chromium.org2012-07-12
| | | | | | | | | | Review URL: http://codereview.appspot.com/6355099/ TEST=skia unit test CanvasTest, test step TwoClipOps BUG=https://code.google.com/p/chromium/issues/detail?id=133432 git-svn-id: http://skia.googlecode.com/svn/trunk@4577 2bbb7eff-a529-9590-31e7-b0007b416f81
* Introduces new SingleTextureEffect base class for GrCustomStage objects.Gravatar tomhudson@google.com2012-07-12
| | | | | | | | | | | | | | This class tracks the texture that the object uses. A future commit will get rid of the GrTexture pointer currenty stored in the GrDrawState, allowing us to have CustomStages *without* textures. Requires gyp change on next roll. http://codereview.appspot.com/6306097/ git-svn-id: http://skia.googlecode.com/svn/trunk@4576 2bbb7eff-a529-9590-31e7-b0007b416f81
* check a hashtable before using a bsearchGravatar reed@google.com2012-07-12
| | | | | | Review URL: https://codereview.appspot.com/6345097 git-svn-id: http://skia.googlecode.com/svn/trunk@4572 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixing type mask computation in SkMatrix to make it faster and make it so ↵Gravatar junov@chromium.org2012-07-12
| | | | | | | | | | | | | that matrices have the same type masks as their inverses. This patch also add bench tests that call invert() followed by mapRect() on various types of matrices. Performance of these tests was greatly affected by typemask computation Review URL: http://codereview.appspot.com/6380043/ BUG=https://code.google.com/p/chromium/issues/detail?id=135259 git-svn-id: http://skia.googlecode.com/svn/trunk@4562 2bbb7eff-a529-9590-31e7-b0007b416f81
* idea: add annotation to SkPaintGravatar reed@google.com2012-07-11
| | | | | | Review URL: https://codereview.appspot.com/6355050 git-svn-id: http://skia.googlecode.com/svn/trunk@4555 2bbb7eff-a529-9590-31e7-b0007b416f81
* add default: to switch statement, to avoid warning/error for unhandled cases.Gravatar reed@google.com2012-07-11
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4552 2bbb7eff-a529-9590-31e7-b0007b416f81
* add flatten/unflatten to SkDataSetGravatar reed@google.com2012-07-11
| | | | | | Review URL: https://codereview.appspot.com/6374057 git-svn-id: http://skia.googlecode.com/svn/trunk@4548 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SkDataSet class, so SkAnnotation can be more immutable-likeGravatar reed@google.com2012-07-11
| | | | | | Review URL: https://codereview.appspot.com/6354091 git-svn-id: http://skia.googlecode.com/svn/trunk@4542 2bbb7eff-a529-9590-31e7-b0007b416f81
* This patch implements the diffuse and specular lighting filters in Ganesh. Gravatar senorblanco@chromium.org2012-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | There are three light types for each: distant, point and spot, whose code generation lives in a GrGLLight class hierarchy. This similar to the CPU implementation, where each light type provides a function to compute the vector from the surface plane to the light (surfaceToLight) and to compute the light colour (emitLightColour). Instead of templated member functions, as in the CPU implementation, these are virtual functions to emit the light-specific GLSL code. All of the code for the GPU path lives in the same file as that for the CPU path, SkLightingImageFilter.cpp. In order to provide Ganesh a hook to access it, SkImageFilter now has a asNewCustomStage() virtual, which allows an image filter to return a GrCustomStage representing that filter. Note that this patch does not handle the border conditions correctly (the [top|bottom][Left|Right]Normal() functions in the CPU implementation). That will come in a future patch. Review URL: http://codereview.appspot.com/6345081/ git-svn-id: http://skia.googlecode.com/svn/trunk@4535 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert SkNO_RETURN_HINT fix in favor of a simpler fixGravatar bsalomon@google.com2012-07-11
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4529 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix SkNO_RETURN_HINT warnings on mac/clangGravatar bsalomon@google.com2012-07-11
| | | | | | | | Review URL: http://codereview.appspot.com/6392048/ git-svn-id: http://skia.googlecode.com/svn/trunk@4528 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SkPath::contains(x, y)Gravatar mike@reedtribe.org2012-07-11
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@4526 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change SkFlatData to have a sentinel value, allowing the Compare function toGravatar reed@google.com2012-07-10
| | | | | | | not need a loop-end-test. Review URL: https://codereview.appspot.com/6355086 git-svn-id: http://skia.googlecode.com/svn/trunk@4517 2bbb7eff-a529-9590-31e7-b0007b416f81
* Handle convex paths with degeneracies in cheap direction computationGravatar bsalomon@google.com2012-07-10
| | | | | | | | Review URL: http://codereview.appspot.com/6349085/ git-svn-id: http://skia.googlecode.com/svn/trunk@4515 2bbb7eff-a529-9590-31e7-b0007b416f81