aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-08-03 15:05:55 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-08-03 15:05:55 +0000
commitc9a1d4b519c2db8e43e54fef068c46462d2f8a4b (patch)
tree18699b3295c309843d06b0c4e0fbcee72f39a108 /src
parenteef375bcd602adb065c4eccc07bd811b83a71de8 (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.cpp3
-rw-r--r--src/core/SkBitmapProcState.h15
-rw-r--r--src/opts/SkBitmapProcState_opts_none.cpp18
-rw-r--r--src/opts/opts_files.mk3
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