summaryrefslogtreecommitdiffstats
path: root/libs/hwui/Layer.h
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2014-08-14 13:34:01 -0700
committerChris Craik <ccraik@google.com>2014-08-15 00:59:44 +0000
commit69e5adffb19135d51bde8e458f4907d7265f3e23 (patch)
tree022fc23512ae5adfbe3f86351305bc9f4538a68a /libs/hwui/Layer.h
parente222e359a0aab985488a711f6edb76820fe8c6df (diff)
downloadframeworks_base-69e5adffb19135d51bde8e458f4907d7265f3e23.zip
frameworks_base-69e5adffb19135d51bde8e458f4907d7265f3e23.tar.gz
frameworks_base-69e5adffb19135d51bde8e458f4907d7265f3e23.tar.bz2
Define shadow casting behavior within layers
bug:15860114 Savelayers and HW layers both now support shadow casting. For save layers, the light source should always be correct, for HW layers, the light source position is set when the layer is created, and updated when it is resized. Change-Id: Ie85567dd43c2bb0a0b08fd0bd4db41efa793ac2b
Diffstat (limited to 'libs/hwui/Layer.h')
-rw-r--r--libs/hwui/Layer.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/libs/hwui/Layer.h b/libs/hwui/Layer.h
index 0bf05d0..38c29c7 100644
--- a/libs/hwui/Layer.h
+++ b/libs/hwui/Layer.h
@@ -86,6 +86,11 @@ public:
regionRect.translate(layer.left, layer.top);
}
+ void setWindowTransform(Matrix4& windowTransform) {
+ cachedInvTransformInWindow.loadInverse(windowTransform);
+ rendererLightPosDirty = true;
+ }
+
void updateDeferred(RenderNode* renderNode, int left, int top, int right, int bottom);
inline uint32_t getWidth() const {
@@ -257,10 +262,10 @@ public:
return transform;
}
- void defer();
+ void defer(const OpenGLRenderer& rootRenderer);
void cancelDefer();
void flush();
- void render();
+ void render(const OpenGLRenderer& rootRenderer);
/**
* Bounds of the layer.
@@ -304,6 +309,7 @@ public:
private:
void requireRenderer();
+ void updateLightPosFromRenderer(const OpenGLRenderer& rootRenderer);
Caches& caches;
@@ -383,6 +389,12 @@ private:
mat4 transform;
/**
+ * Cached transform of layer in window, updated only on creation / resize
+ */
+ mat4 cachedInvTransformInWindow;
+ bool rendererLightPosDirty;
+
+ /**
* Used to defer display lists when the layer is updated with a
* display list.
*/