summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java4
-rw-r--r--libs/rs/RenderScript.h1
-rw-r--r--libs/rs/RenderScriptEnv.h16
-rw-r--r--libs/rs/java/Fountain/AndroidManifest.xml2
-rwxr-xr-xlibs/rs/java/Fountain/res/drawable/gadgets_clock_mp3.pngbin0 -> 104862 bytes
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/Fountain.java2
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/FountainView.java31
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/RSSurfaceView.java2
-rw-r--r--libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java77
-rw-r--r--libs/rs/jni/RenderScript_jni.cpp27
-rw-r--r--libs/rs/rs.spec13
-rw-r--r--libs/rs/rsAllocation.cpp99
-rw-r--r--libs/rs/rsContext.cpp2
-rw-r--r--libs/rs/rsElement.cpp4
-rw-r--r--libs/rs/rsMatrix.cpp1
-rw-r--r--libs/rs/rsProgramFragment.cpp11
-rw-r--r--libs/rs/rsScriptC.cpp42
17 files changed, 292 insertions, 42 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index a448ac6..51f3b02 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -53,7 +53,7 @@ public final class BatteryStatsImpl extends BatteryStats {
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
// Current on-disk Parcel version
- private static final int VERSION = 36;
+ private static final int VERSION = 37;
private final File mFile;
private final File mBackupFile;
@@ -3014,6 +3014,8 @@ public final class BatteryStatsImpl extends BatteryStats {
u.mWifiTurnedOnTimer.writeSummaryFromParcelLocked(out, NOWREAL);
u.mFullWifiLockTimer.writeSummaryFromParcelLocked(out, NOWREAL);
+ u.mAudioTurnedOnTimer.writeSummaryFromParcelLocked(out, NOWREAL);
+ u.mVideoTurnedOnTimer.writeSummaryFromParcelLocked(out, NOWREAL);
u.mScanWifiLockTimer.writeSummaryFromParcelLocked(out, NOWREAL);
u.mWifiMulticastTimer.writeSummaryFromParcelLocked(out, NOWREAL);
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h
index e1a4b6d..378fccc 100644
--- a/libs/rs/RenderScript.h
+++ b/libs/rs/RenderScript.h
@@ -86,6 +86,7 @@ enum RsElementPredefined {
RS_ELEMENT_USER_I32,
RS_ELEMENT_USER_FLOAT,
+ RS_ELEMENT_A_8,
RS_ELEMENT_RGB_565,
RS_ELEMENT_RGBA_5551,
RS_ELEMENT_RGBA_4444,
diff --git a/libs/rs/RenderScriptEnv.h b/libs/rs/RenderScriptEnv.h
index 9ba1a00..dfca56c 100644
--- a/libs/rs/RenderScriptEnv.h
+++ b/libs/rs/RenderScriptEnv.h
@@ -58,12 +58,9 @@ typedef struct {
void (*color)(void *con, float r, float g, float b, float a);
- void (*renderTriangleMesh)(void *con, RsTriangleMesh);
- void (*renderTriangleMeshRange)(void *con, RsTriangleMesh, uint32_t start, uint32_t count);
-
void (*programFragmentBindTexture)(void *con, RsProgramFragment, uint32_t slot, RsAllocation);
void (*programFragmentBindSampler)(void *con, RsProgramFragment, uint32_t slot, RsAllocation);
-
+
void (*materialDiffuse)(void *con, float r, float g, float b, float a);
void (*materialSpecular)(void *con, float r, float g, float b, float a);
void (*lightPosition)(void *con, float x, float y, float z, float w);
@@ -76,11 +73,18 @@ typedef struct {
uint32_t (*rand)(void *con, uint32_t max);
+ void (*contextBindProgramFragment)(void *con, RsProgramFragment pf);
+ void (*contextBindProgramFragmentStore)(void *con, RsProgramFragmentStore pfs);
+
+
+ // Drawing funcs
+ void (*renderTriangleMesh)(void *con, RsTriangleMesh);
+ void (*renderTriangleMeshRange)(void *con, RsTriangleMesh, uint32_t start, uint32_t count);
+
// Assumes (GL_FIXED) x,y,z (GL_UNSIGNED_BYTE)r,g,b,a
void (*drawTriangleArray)(void *con, RsAllocation alloc, uint32_t count);
- void (*contextBindProgramFragment)(void *con, RsProgramFragment pf);
- void (*contextBindProgramFragmentStore)(void *con, RsProgramFragmentStore pfs);
+ void (*drawRect)(void *con, int32_t x1, int32_t x2, int32_t y1, int32_t y2);
} rsc_FunctionTable;
typedef void (*rsc_RunScript)(void *con, const rsc_FunctionTable *, uint32_t launchID);
diff --git a/libs/rs/java/Fountain/AndroidManifest.xml b/libs/rs/java/Fountain/AndroidManifest.xml
index 62b0b0d..a10938b 100644
--- a/libs/rs/java/Fountain/AndroidManifest.xml
+++ b/libs/rs/java/Fountain/AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.calc">
+ package="com.android.fountain">
<application android:label="Fountain">
<activity android:name="Fountain"
android:theme="@android:style/Theme.Black.NoTitleBar">
diff --git a/libs/rs/java/Fountain/res/drawable/gadgets_clock_mp3.png b/libs/rs/java/Fountain/res/drawable/gadgets_clock_mp3.png
new file mode 100755
index 0000000..e91bfb4
--- /dev/null
+++ b/libs/rs/java/Fountain/res/drawable/gadgets_clock_mp3.png
Binary files differ
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/Fountain.java b/libs/rs/java/Fountain/src/com/android/fountain/Fountain.java
index ca0f020..0d66966 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/Fountain.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/Fountain.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.calc;
+package com.android.fountain;
import android.app.Activity;
import android.content.res.Configuration;
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
index b6aa9f8..c244d07 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
@@ -14,13 +14,17 @@
* limitations under the License.
*/
-package com.android.calc;
+package com.android.fountain;
import java.io.Writer;
import java.util.ArrayList;
import java.util.concurrent.Semaphore;
import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
@@ -46,6 +50,10 @@ public class FountainView extends RSSurfaceView {
private RenderScript.Script mScript;
private RenderScript.ProgramFragmentStore mPFS;
private RenderScript.ProgramFragment mPF;
+ private RenderScript.ProgramFragment mPF2;
+ private RenderScript.Allocation mTexture;
+
+ private Bitmap mBackground;
int mParams[] = new int[10];
@@ -58,6 +66,17 @@ public class FountainView extends RSSurfaceView {
mPartAlloc = mRS.allocationCreatePredefSized(RenderScript.ElementPredefined.USER_I32, partCount * 3 * 3);
mVertAlloc = mRS.allocationCreatePredefSized(RenderScript.ElementPredefined.USER_I32, partCount * 5 + 1);
+ {
+ Resources res = getResources();
+ Drawable d = res.getDrawable(R.drawable.gadgets_clock_mp3);
+ BitmapDrawable bd = (BitmapDrawable)d;
+ Bitmap b = bd.getBitmap();
+ mTexture = mRS.allocationCreateFromBitmap(b,
+ RenderScript.ElementPredefined.RGB_565,
+ true);
+ mTexture.uploadToTexture(0);
+ }
+
mRS.programFragmentStoreBegin(null, null);
mRS.programFragmentStoreBlendFunc(RenderScript.BlendSrcFunc.SRC_ALPHA, RenderScript.BlendDstFunc.ONE);
mRS.programFragmentStoreDepthFunc(RenderScript.DepthFunc.ALWAYS);
@@ -66,7 +85,13 @@ public class FountainView extends RSSurfaceView {
mRS.programFragmentBegin(null, null);
mPF = mRS.programFragmentCreate();
- mRS.contextBindProgramFragment(mPF);
+ //mRS.contextBindProgramFragment(mPF);
+
+ mRS.programFragmentBegin(null, null);
+ mRS.programFragmentSetTexEnable(0, true);
+ mPF2 = mRS.programFragmentCreate();
+ mRS.contextBindProgramFragment(mPF2);
+ mPF2.bindTexture(mTexture, 0);
mParams[0] = 0;
mParams[1] = partCount;
@@ -74,6 +99,8 @@ public class FountainView extends RSSurfaceView {
mParams[3] = 0;
mParams[4] = 0;
mParams[5] = mPartAlloc.mID;
+ mParams[6] = mPF.mID;
+ mParams[7] = mPF2.mID;
mIntAlloc.data(mParams);
int t2[] = new int[partCount * 4*3];
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/RSSurfaceView.java b/libs/rs/java/Fountain/src/com/android/fountain/RSSurfaceView.java
index d18270a..a8b3bca 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/RSSurfaceView.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/RSSurfaceView.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.calc;
+package com.android.fountain;
import java.io.Writer;
import java.util.ArrayList;
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java b/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
index bab9666..a626053 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.calc;
+package com.android.fountain;
import android.os.Bundle;
import android.util.Log;
@@ -24,6 +24,8 @@ import android.view.MenuItem;
import android.view.Window;
import android.view.View;
import android.view.Surface;
+import android.graphics.Bitmap;
+import android.graphics.Color;
public class RenderScript {
private static final String LOG_TAG = "libRS_jni";
@@ -79,6 +81,8 @@ public class RenderScript {
native private int nAllocationCreateTyped(int type);
native private int nAllocationCreatePredefSized(int predef, int count);
native private int nAllocationCreateSized(int elem, int count);
+ native private int nAllocationCreateFromBitmap(int w, int h, int dstFmt, int srcFmt, boolean genMips, int[] data);
+
//native private int nAllocationCreateFromBitmap(type.mID);
native private void nAllocationUploadToTexture(int alloc, int baseMioLevel);
native private void nAllocationDestroy(int alloc);
@@ -180,20 +184,21 @@ public class RenderScript {
USER_I32 (5),
USER_FLOAT (6),
- RGB_565 (7),
- RGBA_5551 (8),
- RGBA_4444 (9),
- RGB_888 (10),
- RGBA_8888 (11),
-
- INDEX_16 (12),
- INDEX_32 (13),
- XY_F32 (14),
- XYZ_F32 (15),
- ST_XY_F32 (16),
- ST_XYZ_F32 (17),
- NORM_XYZ_F32 (18),
- NORM_ST_XYZ_F32 (19);
+ A_8 (7),
+ RGB_565 (8),
+ RGBA_5551 (9),
+ RGBA_4444 (10),
+ RGB_888 (11),
+ RGBA_8888 (12),
+
+ INDEX_16 (13),
+ INDEX_32 (14),
+ XY_F32 (15),
+ XYZ_F32 (16),
+ ST_XY_F32 (17),
+ ST_XYZ_F32 (18),
+ NORM_XYZ_F32 (19),
+ NORM_ST_XYZ_F32 (20);
int mID;
ElementPredefined(int id) {
@@ -435,10 +440,44 @@ public class RenderScript {
return new Allocation(id);
}
- //public Allocation allocationCreateFromBitmap(string file, boolean genMips) {
- //int id = nAllocationCreateTyped(type.mID);
- //return new Allocation(id);
- //}
+ public Allocation allocationCreateFromBitmap(Bitmap b, ElementPredefined dstFmt, boolean genMips) {
+ int w = b.getWidth();
+ int h = b.getHeight();
+ int[] data = new int[w * h];
+
+ int outPtr = 0;
+ for(int y=0; y < h; y++) {
+ for(int x=0; x < w; x++) {
+ data[outPtr] = b.getPixel(x, y);
+ outPtr++;
+ }
+ }
+
+ int srcFmt = 0;
+ /*
+ switch(b.getConfig()) {
+ case ALPHA_8:
+ srcFmt = ElementPredefined.A_8.mID;
+ break;
+ case ARGB_4444:
+ srcFmt = ElementPredefined.RGBA_4444.mID;
+ break;
+ case ARGB_8888:
+ srcFmt = ElementPredefined.RGBA_8888.mID;
+ break;
+ case RGB_565:
+ srcFmt = ElementPredefined.RGB_565.mID;
+ break;
+ default:
+ Log.e(LOG_TAG, "allocationCreateFromBitmap, unknown bitmap format");
+ }
+ */
+
+ srcFmt = ElementPredefined.RGBA_8888.mID;
+
+ int id = nAllocationCreateFromBitmap(w, h, dstFmt.mID, srcFmt, genMips, data);
+ return new Allocation(id);
+ }
//////////////////////////////////////////////////////////////////////////////////
// Adapter1D
diff --git a/libs/rs/jni/RenderScript_jni.cpp b/libs/rs/jni/RenderScript_jni.cpp
index b3444c0..e1f14b5 100644
--- a/libs/rs/jni/RenderScript_jni.cpp
+++ b/libs/rs/jni/RenderScript_jni.cpp
@@ -78,6 +78,10 @@ static const char* TEST_SCRIPT = ""
" }\n"
" }\n"
"\n"
+ " contextBindProgramFragment(con, loadI32(con, 0, 7));\n"
+ " drawRect(con, 0, 256, 0, 512);\n"
+ " contextBindProgramFragment(con, loadI32(con, 0, 6));\n"
+ "\n"
" if (touch) {\n"
" newPart = loadI32(con, 2, 0);\n"
" for (ct2=0; ct2<rate; ct2++) {\n"
@@ -195,6 +199,10 @@ void test_script(void *con, const rsc_FunctionTable *ft, uint32_t launchID)
}
}
+ ft->contextBindProgramFragment(con, (RsProgramFragment)ft->loadEnvI32(con, 0, 7));
+ ft->drawRect(con, 0, 256, 0, 512);
+ ft->contextBindProgramFragment(con, (RsProgramFragment)ft->loadEnvI32(con, 0, 6));
+
if (touch) {
int newPart = ft->loadEnvI32(con, 2, 0);
for (int ct2=0; ct2<rate; ct2++) {
@@ -453,6 +461,21 @@ nAllocationUploadToTexture(JNIEnv *_env, jobject _this, jint a, jint mip)
rsAllocationUploadToTexture((RsAllocation)a, mip);
}
+static int
+nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint w, jint h, jint dstFmt, jint srcFmt, jboolean genMips, jintArray data)
+{
+ RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+ jint len = _env->GetArrayLength(data);
+ LOG_API("nAllocationCreateFromBitmap, con(%p), w(%i), h(%i), dstFmt(%i), srcFmt(%i), mip(%i), len(%i)", con, w, h, dstFmt, srcFmt, genMips, len);
+
+ jint *ptr = _env->GetIntArrayElements(data, NULL);
+ jint id = (jint)rsAllocationCreateFromBitmap(w, h, (RsElementPredefined)dstFmt, (RsElementPredefined)srcFmt, genMips, ptr);
+ _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
+ return id;
+}
+
+
+
static void
nAllocationDestroy(JNIEnv *_env, jobject _this, jint a)
{
@@ -915,7 +938,7 @@ nContextBindProgramFragment(JNIEnv *_env, jobject _this, jint pf)
// ---------------------------------------------------------------------------
-static const char *classPathName = "com/android/calc/RenderScript";
+static const char *classPathName = "com/android/fountain/RenderScript";
static JNINativeMethod methods[] = {
{"_nInit", "()V", (void*)_nInit },
@@ -939,7 +962,7 @@ static JNINativeMethod methods[] = {
{"nAllocationCreateTyped", "(I)I", (void*)nAllocationCreateTyped },
{"nAllocationCreatePredefSized", "(II)I", (void*)nAllocationCreatePredefSized },
{"nAllocationCreateSized", "(II)I", (void*)nAllocationCreateSized },
-//{"nAllocationCreateFromBitmap", "(I)V", (void*)nAllocationCreateFromBitmap },
+{"nAllocationCreateFromBitmap", "(IIIIZ[I)I", (void*)nAllocationCreateFromBitmap },
{"nAllocationUploadToTexture", "(II)V", (void*)nAllocationUploadToTexture },
{"nAllocationDestroy", "(I)V", (void*)nAllocationDestroy },
{"nAllocationData", "(I[I)V", (void*)nAllocationData_i },
diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec
index 6168bd7..65a4a82 100644
--- a/libs/rs/rs.spec
+++ b/libs/rs/rs.spec
@@ -83,12 +83,23 @@ AllocationCreateSized {
ret RsAllocation
}
-AllocationCreateFromBitmap {
+AllocationCreateFromFile {
param const char *file
param bool genMips
ret RsAllocation
}
+AllocationCreateFromBitmap {
+ param uint32_t width
+ param uint32_t height
+ param RsElementPredefined dstFmt
+ param RsElementPredefined srcFmt
+ param bool genMips
+ param const void * data
+ ret RsAllocation
+ }
+
+
AllocationUploadToTexture {
param RsAllocation alloc
param uint32_t baseMipLevel
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp
index f3f2e46..7b8bc80 100644
--- a/libs/rs/rsAllocation.cpp
+++ b/libs/rs/rsAllocation.cpp
@@ -213,7 +213,104 @@ static void mip(const Adapter2D &out, const Adapter2D &in)
}
-RsAllocation rsi_AllocationCreateFromBitmap(Context *rsc, const char *file, bool genMips)
+typedef void (*ElementConverter_t)(void *dst, const void *src, uint32_t count);
+
+static void elementConverter_cpy_16(void *dst, const void *src, uint32_t count)
+{
+ memcpy(dst, src, count * 2);
+}
+static void elementConverter_cpy_8(void *dst, const void *src, uint32_t count)
+{
+ memcpy(dst, src, count);
+}
+static void elementConverter_cpy_32(void *dst, const void *src, uint32_t count)
+{
+ memcpy(dst, src, count * 4);
+}
+
+
+static void elementConverter_888_to_565(void *dst, const void *src, uint32_t count)
+{
+ uint16_t *d = static_cast<uint16_t *>(dst);
+ const uint8_t *s = static_cast<const uint8_t *>(src);
+
+ while(count--) {
+ *d = rs888to565(s[0], s[1], s[2]);
+ d++;
+ s+= 3;
+ }
+}
+
+static void elementConverter_8888_to_565(void *dst, const void *src, uint32_t count)
+{
+ uint16_t *d = static_cast<uint16_t *>(dst);
+ const uint8_t *s = static_cast<const uint8_t *>(src);
+
+ while(count--) {
+ *d = rs888to565(s[0], s[1], s[2]);
+ d++;
+ s+= 4;
+ }
+}
+
+static ElementConverter_t pickConverter(RsElementPredefined dstFmt, RsElementPredefined srcFmt)
+{
+ if ((dstFmt == RS_ELEMENT_RGB_565) &&
+ (srcFmt == RS_ELEMENT_RGB_565)) {
+ return elementConverter_cpy_16;
+ }
+
+ if ((dstFmt == RS_ELEMENT_RGB_565) &&
+ (srcFmt == RS_ELEMENT_RGB_888)) {
+ return elementConverter_888_to_565;
+ }
+
+ if ((dstFmt == RS_ELEMENT_RGB_565) &&
+ (srcFmt == RS_ELEMENT_RGBA_8888)) {
+ return elementConverter_8888_to_565;
+ }
+
+
+ LOGE("pickConverter, unsuported combo");
+ return 0;
+}
+
+
+RsAllocation rsi_AllocationCreateFromBitmap(Context *rsc, uint32_t w, uint32_t h, RsElementPredefined dstFmt, RsElementPredefined srcFmt, bool genMips, const void *data)
+{
+ rsi_TypeBegin(rsc, rsi_ElementGetPredefined(rsc, RS_ELEMENT_RGB_565));
+ rsi_TypeAdd(rsc, RS_DIMENSION_X, w);
+ rsi_TypeAdd(rsc, RS_DIMENSION_Y, h);
+ if (genMips) {
+ rsi_TypeAdd(rsc, RS_DIMENSION_LOD, 1);
+ }
+ RsType type = rsi_TypeCreate(rsc);
+
+ RsAllocation vTexAlloc = rsi_AllocationCreateTyped(rsc, type);
+ Allocation *texAlloc = static_cast<Allocation *>(vTexAlloc);
+ if (texAlloc == NULL) {
+ LOGE("Memory allocation failure");
+ return NULL;
+ }
+ texAlloc->incRef();
+
+ ElementConverter_t cvt = pickConverter(dstFmt, srcFmt);
+ cvt(texAlloc->getPtr(), data, w * h);
+
+ if (genMips) {
+ Adapter2D adapt(texAlloc);
+ Adapter2D adapt2(texAlloc);
+ for(uint32_t lod=0; lod < (texAlloc->getType()->getLODCount() -1); lod++) {
+ adapt.setLOD(lod);
+ adapt2.setLOD(lod + 1);
+ mip(adapt2, adapt);
+ }
+ }
+
+ return texAlloc;
+}
+
+RsAllocation rsi_AllocationCreateFromFile(Context *rsc, const char *file, bool genMips)
{
typedef struct _Win3xBitmapHeader
{
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index 163cf4d..abc5f45 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -74,7 +74,7 @@ void Context::runRootScript()
if(mRootScript->mIsOrtho) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- glOrthof(0, 320, 0, 480, 0, 1);
+ glOrthof(0, 320, 480, 0, 0, 1);
glMatrixMode(GL_MODELVIEW);
} else {
glMatrixMode(GL_PROJECTION);
diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp
index 1637544..bd11f72 100644
--- a/libs/rs/rsElement.cpp
+++ b/libs/rs/rsElement.cpp
@@ -91,6 +91,10 @@ void ElementState::initPredefined()
e->setComponent(0, f_32);
mPredefinedList.add(Predefined(RS_ELEMENT_USER_FLOAT, e));
+ e = new Element(1);
+ e->setComponent(0, a_8);
+ mPredefinedList.add(Predefined(RS_ELEMENT_A_8, e));
+
e = new Element(3);
e->setComponent(0, r_5);
e->setComponent(1, g_6);
diff --git a/libs/rs/rsMatrix.cpp b/libs/rs/rsMatrix.cpp
index 7d22ae0..e68d5ac 100644
--- a/libs/rs/rsMatrix.cpp
+++ b/libs/rs/rsMatrix.cpp
@@ -17,6 +17,7 @@
#include "rsMatrix.h"
#include "stdlib.h"
+#include "string.h"
#include "math.h"
#include <utils/Log.h>
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index 5367c53..1a6e2c7 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -40,7 +40,7 @@ void ProgramFragment::setupGL()
for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) {
glActiveTexture(GL_TEXTURE0 + ct);
if (!(mTextureEnableMask & (1 << ct)) ||
- !mSamplers[ct].get() ||
+ //!mSamplers[ct].get() ||
!mTextures[ct].get()) {
glDisable(GL_TEXTURE_2D);
@@ -62,7 +62,14 @@ void ProgramFragment::setupGL()
break;
}
- mSamplers[ct]->setupGL();
+// if (mSamplers[ct].get()) {
+ //mSamplers[ct]->setupGL();
+// } else {
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ //}
}
glActiveTexture(GL_TEXTURE0);
}
diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp
index 3c4bfa2..60339ec 100644
--- a/libs/rs/rsScriptC.cpp
+++ b/libs/rs/rsScriptC.cpp
@@ -261,6 +261,35 @@ extern "C" void drawTriangleArray(void *vp, RsAllocation alloc, uint32_t count)
glDrawArrays(GL_TRIANGLES, 0, count * 3);
}
+extern "C" void drawRect(void *vp, int32_t x1, int32_t x2, int32_t y1, int32_t y2)
+{
+ x1 = (x1 << 16);
+ x2 = (x2 << 16);
+ y1 = (y1 << 16);
+ y2 = (y2 << 16);
+
+ int32_t vtx[] = {x1,y1, x1,y2, x2,y1, x2,y2};
+ static const int32_t tex[] = {0,0, 0,0x10000, 0x10000,0, 0x10000,0x10000};
+
+
+ ScriptC::Env * env = static_cast<ScriptC::Env *>(vp);
+ env->mContext->setupCheck();
+
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ //glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]);
+
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glDisableClientState(GL_NORMAL_ARRAY);
+ glDisableClientState(GL_COLOR_ARRAY);
+
+ glVertexPointer(2, GL_FIXED, 8, vtx);
+ glTexCoordPointer(2, GL_FIXED, 8, tex);
+ //glColorPointer(4, GL_UNSIGNED_BYTE, 12, ptr);
+
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+}
+
extern "C" void pfBindTexture(void *vp, RsProgramFragment vpf, uint32_t slot, RsAllocation va)
{
//LOGE("pfBindTexture %p", vpf);
@@ -326,8 +355,6 @@ static rsc_FunctionTable scriptCPtrTable = {
matrixTranslate,
color,
- renderTriangleMesh,
- renderTriangleMeshRange,
pfBindTexture,
pfBindSampler,
@@ -341,9 +368,16 @@ static rsc_FunctionTable scriptCPtrTable = {
disable,
scriptRand,
- drawTriangleArray,
contextBindProgramFragment,
- contextBindProgramFragmentStore
+ contextBindProgramFragmentStore,
+
+
+ renderTriangleMesh,
+ renderTriangleMeshRange,
+
+ drawTriangleArray,
+ drawRect
+
};