diff options
author | 2009-08-03 15:05:55 +0000 | |
---|---|---|
committer | 2009-08-03 15:05:55 +0000 | |
commit | c9a1d4b519c2db8e43e54fef068c46462d2f8a4b (patch) | |
tree | 18699b3295c309843d06b0c4e0fbcee72f39a108 /src | |
parent | eef375bcd602adb065c4eccc07bd811b83a71de8 (diff) |
add platformProcs() porting function
git-svn-id: http://skia.googlecode.com/svn/trunk@301 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkBitmapProcState.cpp | 3 | ||||
-rw-r--r-- | src/core/SkBitmapProcState.h | 15 | ||||
-rw-r--r-- | src/opts/SkBitmapProcState_opts_none.cpp | 18 | ||||
-rw-r--r-- | src/opts/opts_files.mk | 3 |
4 files changed, 38 insertions, 1 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp index e326165cfb..3e5b927684 100644 --- a/src/core/SkBitmapProcState.cpp +++ b/src/core/SkBitmapProcState.cpp @@ -506,6 +506,9 @@ bool SkBitmapProcState::chooseProcs(const SkMatrix& inv, const SkPaint& paint) { fShaderProc16 = Repeat_S16_D16_filter_DX_shaderproc; } } + + // see if our platform has any accelerated overrides + this->platformProcs(); return true; } diff --git a/src/core/SkBitmapProcState.h b/src/core/SkBitmapProcState.h index 00772015f8..796257995c 100644 --- a/src/core/SkBitmapProcState.h +++ b/src/core/SkBitmapProcState.h @@ -74,6 +74,21 @@ struct SkBitmapProcState { uint8_t fTileModeY; // CONSTRUCTOR SkBool8 fDoFilter; // chooseProcs + /** Platforms implement this, and can optionally overwrite only the + following fields: + + fShaderProc32 + fShaderProc16 + fMatrixProc + fSampleProc32 + fSampleProc32 + + They will already have valid function pointers, so a platform that does + not have an accelerated version can just leave that field as is. A valid + implementation can do nothing (see SkBitmapProcState_opts_none.cpp) + */ + void platformProcs(); + private: friend class SkBitmapProcShader; diff --git a/src/opts/SkBitmapProcState_opts_none.cpp b/src/opts/SkBitmapProcState_opts_none.cpp new file mode 100644 index 0000000000..868f808e2d --- /dev/null +++ b/src/opts/SkBitmapProcState_opts_none.cpp @@ -0,0 +1,18 @@ +#include "SkBitmapProcState.h" + +/* A platform may optionally overwrite any of these with accelerated + versions. On input, these will already have valid function pointers, + so a platform need only overwrite the ones it chooses, based on the + current state (e.g. fBitmap, fInvMatrix, etc.) + + fShaderProc32 + fShaderProc16 + fMatrixProc + fSampleProc32 + fSampleProc32 + */ + +// empty implementation just uses default supplied function pointers +void SkBitmapProcState::platformProcs() {} + + diff --git a/src/opts/opts_files.mk b/src/opts/opts_files.mk index d751e56447..d756f68a68 100644 --- a/src/opts/opts_files.mk +++ b/src/opts/opts_files.mk @@ -1,3 +1,4 @@ SOURCE := \ - SkBlitRow_opts_none.cpp + SkBlitRow_opts_none.cpp \ + SkBitmapProcState_opts_none.cpp |