diff options
author | Chris Craik <ccraik@google.com> | 2014-07-23 18:19:28 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2014-07-24 16:41:13 +0000 |
commit | 058fc640017c90120c599d378a4cbc55668b05b7 (patch) | |
tree | 37f480e607d1f39de8cec06b205eb0e146cc9551 /libs/hwui/renderthread | |
parent | 753d849b2ad14cdacfe6b194d8aa7fc27874e385 (diff) | |
download | frameworks_base-058fc640017c90120c599d378a4cbc55668b05b7.zip frameworks_base-058fc640017c90120c599d378a4cbc55668b05b7.tar.gz frameworks_base-058fc640017c90120c599d378a4cbc55668b05b7.tar.bz2 |
Connect shadow style attributes to renderer
bug:15859361
Moves lighting info out of StatefulBaseRenderer, since it's not useful
at record time, and only used by OGLR.
Change-Id: I7ab065d02d9304afad1dc4c48597a7a621366f8e
Diffstat (limited to 'libs/hwui/renderthread')
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 5 | ||||
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.h | 3 | ||||
-rw-r--r-- | libs/hwui/renderthread/RenderProxy.cpp | 15 | ||||
-rw-r--r-- | libs/hwui/renderthread/RenderProxy.h | 3 |
4 files changed, 18 insertions, 8 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 2147810..756f660 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -110,10 +110,11 @@ void CanvasContext::pauseSurface(ANativeWindow* window) { // and such to prevent from trying to render into this surface } -void CanvasContext::setup(int width, int height, const Vector3& lightCenter, float lightRadius) { +void CanvasContext::setup(int width, int height, const Vector3& lightCenter, float lightRadius, + uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha) { if (!mCanvas) return; mCanvas->setViewport(width, height); - mCanvas->initializeLight(lightCenter, lightRadius); + mCanvas->initLight(lightCenter, lightRadius, ambientShadowAlpha, spotShadowAlpha); } void CanvasContext::setOpaque(bool opaque) { diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h index 1bab1b1..2a01027 100644 --- a/libs/hwui/renderthread/CanvasContext.h +++ b/libs/hwui/renderthread/CanvasContext.h @@ -53,7 +53,8 @@ public: bool initialize(ANativeWindow* window); void updateSurface(ANativeWindow* window); void pauseSurface(ANativeWindow* window); - void setup(int width, int height, const Vector3& lightCenter, float lightRadius); + void setup(int width, int height, const Vector3& lightCenter, float lightRadius, + uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha); void setOpaque(bool opaque); void makeCurrent(); void processLayerUpdate(DeferredLayerUpdater* layerUpdater); diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp index 91f5801..1e91eb5 100644 --- a/libs/hwui/renderthread/RenderProxy.cpp +++ b/libs/hwui/renderthread/RenderProxy.cpp @@ -39,6 +39,8 @@ namespace renderthread { #define CREATE_BRIDGE3(name, a1, a2, a3) CREATE_BRIDGE(name, a1,a2,a3,,,,,) #define CREATE_BRIDGE4(name, a1, a2, a3, a4) CREATE_BRIDGE(name, a1,a2,a3,a4,,,,) #define CREATE_BRIDGE5(name, a1, a2, a3, a4, a5) CREATE_BRIDGE(name, a1,a2,a3,a4,a5,,,) +#define CREATE_BRIDGE6(name, a1, a2, a3, a4, a5, a6) CREATE_BRIDGE(name, a1,a2,a3,a4,a5,a6,,) +#define CREATE_BRIDGE7(name, a1, a2, a3, a4, a5, a6, a7) CREATE_BRIDGE(name, a1,a2,a3,a4,a5,a6,a7,) #define CREATE_BRIDGE(name, a1, a2, a3, a4, a5, a6, a7, a8) \ typedef struct { \ a1; a2; a3; a4; a5; a6; a7; a8; \ @@ -152,19 +154,24 @@ void RenderProxy::pauseSurface(const sp<ANativeWindow>& window) { postAndWait(task); } -CREATE_BRIDGE5(setup, CanvasContext* context, int width, int height, - Vector3 lightCenter, int lightRadius) { - args->context->setup(args->width, args->height, args->lightCenter, args->lightRadius); +CREATE_BRIDGE7(setup, CanvasContext* context, int width, int height, + Vector3 lightCenter, float lightRadius, + uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha) { + args->context->setup(args->width, args->height, args->lightCenter, args->lightRadius, + args->ambientShadowAlpha, args->spotShadowAlpha); return NULL; } -void RenderProxy::setup(int width, int height, const Vector3& lightCenter, float lightRadius) { +void RenderProxy::setup(int width, int height, const Vector3& lightCenter, float lightRadius, + uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha) { SETUP_TASK(setup); args->context = mContext; args->width = width; args->height = height; args->lightCenter = lightCenter; args->lightRadius = lightRadius; + args->ambientShadowAlpha = ambientShadowAlpha; + args->spotShadowAlpha = spotShadowAlpha; post(task); } diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h index 0027403..28d0173 100644 --- a/libs/hwui/renderthread/RenderProxy.h +++ b/libs/hwui/renderthread/RenderProxy.h @@ -67,7 +67,8 @@ public: ANDROID_API bool initialize(const sp<ANativeWindow>& window); ANDROID_API void updateSurface(const sp<ANativeWindow>& window); ANDROID_API void pauseSurface(const sp<ANativeWindow>& window); - ANDROID_API void setup(int width, int height, const Vector3& lightCenter, float lightRadius); + ANDROID_API void setup(int width, int height, const Vector3& lightCenter, float lightRadius, + uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha); ANDROID_API void setOpaque(bool opaque); ANDROID_API int syncAndDrawFrame(nsecs_t frameTimeNanos, nsecs_t recordDurationNanos, float density); |