198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/* 298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Copyright (C) 2012 The Android Open Source Project 398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * you may not use this file except in compliance with the License. 698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * You may obtain a copy of the License at 798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 1098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Unless required by applicable law or agreed to in writing, software 1198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * See the License for the specific language governing permissions and 1498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * limitations under the License. 1598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 1698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 1798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspackage android.support.v8.renderscript; 1898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 1998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samsimport android.content.res.Resources; 2098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samsimport android.graphics.Bitmap; 2198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samsimport android.graphics.BitmapFactory; 2298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samsimport android.util.TypedValue; 2398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 2498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/** 2598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 2698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams **/ 2798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspublic class AllocationAdapter extends Allocation { 2898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams AllocationAdapter(int id, RenderScript rs, Allocation alloc) { 2998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super(id, rs, alloc.mType, alloc.mUsage); 3098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mAdaptedAllocation = alloc; 3198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 3298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 3398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams int getID(RenderScript rs) { 3498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException( 3598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams "This operation is not supported with adapters at this time."); 3698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 3798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 3898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 3998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 4098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 4198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subData(int xoff, FieldPacker fp) { 4298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.setFromFieldPacker(xoff, fp); 4398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 4498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 4598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 4698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 4798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subElementData(int xoff, int component_number, FieldPacker fp) { 4898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.setFromFieldPacker(xoff, component_number, fp); 4998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 5098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 5198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 5298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 5398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subData1D(int off, int count, int[] d) { 5498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copy1DRangeFrom(off, count, d); 5598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 5698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 5798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 5898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 5998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subData1D(int off, int count, short[] d) { 6098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copy1DRangeFrom(off, count, d); 6198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 6298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 6398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 6498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 6598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subData1D(int off, int count, byte[] d) { 6698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copy1DRangeFrom(off, count, d); 6798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 6898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 6998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 7098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 7198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subData1D(int off, int count, float[] d) { 7298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copy1DRangeFrom(off, count, d); 7398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 7498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 7598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 7698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 7798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subData2D(int xoff, int yoff, int w, int h, int[] d) { 7898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copy2DRangeFrom(xoff, yoff, w, h, d); 7998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 8098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 8198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 8298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 8398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void subData2D(int xoff, int yoff, int w, int h, float[] d) { 8498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copy2DRangeFrom(xoff, yoff, w, h, d); 8598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 8698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 8798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 8898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 8998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void readData(int[] d) { 9098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copyTo(d); 9198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 9298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 9398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @hide 9498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 9598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void readData(float[] d) { 9698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams super.copyTo(d); 9798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 9898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 9998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams void initLOD(int lod) { 10098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (lod < 0) { 10198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSIllegalArgumentException("Attempting to set negative lod (" + lod + ")."); 10298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 10398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 10498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams int tx = mAdaptedAllocation.mType.getX(); 10598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams int ty = mAdaptedAllocation.mType.getY(); 10698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams int tz = mAdaptedAllocation.mType.getZ(); 10798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 10898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams for (int ct=0; ct < lod; ct++) { 10998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if ((tx==1) && (ty == 1) && (tz == 1)) { 11098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSIllegalArgumentException("Attempting to set lod (" + lod + ") out of range."); 11198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 11298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 11398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (tx > 1) tx >>= 1; 11498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (ty > 1) ty >>= 1; 11598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (tz > 1) tz >>= 1; 11698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 11798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 11898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mCurrentDimX = tx; 11998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mCurrentDimY = ty; 12098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mCurrentDimZ = tz; 12198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mCurrentCount = mCurrentDimX; 12298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (mCurrentDimY > 1) { 12398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mCurrentCount *= mCurrentDimY; 12498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 12598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (mCurrentDimZ > 1) { 12698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mCurrentCount *= mCurrentDimZ; 12798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 12898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mSelectedY = 0; 12998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mSelectedZ = 0; 13098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 13198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 13298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 13398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Set the active LOD. The LOD must be within the range for the 13498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * type being adapted. The base allocation must have mipmaps. 13598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 13698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Because this changes the dimensions of the adapter the 13798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * current Y and Z will be reset. 13898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 13998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param lod The LOD to make active. 14098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 14198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setLOD(int lod) { 14298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (!mAdaptedAllocation.getType().hasMipmaps()) { 14398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set LOD when the allocation type does not include mipmaps."); 14498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 14598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (!mConstrainedLOD) { 14698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set LOD when the adapter includes mipmaps."); 14798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 14898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 14998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams initLOD(lod); 15098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 15198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 15298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 15398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Set the active Face. The base allocation must be of a type 15498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * that includes faces. 15598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 15698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param cf The face to make active. 15798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 15898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setFace(Type.CubemapFace cf) { 15998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (!mAdaptedAllocation.getType().hasFaces()) { 16098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set Face when the allocation type does not include faces."); 16198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (!mConstrainedFace) { 16398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set LOD when the adapter includes mipmaps."); 16498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (cf == null) { 16698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSIllegalArgumentException("Cannot set null face."); 16798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 16998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mSelectedFace = cf; 17098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 17198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 17298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 17398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Set the active Y. The y value must be within the range for 17498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * the allocation being adapted. The base allocation must 17598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * contain the Y dimension. 17698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 17798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param y The y to make active. 17898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 17998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setY(int y) { 18098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (mAdaptedAllocation.getType().getY() == 0) { 18198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set Y when the allocation type does not include Y dim."); 18298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 18398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (mAdaptedAllocation.getType().getY() <= y) { 18498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set Y greater than dimension of allocation."); 18598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 18698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (!mConstrainedY) { 18798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set Y when the adapter includes Y."); 18898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 18998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 19098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mSelectedY = y; 19198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 19298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 19398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 19498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Set the active Z. The z value must be within the range for 19598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * the allocation being adapted. The base allocation must 19698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * contain the Z dimension. 19798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 19898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param z The z to make active. 19998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 20098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void setZ(int z) { 20198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (mAdaptedAllocation.getType().getZ() == 0) { 20298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set Z when the allocation type does not include Z dim."); 20398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 20498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (mAdaptedAllocation.getType().getZ() <= z) { 20598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set Z greater than dimension of allocation."); 20698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 20798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (!mConstrainedZ) { 20898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Cannot set Z when the adapter includes Z."); 20998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 21098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 21198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mSelectedZ = z; 21298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 21398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 21498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams static public AllocationAdapter create1D(RenderScript rs, Allocation a) { 21598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams rs.validate(); 21698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams AllocationAdapter aa = new AllocationAdapter(0, rs, a); 21798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedLOD = true; 21898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedFace = true; 21998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedY = true; 22098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedZ = true; 22198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.initLOD(0); 22298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams return aa; 22398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 22498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 22598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams static public AllocationAdapter create2D(RenderScript rs, Allocation a) { 22698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams android.util.Log.e("rs", "create2d " + a); 22798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams rs.validate(); 22898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams AllocationAdapter aa = new AllocationAdapter(0, rs, a); 22998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedLOD = true; 23098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedFace = true; 23198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedY = false; 23298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.mConstrainedZ = true; 23398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams aa.initLOD(0); 23498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams return aa; 23598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 23698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 23798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 23898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams /** 23998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Override the Allocation resize. Resizing adapters is not 24098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * allowed and will throw a RSInvalidStateException. 24198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 24298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * @param dimX ignored. 24398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 24498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public synchronized void resize(int dimX) { 24598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSInvalidStateException("Resize not allowed for Adapters."); 24698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 24798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 24898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams} 24998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 25098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 251