summaryrefslogtreecommitdiff
path: root/libs/hwui/ProgramCache.h
diff options
context:
space:
mode:
author Romain Guy <romainguy@google.com> 2010-09-10 19:20:06 -0700
committer Romain Guy <romainguy@google.com> 2010-09-12 12:24:12 -0700
commitf607bdc167f66b3e7003acaa4736ae46d78c1492 (patch)
treeb3b4fb761b25d08ba836ff822f6e72d85b5be695 /libs/hwui/ProgramCache.h
parentd14f0dfd58af653a2d41424d472fe97de6af0a78 (diff)
Correct implementation of saveLayer().
Change-Id: I5375126636913e0a84f2d6bbd0ebe40d2e4f2763
Diffstat (limited to 'libs/hwui/ProgramCache.h')
-rw-r--r--libs/hwui/ProgramCache.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/libs/hwui/ProgramCache.h b/libs/hwui/ProgramCache.h
index 8f5304d7ce61..0a1705279e7f 100644
--- a/libs/hwui/ProgramCache.h
+++ b/libs/hwui/ProgramCache.h
@@ -35,7 +35,7 @@ namespace uirenderer {
///////////////////////////////////////////////////////////////////////////////
// Debug
-#define DEBUG_PROGRAM_CACHE 1
+#define DEBUG_PROGRAM_CACHE 0
// Debug
#if DEBUG_PROGRAM_CACHE
@@ -44,6 +44,9 @@ namespace uirenderer {
#define PROGRAM_LOGD(...)
#endif
+/*
+ * IMPORTANT: All 32 bits are used, switch to a long.
+ */
#define PROGRAM_KEY_TEXTURE 0x1
#define PROGRAM_KEY_A8_TEXTURE 0x2
#define PROGRAM_KEY_BITMAP 0x4
@@ -53,6 +56,7 @@ namespace uirenderer {
#define PROGRAM_KEY_COLOR_LIGHTING 0x40
#define PROGRAM_KEY_COLOR_BLEND 0x80
#define PROGRAM_KEY_BITMAP_NPOT 0x100
+#define PROGRAM_KEY_SWAP_SRC_DST 0x2000
#define PROGRAM_KEY_BITMAP_WRAPS_MASK 0x600
#define PROGRAM_KEY_BITMAP_WRAPT_MASK 0x1800
@@ -70,6 +74,9 @@ namespace uirenderer {
// Types
///////////////////////////////////////////////////////////////////////////////
+/*
+ * IMPORTANT: All 32 bits are used, switch to a long.
+ */
typedef uint32_t programid;
///////////////////////////////////////////////////////////////////////////////
@@ -95,7 +102,7 @@ struct ProgramDescription {
shadersMode(SkXfermode::kClear_Mode), isBitmapFirst(false),
bitmapWrapS(GL_CLAMP_TO_EDGE), bitmapWrapT(GL_CLAMP_TO_EDGE),
colorOp(kColorNone), colorMode(SkXfermode::kClear_Mode),
- framebufferMode(SkXfermode::kClear_Mode) {
+ framebufferMode(SkXfermode::kClear_Mode), swapSrcDst(false) {
}
// Texturing
@@ -118,6 +125,7 @@ struct ProgramDescription {
// Framebuffer blending (requires Extensions.hasFramebufferFetch())
// Ignored for all values < SkXfermode::kPlus_Mode
SkXfermode::Mode framebufferMode;
+ bool swapSrcDst;
inline uint32_t getEnumForWrap(GLenum wrap) const {
switch (wrap) {
@@ -163,6 +171,7 @@ struct ProgramDescription {
break;
}
key |= (framebufferMode & PROGRAM_MAX_XFERMODE) << PROGRAM_XFERMODE_FRAMEBUFFER_SHIFT;
+ if (swapSrcDst) key |= PROGRAM_KEY_SWAP_SRC_DST;
return key;
}
}; // struct ProgramDescription