From 584a375df68ed7d62b38389078c6804edf228f9c Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 30 Jul 2009 18:45:01 -0700 Subject: [PATCH] First pass at implementing the Grass live wallpaper in RenderScript. This change also adds second(), minute() and hour() to the RS library. --- .../android/renderscript/RenderScript.java | 10 ++ .../jni/android_renderscript_RenderScript.cpp | 20 ++- libs/rs/java/Grass/Android.mk | 25 +++ libs/rs/java/Grass/AndroidManifest.xml | 20 +++ .../rs/java/Grass/res/drawable-hdpi/night.jpg | Bin 0 -> 65755 bytes libs/rs/java/Grass/res/drawable-hdpi/sky.jpg | Bin 0 -> 27766 bytes .../java/Grass/res/drawable-hdpi/sunrise.jpg | Bin 0 -> 30351 bytes .../java/Grass/res/drawable-hdpi/sunset.jpg | Bin 0 -> 33914 bytes libs/rs/java/Grass/res/raw/grass.c | 84 ++++++++++ .../Grass/src/com/android/grass/rs/Grass.java | 46 ++++++ .../src/com/android/grass/rs/GrassRS.java | 143 ++++++++++++++++++ .../src/com/android/grass/rs/GrassView.java | 36 +++++ libs/rs/rs.spec | 5 + libs/rs/rsScript.h | 3 + libs/rs/rsScriptC.cpp | 6 + libs/rs/rsScriptC_Lib.cpp | 67 ++++++++ 16 files changed, 464 insertions(+), 1 deletion(-) create mode 100644 libs/rs/java/Grass/Android.mk create mode 100644 libs/rs/java/Grass/AndroidManifest.xml create mode 100644 libs/rs/java/Grass/res/drawable-hdpi/night.jpg create mode 100644 libs/rs/java/Grass/res/drawable-hdpi/sky.jpg create mode 100644 libs/rs/java/Grass/res/drawable-hdpi/sunrise.jpg create mode 100644 libs/rs/java/Grass/res/drawable-hdpi/sunset.jpg create mode 100644 libs/rs/java/Grass/res/raw/grass.c create mode 100644 libs/rs/java/Grass/src/com/android/grass/rs/Grass.java create mode 100644 libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java create mode 100644 libs/rs/java/Grass/src/com/android/grass/rs/GrassView.java diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index 1770a7aa4ccca..904361fb88b3d 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -139,6 +139,7 @@ public class RenderScript { native private void nScriptCSetClearColor(float r, float g, float b, float a); native private void nScriptCSetClearDepth(float depth); native private void nScriptCSetClearStencil(int stencil); + native private void nScriptCSetTimeZone(byte[] timeZone); native private void nScriptCAddType(int type); native private void nScriptCSetRoot(boolean isRoot); native private void nScriptCSetScript(byte[] script, int offset, int length); @@ -670,6 +671,15 @@ public class RenderScript { nScriptCBegin(); } + public void scriptCSetTimeZone(String timeZone) { + try { + byte[] bytes = timeZone.getBytes("UTF-8"); + nScriptCSetTimeZone(bytes); + } catch (java.io.UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + public void scriptCSetClearColor(float r, float g, float b, float a) { nScriptCSetClearColor(r, g, b, a); } diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index 6f781a08b4801..a02abca6cae18 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -586,7 +586,7 @@ static void nScriptCSetClearDepth(JNIEnv *_env, jobject _this, jfloat d) { RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); - LOG_API("nScriptCSetClearColor, con(%p), depth(%f)", con, d); + LOG_API("nScriptCSetClearDepth, con(%p), depth(%f)", con, d); rsScriptCSetClearDepth(d); } @@ -598,6 +598,23 @@ nScriptCSetClearStencil(JNIEnv *_env, jobject _this, jint stencil) rsScriptCSetClearStencil(stencil); } +static void +nScriptCSetTimeZone(JNIEnv *_env, jobject _this, jbyteArray timeZone) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nScriptCSetTimeZone, con(%p), timeZone(%s)", con, timeZone); + + jint length = _env->GetArrayLength(timeZone); + jbyte* timeZone_ptr; + timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0); + + rsScriptCSetTimeZone((const char *)timeZone_ptr, length); + + if (timeZone_ptr) { + _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0); + } +} + static void nScriptCAddType(JNIEnv *_env, jobject _this, jint type) { @@ -1052,6 +1069,7 @@ static JNINativeMethod methods[] = { {"nScriptCSetClearColor", "(FFFF)V", (void*)nScriptCSetClearColor }, {"nScriptCSetClearDepth", "(F)V", (void*)nScriptCSetClearDepth }, {"nScriptCSetClearStencil", "(I)V", (void*)nScriptCSetClearStencil }, +{"nScriptCSetTimeZone", "([B)V", (void*)nScriptCSetTimeZone }, {"nScriptCAddType", "(I)V", (void*)nScriptCAddType }, {"nScriptCSetRoot", "(Z)V", (void*)nScriptCSetRoot }, {"nScriptCSetScript", "([BII)V", (void*)nScriptCSetScript }, diff --git a/libs/rs/java/Grass/Android.mk b/libs/rs/java/Grass/Android.mk new file mode 100644 index 0000000000000..ce5294ed95d83 --- /dev/null +++ b/libs/rs/java/Grass/Android.mk @@ -0,0 +1,25 @@ +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src) +#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript + +LOCAL_PACKAGE_NAME := GrassRS + +include $(BUILD_PACKAGE) diff --git a/libs/rs/java/Grass/AndroidManifest.xml b/libs/rs/java/Grass/AndroidManifest.xml new file mode 100644 index 0000000000000..a40f3785fa6b5 --- /dev/null +++ b/libs/rs/java/Grass/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/libs/rs/java/Grass/res/drawable-hdpi/night.jpg b/libs/rs/java/Grass/res/drawable-hdpi/night.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9989abfe527a87157b0ff8bcde213275c2d2787e GIT binary patch literal 65755 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 GXa5h%dH>r0 literal 0 HcmV?d00001 diff --git a/libs/rs/java/Grass/res/drawable-hdpi/sky.jpg b/libs/rs/java/Grass/res/drawable-hdpi/sky.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a12fe201ca70cd89471e81b15fec1b2e0da93bdc GIT binary patch literal 27766 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 literal 0 HcmV?d00001 diff --git a/libs/rs/java/Grass/res/drawable-hdpi/sunrise.jpg b/libs/rs/java/Grass/res/drawable-hdpi/sunrise.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db016b26267728ccdb72bbf97c5d7ac4b9169335 GIT binary patch literal 30351 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 HJzxGGv;iE& literal 0 HcmV?d00001 diff --git a/libs/rs/java/Grass/res/drawable-hdpi/sunset.jpg b/libs/rs/java/Grass/res/drawable-hdpi/sunset.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49bb0c631a56396bf883ed9a8cd9e6ba624222e8 GIT binary patch literal 33914 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 ipNF?ypP#+B?dOlF@7ubcEjI6Zf2zFa= MIDNIGHT && now < MORNING) { + drawNight(); + alpha(norm(now, MIDNIGHT, MORNING)); + drawSunrise(); + } + + if (now >= MORNING && now < AFTERNOON) { + drawSunrise(); + alpha(norm(now, MORNING, AFTERNOON)); + drawNoon(); + } + + if (now >= AFTERNOON && now < DUSK) { + drawNoon(); + alpha(norm(now, AFTERNOON, DUSK)); + drawSunset(); + } + + if (now >= DUSK) { + drawSunset(); + alpha(norm(now, DUSK, 1.0f)); + drawNight(); + } + + return 1; +} diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/Grass.java b/libs/rs/java/Grass/src/com/android/grass/rs/Grass.java new file mode 100644 index 0000000000000..260fcee969a61 --- /dev/null +++ b/libs/rs/java/Grass/src/com/android/grass/rs/Grass.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.grass.rs; + +import android.app.Activity; +import android.os.Bundle; + +public class Grass extends Activity { + private GrassView mView; + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + + mView = new GrassView(this); + setContentView(mView); + } + + @Override + protected void onResume() { + super.onResume(); + mView.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + mView.onPause(); + + Runtime.getRuntime().exit(0); + } +} diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java b/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java new file mode 100644 index 0000000000000..9ca71737ffb6b --- /dev/null +++ b/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.grass.rs; + +import android.content.res.Resources; +import android.renderscript.RenderScript; +import static android.renderscript.RenderScript.ElementPredefined.*; +import static android.renderscript.RenderScript.SamplerParam.*; +import static android.renderscript.RenderScript.SamplerValue.*; +import static android.renderscript.RenderScript.EnvMode.*; +import static android.renderscript.RenderScript.DepthFunc.*; +import static android.renderscript.RenderScript.BlendSrcFunc; +import static android.renderscript.RenderScript.BlendDstFunc; +import android.graphics.BitmapFactory; +import android.graphics.Bitmap; + +import java.util.TimeZone; + +class GrassRS { + private static final int RSID_SKY_TEXTURES = 0; + private static final int SKY_TEXTURES_COUNT = 4; + + private Resources mResources; + private RenderScript mRS; + + @SuppressWarnings({"FieldCanBeLocal"}) + private RenderScript.Script mScript; + @SuppressWarnings({"FieldCanBeLocal"}) + private RenderScript.Sampler mSampler; + @SuppressWarnings({"FieldCanBeLocal"}) + private RenderScript.ProgramFragment mPfBackground; + @SuppressWarnings({"FieldCanBeLocal"}) + private RenderScript.ProgramFragmentStore mPfsBackground; + + @SuppressWarnings({"FieldCanBeLocal"}) + private RenderScript.Allocation mSkyTexturesIDs; + @SuppressWarnings({"FieldCanBeLocal"}) + private RenderScript.Allocation[] mSkyTextures; + @SuppressWarnings({"FieldCanBeLocal"}) + private int[] mSkyBufferIDs; + + public GrassRS() { + } + + public void init(RenderScript rs, Resources res) { + mRS = rs; + mResources = res; + initRS(); + } + + private void initRS() { + createProgramVertex(); + createProgramFragmentStore(); + createProgramFragment(); + + mRS.scriptCBegin(); + mRS.scriptCSetClearColor(0.0f, 0.0f, 0.0f, 1.0f); + mRS.scriptCSetScript(mResources, R.raw.grass); + mRS.scriptCSetTimeZone(TimeZone.getDefault().getID()); + mRS.scriptCSetRoot(true); + + mScript = mRS.scriptCCreate(); + + loadSkyTextures(); + mScript.bindAllocation(mSkyTexturesIDs, RSID_SKY_TEXTURES); + + mRS.contextBindRootScript(mScript); + } + + private void loadSkyTextures() { + mSkyBufferIDs = new int[SKY_TEXTURES_COUNT]; + mSkyTextures = new RenderScript.Allocation[SKY_TEXTURES_COUNT]; + mSkyTexturesIDs = mRS.allocationCreatePredefSized( + USER_FLOAT, SKY_TEXTURES_COUNT); + + final RenderScript.Allocation[] textures = mSkyTextures; + textures[0] = loadTexture(R.drawable.night, "night"); + textures[1] = loadTexture(R.drawable.sunrise, "sunrise"); + textures[2] = loadTexture(R.drawable.sky, "sky"); + textures[3] = loadTexture(R.drawable.sunset, "sunset"); + + final int[] bufferIds = mSkyBufferIDs; + final int count = textures.length; + + for (int i = 0; i < count; i++) { + final RenderScript.Allocation texture = textures[i]; + texture.uploadToTexture(0); + bufferIds[i] = texture.getID(); + } + + mSkyTexturesIDs.data(bufferIds); + } + + private RenderScript.Allocation loadTexture(int id, String name) { + RenderScript.Allocation allocation = mRS.allocationCreateFromBitmapResource(mResources, id, + RGB_565, false); + allocation.setName(name); + return allocation; + } + + private void createProgramFragment() { + mRS.samplerBegin(); + mRS.samplerSet(FILTER_MIN, LINEAR); + mRS.samplerSet(FILTER_MAG, LINEAR); + mRS.samplerSet(WRAP_MODE_S, CLAMP); + mRS.samplerSet(WRAP_MODE_T, CLAMP); + mSampler = mRS.samplerCreate(); + + mRS.programFragmentBegin(null, null); + mRS.programFragmentSetTexEnable(0, true); + mRS.programFragmentSetTexEnvMode(0, REPLACE); + mPfBackground = mRS.programFragmentCreate(); + mPfBackground.setName("PFBackground"); + mPfBackground.bindSampler(mSampler, 0); + } + + private void createProgramFragmentStore() { + mRS.programFragmentStoreBegin(null, null); + mRS.programFragmentStoreDepthFunc(ALWAYS); + mRS.programFragmentStoreBlendFunc(BlendSrcFunc.SRC_ALPHA, BlendDstFunc.ONE_MINUS_SRC_ALPHA); + mRS.programFragmentStoreDitherEnable(true); + mRS.programFragmentStoreDepthMask(false); + mPfsBackground = mRS.programFragmentStoreCreate(); + mPfsBackground.setName("PFSBackground"); + } + + private void createProgramVertex() { + } +} diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/GrassView.java b/libs/rs/java/Grass/src/com/android/grass/rs/GrassView.java new file mode 100644 index 0000000000000..a641e1ef48d63 --- /dev/null +++ b/libs/rs/java/Grass/src/com/android/grass/rs/GrassView.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.grass.rs; + +import android.content.Context; +import android.renderscript.RSSurfaceView; +import android.renderscript.RenderScript; +import android.view.SurfaceHolder; + +class GrassView extends RSSurfaceView { + public GrassView(Context context) { + super(context); + } + + public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { + super.surfaceChanged(holder, format, w, h); + + RenderScript RS = createRenderScript(); + GrassRS render = new GrassRS(); + render.init(RS, getResources()); + } +} diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec index 45e6d1be8cb09..d9a64562743b3 100644 --- a/libs/rs/rs.spec +++ b/libs/rs/rs.spec @@ -280,6 +280,11 @@ ScriptCSetClearColor { param float a } +ScriptCSetTimeZone { + param const char * timeZone + param uint32_t length + } + ScriptCSetClearDepth { param float depth } diff --git a/libs/rs/rsScript.h b/libs/rs/rsScript.h index 7dd2b61ff2863..a8e04a68aaa45 100644 --- a/libs/rs/rsScript.h +++ b/libs/rs/rsScript.h @@ -43,6 +43,9 @@ public: float mClearDepth; uint32_t mClearStencil; + uint32_t mStartTimeMillis; + const char* mTimeZone; + ObjectBaseRef mVertex; ObjectBaseRef mFragment; //ObjectBaseRef mRaster; diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp index 842c836b9ec51..3b9d27a4ed072 100644 --- a/libs/rs/rsScriptC.cpp +++ b/libs/rs/rsScriptC.cpp @@ -230,6 +230,12 @@ void rsi_ScriptCSetClearColor(Context * rsc, float r, float g, float b, float a) ss->mEnviroment.mClearColor[3] = a; } +void rsi_ScriptCSetTimeZone(Context * rsc, const char * timeZone, uint32_t length) +{ + ScriptCState *ss = &rsc->mScriptC; + ss->mEnviroment.mTimeZone = timeZone; +} + void rsi_ScriptCSetClearDepth(Context * rsc, float v) { ScriptCState *ss = &rsc->mScriptC; diff --git a/libs/rs/rsScriptC_Lib.cpp b/libs/rs/rsScriptC_Lib.cpp index 7db3619f291b2..ca0511401e921 100644 --- a/libs/rs/rsScriptC_Lib.cpp +++ b/libs/rs/rsScriptC_Lib.cpp @@ -24,6 +24,9 @@ #include #include +#include +#include + using namespace android; using namespace android::renderscript; @@ -133,7 +136,63 @@ static float SC_randf(float max) } +////////////////////////////////////////////////////////////////////////////// +// Time routines +////////////////////////////////////////////////////////////////////////////// +static uint32_t SC_second() +{ + GET_TLS(); + + time_t rawtime; + time(&rawtime); + + if (sc->mEnviroment.mTimeZone) { + struct tm timeinfo; + localtime_tz(&rawtime, &timeinfo, sc->mEnviroment.mTimeZone); + return timeinfo.tm_sec; + } else { + struct tm *timeinfo; + timeinfo = localtime(&rawtime); + return timeinfo->tm_sec; + } +} + +static uint32_t SC_minute() +{ + GET_TLS(); + + time_t rawtime; + time(&rawtime); + + if (sc->mEnviroment.mTimeZone) { + struct tm timeinfo; + localtime_tz(&rawtime, &timeinfo, sc->mEnviroment.mTimeZone); + return timeinfo.tm_min; + } else { + struct tm *timeinfo; + timeinfo = localtime(&rawtime); + return timeinfo->tm_min; + } +} + +static uint32_t SC_hour() +{ + GET_TLS(); + + time_t rawtime; + time(&rawtime); + + if (sc->mEnviroment.mTimeZone) { + struct tm timeinfo; + localtime_tz(&rawtime, &timeinfo, sc->mEnviroment.mTimeZone); + return timeinfo.tm_hour; + } else { + struct tm *timeinfo; + timeinfo = localtime(&rawtime); + return timeinfo->tm_hour; + } +} ////////////////////////////////////////////////////////////////////////////// // Matrix routines @@ -460,6 +519,14 @@ ScriptCState::SymbolTable_t ScriptCState::gSyms[] = { { "ceilf", (void *)&ceilf, "float", "(float)" }, + // time + { "second", (void *)&SC_second, + "int", "()" }, + { "minute", (void *)&SC_minute, + "int", "()" }, + { "hour", (void *)&SC_hour, + "int", "()" }, + // matrix { "matrixLoadIdentity", (void *)&SC_matrixLoadIdentity, "void", "(float *mat)" },