diff options
author | Alex Sakhartchouk <alexst@google.com> | 2011-01-10 15:57:57 -0800 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2011-01-10 15:57:57 -0800 |
commit | fe852e216fdfab20e7b3d3e55247f70634d267b9 (patch) | |
tree | a0d83f8e4b74f40a5e53704ca0ba9bcf8c06df03 /libs | |
parent | 3045bbaf58574ad3168466b198b835b29d174c18 (diff) | |
download | frameworks_base-fe852e216fdfab20e7b3d3e55247f70634d267b9.zip frameworks_base-fe852e216fdfab20e7b3d3e55247f70634d267b9.tar.gz frameworks_base-fe852e216fdfab20e7b3d3e55247f70634d267b9.tar.bz2 |
Updating cubemap loading code.
Change-Id: I93bb00e5fd1ccc622d17eba70a510664c2093723
Diffstat (limited to 'libs')
-rw-r--r-- | libs/rs/java/Samples/res/drawable/cubemap_test.png | bin | 2898 -> 2870 bytes | |||
-rw-r--r-- | libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java | 4 | ||||
-rw-r--r-- | libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java | 4 | ||||
-rw-r--r-- | libs/rs/rsAllocation.cpp | 11 |
4 files changed, 10 insertions, 9 deletions
diff --git a/libs/rs/java/Samples/res/drawable/cubemap_test.png b/libs/rs/java/Samples/res/drawable/cubemap_test.png Binary files differindex 75ad0a4..baf35d0 100644 --- a/libs/rs/java/Samples/res/drawable/cubemap_test.png +++ b/libs/rs/java/Samples/res/drawable/cubemap_test.png diff --git a/libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java b/libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java index 5430a13..1afcee3 100644 --- a/libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java +++ b/libs/rs/java/Samples/src/com/android/samples/RsBenchRS.java @@ -22,7 +22,6 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.renderscript.*; -import android.renderscript.Allocation.CubemapLayout; import android.renderscript.Allocation.MipmapControl; import android.renderscript.Program.TextureType; import android.renderscript.ProgramStore.DepthFunc; @@ -318,8 +317,7 @@ public class RsBenchRS { mTexTransparent = loadTextureARGB(R.drawable.leaf); mTexChecker = loadTextureRGB(R.drawable.checker); Bitmap b = BitmapFactory.decodeResource(mRes, R.drawable.cubemap_test); - mTexCube = Allocation.createCubemapFromBitmap(mRS, b, - Allocation.CubemapLayout.VERTICAL_FACE_LIST); + mTexCube = Allocation.createCubemapFromBitmap(mRS, b); mScript.set_gTexTorus(mTexTorus); mScript.set_gTexOpaque(mTexOpaque); diff --git a/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java b/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java index cac105a..87840a7 100644 --- a/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java +++ b/libs/rs/java/Samples/src/com/android/samples/RsRenderStatesRS.java @@ -22,7 +22,6 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.renderscript.*; -import android.renderscript.Allocation.CubemapLayout; import android.renderscript.Font.Style; import android.renderscript.Program.TextureType; import android.renderscript.ProgramStore.DepthFunc; @@ -308,8 +307,7 @@ public class RsRenderStatesRS { mTexTransparent = loadTextureARGB(R.drawable.leaf); mTexChecker = loadTextureRGB(R.drawable.checker); Bitmap b = BitmapFactory.decodeResource(mRes, R.drawable.cubemap_test); - mTexCube = Allocation.createCubemapFromBitmap(mRS, b, - Allocation.CubemapLayout.VERTICAL_FACE_LIST); + mTexCube = Allocation.createCubemapFromBitmap(mRS, b); mScript.set_gTexTorus(mTexTorus); mScript.set_gTexOpaque(mTexOpaque); diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index 3608e43..673ade2 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -831,16 +831,21 @@ RsAllocation rsaAllocationCubeCreateFromBitmap(RsContext con, RsType vtype, return NULL; } + uint32_t faceSize = t->getDimX(); + uint32_t strideBytes = faceSize * 6 * t->getElementSizeBytes(); + uint32_t copySize = faceSize * t->getElementSizeBytes(); + uint8_t *sourcePtr = (uint8_t*)data; for (uint32_t face = 0; face < 6; face ++) { Adapter2D faceAdapter(rsc, texAlloc); faceAdapter.setFace(face); - size_t cpySize = t->getDimX() * t->getDimX() * t->getElementSizeBytes(); - memcpy(faceAdapter.getElement(0, 0), sourcePtr, cpySize); + for (uint32_t dI = 0; dI < faceSize; dI ++) { + memcpy(faceAdapter.getElement(0, dI), sourcePtr + strideBytes * dI, copySize); + } // Move the data pointer to the next cube face - sourcePtr += cpySize; + sourcePtr += copySize; if (mips == RS_ALLOCATION_MIPMAP_FULL) { Adapter2D adapt(rsc, texAlloc); |