element. This filter has two inputs, since normal blending can't be used. The
GPU side uses two filter stages to accomplish this: one to sample the
background, and one to sample the foreground and blend it.
Review URL: https://codereview.appspot.com/6463081/
git-svn-id: http://skia.googlecode.com/svn/trunk@5231 2bbb7eff-a529-9590-31e7-b0007b416f81
Encountered compile errors passing 64-bit size_t to
SkIntToScalar and needed to make adjustments to
gm/gradients.cpp and bench/PicturePlaybackBench.cpp.
Verified on my local Linux, Mac, and Windows machines.
As of this change, the skia_arch_width gyp define
actually forces a 32/64-bit build on Linux, Mac, and
Windows.
Review URL: https://codereview.appspot.com/6460112
git-svn-id: http://skia.googlecode.com/svn/trunk@5195 2bbb7eff-a529-9590-31e7-b0007b416f81
for filters with a single image input. This provides functionality to store,
flatten and unflatten a single SkImageFilter input, as well as to recursively
evaluate it on the CPU or GPU. The following classes were re-parented to
implement DAG connectivity: SkBlurImageFilter, SkDilateImageFilter,
SkErodeImageFilter, SkColorFilterImageFilter. The constructors for each
have been appended with a new parameter, representing the input filter
(default NULL).
This change also implements an arbitrary SkBitmap input source for filtering,
SkBitmapSource.
NOTE: This CL will require gyp file changes when rolling past this revision.
Review URL: https://codereview.appspot.com/6462071/
git-svn-id: http://skia.googlecode.com/svn/trunk@5170 2bbb7eff-a529-9590-31e7-b0007b416f81
Certain compilers in an effort to optimize code chop off files that are never
used. By adding a flag to common conditions and variables we can force skia to
recompile with global static initializers off. By making a call to
SkGraphics::Init we now register all those functions that had been previously
automatically excluded by the compiler.
Review URL: https://codereview.appspot.com/6443112
git-svn-id: http://skia.googlecode.com/svn/trunk@5057 2bbb7eff-a529-9590-31e7-b0007b416f81
This patch does the following:
- Move the NEON-specific code from src/core/SkBitmapProcState_filter.h
to src/opts/SkBitmapProcState_filter_neon.h
- Implement the NEON-specific functions in the new source file
src/opts/SkBitmapProcState_opts_arm_neon.cpp, added to the "opts_neon"
static library target. All functions now use the _neon suffix, even
in full-NEON builds.
- Move most of the content of src/core/SkBitmapProcState.cpp to a
new header: src/core/SkBitmapProcState_procs.h
This header is included by two source files:
src/core/SkBitmapProcState.cpp, to define the regular functions.
src/opts/SkBitmapProcState_opts_arm_neon.cpp to define NEON ones.
This is to deal with the fact that all NEON functions now
use the _neon suffix, even in SK_ARM_NEON_IS_ALWAYS mode,
and to be able to include the same header twice in the
SK_ARM_NEON_IS_DYNAMIC case.
Review URL: https://codereview.appspot.com/6449117
git-svn-id: http://skia.googlecode.com/svn/trunk@5055 2bbb7eff-a529-9590-31e7-b0007b416f81
In the single process (or hypothetical cross process/shared address
space) mode, SkGPipe now uses SkBitmapHeap instead of SharedHeap.
Still need to use the shared heap for shaders as well as for cross
process.
TEST=PipeTest
Review URL: https://codereview.appspot.com/6461059
git-svn-id: http://skia.googlecode.com/svn/trunk@5008 2bbb7eff-a529-9590-31e7-b0007b416f81
Refactor Picture and Pipe bitmap storage into common data structure
Update SkFlattenable buffers to be more modular.
This CL is an effort to stage the conversion to named
parameters for all SkFlattenable commands. This particular
stage only does the following two things...
1. Move flattenable buffers from SkFlattenable.h into
their own header.
2. Update and Add new read write methods for better clarity
and convenience.
BUG=
Review URL: https://codereview.appspot.com/6445079
git-svn-id: http://skia.googlecode.com/svn/trunk@4994 2bbb7eff-a529-9590-31e7-b0007b416f81
This CL is an effort to stage the conversion to named
parameters for all SkFlattenable commands. This particular
stage only does the following two things...
1. Move flattenable buffers from SkFlattenable.h into
their own header.
2. Update and Add new read write methods for better clarity
and convenience.
BUG=
Review URL: https://codereview.appspot.com/6448095
git-svn-id: http://skia.googlecode.com/svn/trunk@4980 2bbb7eff-a529-9590-31e7-b0007b416f81
This patch implements dynamic ARM NEON support for the functions
implemented by src/core/SkBitmapProcState_matrixProcs.cpp.
- Because the SkBitmapProcState_matrix_{clamp,repeat}.h headers
are NEON-specific, they are renamed with a _neon.h suffix, and
moved to src/opts/ (from src/core/)
- Add a new file src/opts/SkBitmapProcState_matrixProcs_neon.cpp
which implements the NEON code paths for all builds, and add
it to the 'opts_neon' static library.
- Modify SkBitmapProcState_matrixProcs.cpp to select the right
code-path depending on our build configuration. Note that in
the case where 'arm_neon == 1', we do not embed regular ARM
code paths in the final binary. Only 'arm_neon_optional == 1'
builds will contain both regular and NEON code paths at the
same time.
Note that there doesn't seem to be a simple way to put the
NEON-specific selection from that currently is in
SkBitmapProcState_matrixProcs.cpp into src/opts/. Doing so
would require much more drastic restructuring. This is also
true of the other SkBitmapProcState source files that will
be touched in a future patch.
Review URL: https://codereview.appspot.com/6453065
git-svn-id: http://skia.googlecode.com/svn/trunk@4888 2bbb7eff-a529-9590-31e7-b0007b416f81
Also implement SkGPipeCanvas::drawBitmapMatrix, and
create a GM to make sure it works properly.
Use a flag instead of writing a bool for determining whether
drawBitmap_ has a paint and whether drawBitmapRect has a source
rectangle.
BUG=
TEST=drawbitmapmatrix GM
Review URL: https://codereview.appspot.com/6450053
git-svn-id: http://skia.googlecode.com/svn/trunk@4828 2bbb7eff-a529-9590-31e7-b0007b416f81
Also make SkGPipeController ref the recording canvas to ensure that
objects used by SkGPipeCanvas (e.g. SharedHeap and fTypefaceSet, which
hold references to objects to which pointers are written to the stream)
survive to be played back even if SkGPipeWriter.endRecording() is called.
BUG=
TEST=TypefaceGM
Review URL: https://codereview.appspot.com/6447055
git-svn-id: http://skia.googlecode.com/svn/trunk@4817 2bbb7eff-a529-9590-31e7-b0007b416f81
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
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
SkHitBox is a class that determines which draw command is associated with the pixel located at x,y. By calculating a single point instead of the entire bitmap at once there is no visible performance slowdown.
Review URL: https://codereview.appspot.com/6350098
git-svn-id: http://skia.googlecode.com/svn/trunk@4565 2bbb7eff-a529-9590-31e7-b0007b416f81
convention for all targets, not just gpu, since effects now makes GL calls too.
Build fix; unreviewed.
git-svn-id: http://skia.googlecode.com/svn/trunk@4559 2bbb7eff-a529-9590-31e7-b0007b416f81
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
Changed the render_pictures, bench_pictures and test_pictures.py so that multiple inputs can be given. Furthermore, specific files can also be specified.
Unit tests have also been added for picture_utils.cpp.
Review URL: https://codereview.appspot.com/6345054
git-svn-id: http://skia.googlecode.com/svn/trunk@4486 2bbb7eff-a529-9590-31e7-b0007b416f81