1704ff64b099406bb328898a7443921f22dbffd6dJason Sams/* 2704ff64b099406bb328898a7443921f22dbffd6dJason Sams * Copyright (C) 2008 The Android Open Source Project 3704ff64b099406bb328898a7443921f22dbffd6dJason Sams * 4704ff64b099406bb328898a7443921f22dbffd6dJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5704ff64b099406bb328898a7443921f22dbffd6dJason Sams * you may not use this file except in compliance with the License. 6704ff64b099406bb328898a7443921f22dbffd6dJason Sams * You may obtain a copy of the License at 7704ff64b099406bb328898a7443921f22dbffd6dJason Sams * 8704ff64b099406bb328898a7443921f22dbffd6dJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9704ff64b099406bb328898a7443921f22dbffd6dJason Sams * 10704ff64b099406bb328898a7443921f22dbffd6dJason Sams * Unless required by applicable law or agreed to in writing, software 11704ff64b099406bb328898a7443921f22dbffd6dJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12704ff64b099406bb328898a7443921f22dbffd6dJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13704ff64b099406bb328898a7443921f22dbffd6dJason Sams * See the License for the specific language governing permissions and 14704ff64b099406bb328898a7443921f22dbffd6dJason Sams * limitations under the License. 15704ff64b099406bb328898a7443921f22dbffd6dJason Sams */ 16704ff64b099406bb328898a7443921f22dbffd6dJason Sams 17704ff64b099406bb328898a7443921f22dbffd6dJason Samspackage android.renderscript; 18704ff64b099406bb328898a7443921f22dbffd6dJason Sams 19704ff64b099406bb328898a7443921f22dbffd6dJason Samsimport java.lang.reflect.Field; 20704ff64b099406bb328898a7443921f22dbffd6dJason Sams 216b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liaoimport android.content.Context; 2211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Samsimport android.graphics.PixelFormat; 23704ff64b099406bb328898a7443921f22dbffd6dJason Samsimport android.graphics.Bitmap; 24704ff64b099406bb328898a7443921f22dbffd6dJason Samsimport android.graphics.BitmapFactory; 25faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Samsimport android.graphics.SurfaceTexture; 26704ff64b099406bb328898a7443921f22dbffd6dJason Samsimport android.util.Log; 27704ff64b099406bb328898a7443921f22dbffd6dJason Samsimport android.view.Surface; 282222aa90031604e9752ebc2909303a84139b8b18Jason Samsimport android.view.SurfaceHolder; 292222aa90031604e9752ebc2909303a84139b8b18Jason Samsimport android.view.SurfaceView; 30704ff64b099406bb328898a7443921f22dbffd6dJason Sams 319c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 32a90842283e322b1210e2bea5850b05177e3d87afTim Murray * @hide 33d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 34c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * The Graphics derivitive of RenderScript. Extends the basic context to add a 3527676fe24be7444a174c15df476e49adc5335d03Jason Sams * root script which is the display window for graphical output. When the 3627676fe24be7444a174c15df476e49adc5335d03Jason Sams * system needs to update the display the currently bound root script will be 3727676fe24be7444a174c15df476e49adc5335d03Jason Sams * called. This script is expected to issue the rendering commands to repaint 3827676fe24be7444a174c15df476e49adc5335d03Jason Sams * the screen. 393aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * 403aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <div class="special reference"> 413aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <h3>Developer Guides</h3> 42c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * <p>For more information about creating an application that uses RenderScript, read the 43c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p> 443aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * </div> 45704ff64b099406bb328898a7443921f22dbffd6dJason Sams **/ 46704ff64b099406bb328898a7443921f22dbffd6dJason Samspublic class RenderScriptGL extends RenderScript { 47704ff64b099406bb328898a7443921f22dbffd6dJason Sams int mWidth; 48704ff64b099406bb328898a7443921f22dbffd6dJason Sams int mHeight; 49704ff64b099406bb328898a7443921f22dbffd6dJason Sams 509c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 51d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 5227676fe24be7444a174c15df476e49adc5335d03Jason Sams * Class which is used to describe a pixel format for a graphical buffer. 5327676fe24be7444a174c15df476e49adc5335d03Jason Sams * This is used to describe the intended format of the display surface. 5427676fe24be7444a174c15df476e49adc5335d03Jason Sams * 55bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * The configuration is described by pairs of minimum and preferred bit 56bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * depths for each component within the config and additional structural 57bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * information. 5827676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 592222aa90031604e9752ebc2909303a84139b8b18Jason Sams public static class SurfaceConfig { 602222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mDepthMin = 0; 612222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mDepthPref = 0; 622222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mStencilMin = 0; 632222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mStencilPref = 0; 642222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mColorMin = 8; 652222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mColorPref = 8; 662222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mAlphaMin = 0; 672222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mAlphaPref = 0; 682222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mSamplesMin = 1; 692222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mSamplesPref = 1; 702222aa90031604e9752ebc2909303a84139b8b18Jason Sams float mSamplesQ = 1.f; 712222aa90031604e9752ebc2909303a84139b8b18Jason Sams 72d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 73d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 74d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 752222aa90031604e9752ebc2909303a84139b8b18Jason Sams public SurfaceConfig() { 762222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 772222aa90031604e9752ebc2909303a84139b8b18Jason Sams 78d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 79d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 80d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 812222aa90031604e9752ebc2909303a84139b8b18Jason Sams public SurfaceConfig(SurfaceConfig sc) { 822222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthMin = sc.mDepthMin; 832222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthPref = sc.mDepthPref; 842222aa90031604e9752ebc2909303a84139b8b18Jason Sams mStencilMin = sc.mStencilMin; 852222aa90031604e9752ebc2909303a84139b8b18Jason Sams mStencilPref = sc.mStencilPref; 862222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorMin = sc.mColorMin; 872222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorPref = sc.mColorPref; 882222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaMin = sc.mAlphaMin; 892222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaPref = sc.mAlphaPref; 902222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesMin = sc.mSamplesMin; 912222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesPref = sc.mSamplesPref; 922222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesQ = sc.mSamplesQ; 932222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 942222aa90031604e9752ebc2909303a84139b8b18Jason Sams 952222aa90031604e9752ebc2909303a84139b8b18Jason Sams private void validateRange(int umin, int upref, int rmin, int rmax) { 962222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (umin < rmin || umin > rmax) { 97c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSIllegalArgumentException("Minimum value provided out of range."); 982222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 992222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (upref < umin) { 100bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams throw new RSIllegalArgumentException("preferred must be >= Minimum."); 1012222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1022222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1032222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1049c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 105d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 106bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the per-component bit depth for color (red, green, blue). This 107bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * configures the surface for an unsigned integer buffer type. 108bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 109bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 110bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 111bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 112bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setColor(int minimum, int preferred) { 113bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 5, 8); 1142222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorMin = minimum; 115bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mColorPref = preferred; 1162222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 117bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1189c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 119d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 120bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the bit depth for alpha. This configures the surface for 121bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * an unsigned integer buffer type. 122bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 123bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 124bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 125bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 126bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setAlpha(int minimum, int preferred) { 127bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 0, 8); 1282222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaMin = minimum; 129bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mAlphaPref = preferred; 1302222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 131bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1329c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 133d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 134bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the bit depth for the depth buffer. This configures the 135bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * surface for an unsigned integer buffer type. If a minimum of 0 136bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * is specified then its possible no depth buffer will be 137bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * allocated. 138bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 139bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 140bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 141bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 142bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setDepth(int minimum, int preferred) { 143bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 0, 24); 1442222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthMin = minimum; 145bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mDepthPref = preferred; 1462222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 147bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1489c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 149d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 150bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Configure the multisample rendering. 151bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 152bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum The required number of samples, must be at least 1. 153bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred The targe number of samples, must be at least 154bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * minimum 155bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param Q The quality of samples, range 0-1. Used to decide between 156bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * different formats which have the same number of samples but 157bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * different rendering quality. 158bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 159bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setSamples(int minimum, int preferred, float Q) { 160bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 1, 32); 1612222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (Q < 0.0f || Q > 1.0f) { 162c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSIllegalArgumentException("Quality out of 0-1 range."); 1632222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1642222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesMin = minimum; 165bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mSamplesPref = preferred; 1662222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesQ = Q; 1672222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1682222aa90031604e9752ebc2909303a84139b8b18Jason Sams }; 1692222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1702222aa90031604e9752ebc2909303a84139b8b18Jason Sams SurfaceConfig mSurfaceConfig; 1712222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1729c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 173d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 174bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Construct a new RenderScriptGL context. 175bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 1766b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * @param ctx The context. 1778cecbb5293f73e3f63f2601dda68016762c58a0cStephen Hines * @param sc The desired format of the primary rendering surface. 178bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1796b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao public RenderScriptGL(Context ctx, SurfaceConfig sc) { 1806b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao super(ctx); 1812222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSurfaceConfig = new SurfaceConfig(sc); 1822222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1831a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams int sdkVersion = ctx.getApplicationInfo().targetSdkVersion; 1844382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines 185704ff64b099406bb328898a7443921f22dbffd6dJason Sams mWidth = 0; 186704ff64b099406bb328898a7443921f22dbffd6dJason Sams mHeight = 0; 187704ff64b099406bb328898a7443921f22dbffd6dJason Sams mDev = nDeviceCreate(); 1882c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int dpi = ctx.getResources().getDisplayMetrics().densityDpi; 1894382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines mContext = nContextCreateGL(mDev, 0, sdkVersion, 19011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mColorMin, mSurfaceConfig.mColorPref, 19111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mAlphaMin, mSurfaceConfig.mAlphaPref, 19211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mDepthMin, mSurfaceConfig.mDepthPref, 19311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mStencilMin, mSurfaceConfig.mStencilPref, 19411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mSamplesMin, mSurfaceConfig.mSamplesPref, 1952c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk mSurfaceConfig.mSamplesQ, dpi); 196d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams if (mContext == 0) { 197d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams throw new RSDriverException("Failed to create RS context."); 198d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams } 199704ff64b099406bb328898a7443921f22dbffd6dJason Sams mMessageThread = new MessageThread(this); 200704ff64b099406bb328898a7443921f22dbffd6dJason Sams mMessageThread.start(); 201704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 202704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2039c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 204d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 205bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Bind an os surface 206bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 207bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 208bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param w 209bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param h 210bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param sur 211bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 212bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setSurface(SurfaceHolder sur, int w, int h) { 213bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validate(); 214faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams Surface s = null; 215bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams if (sur != null) { 216faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams s = sur.getSurface(); 217bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 218704ff64b099406bb328898a7443921f22dbffd6dJason Sams mWidth = w; 219704ff64b099406bb328898a7443921f22dbffd6dJason Sams mHeight = h; 220faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams nContextSetSurface(w, h, s); 221faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 222faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 2239c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 224e619de6a4e4326b7662b523ea2f403801291d432Jason Sams * @deprecated in API 16 225faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * Bind an os surface 226faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * 227faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param w 228faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param h 229faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param sur 230faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams */ 231faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams public void setSurfaceTexture(SurfaceTexture sur, int w, int h) { 232faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams validate(); 233faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams //android.util.Log.v("rs", "set surface " + sur + " w=" + w + ", h=" + h); 234faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 235faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams mWidth = w; 236faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams mHeight = h; 237faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams nContextSetSurfaceTexture(w, h, sur); 238704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 239704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2409c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 241d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 242bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * return the height of the last set surface. 243bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 244bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return int 245bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 2465585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams public int getHeight() { 2475585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams return mHeight; 2485585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams } 2495585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams 2509c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 251d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 252bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * return the width of the last set surface. 253bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 254bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return int 255bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 2565585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams public int getWidth() { 2575585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams return mWidth; 2585585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams } 259704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2609c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 261d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 262bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Temporarly halt calls to the root rendering script. 263bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 264bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 265bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void pause() { 266704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 267704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextPause(); 268704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 269704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2709c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 271d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 272bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Resume calls to the root rendering script. 273bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 274bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 275bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void resume() { 276704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 277704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextResume(); 278704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 279704ff64b099406bb328898a7443921f22dbffd6dJason Sams 280704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2819c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 282d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 283bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the script to handle calls to render the primary surface. 284bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 285bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param s Graphics script to process rendering requests. 286bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 287bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindRootScript(Script s) { 288704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 289704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindRootScript(safeID(s)); 290704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 291704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2929c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 293d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 294bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramStore object seen as the parent state by the root 295bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * rendering script. 296bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 297bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 298bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 299bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramStore(ProgramStore p) { 300704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 30154db59c3594e887a412a24713fc3daa1c2404593Jason Sams nContextBindProgramStore(safeID(p)); 302704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 303704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3049c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 305d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 306bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramFragment object seen as the parent state by the 307bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 308bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 309bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 310bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 311bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramFragment(ProgramFragment p) { 312704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 313704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindProgramFragment(safeID(p)); 314704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 315704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3169c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 317d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 318bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramRaster object seen as the parent state by the 319bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 320bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 321bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 322bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 323bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramRaster(ProgramRaster p) { 324704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 325704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindProgramRaster(safeID(p)); 326704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 327704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3289c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 329d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 330bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramVertex object seen as the parent state by the 331bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 332bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 333bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 334bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 335bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramVertex(ProgramVertex p) { 336704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 337704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindProgramVertex(safeID(p)); 338704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 339704ff64b099406bb328898a7443921f22dbffd6dJason Sams 340704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 341