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/** 32d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 333aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * The Graphics derivitive of Renderscript. Extends the basic context to add a 3427676fe24be7444a174c15df476e49adc5335d03Jason Sams * root script which is the display window for graphical output. When the 3527676fe24be7444a174c15df476e49adc5335d03Jason Sams * system needs to update the display the currently bound root script will be 3627676fe24be7444a174c15df476e49adc5335d03Jason Sams * called. This script is expected to issue the rendering commands to repaint 3727676fe24be7444a174c15df476e49adc5335d03Jason Sams * the screen. 383aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * 393aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <div class="special reference"> 403aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <h3>Developer Guides</h3> 413aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <p>For more information about creating an application that uses Renderscript, read the 423aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <a href="{@docRoot}guide/topics/graphics/renderscript.html">Renderscript</a> developer guide.</p> 433aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * </div> 44704ff64b099406bb328898a7443921f22dbffd6dJason Sams **/ 45704ff64b099406bb328898a7443921f22dbffd6dJason Samspublic class RenderScriptGL extends RenderScript { 46704ff64b099406bb328898a7443921f22dbffd6dJason Sams int mWidth; 47704ff64b099406bb328898a7443921f22dbffd6dJason Sams int mHeight; 48704ff64b099406bb328898a7443921f22dbffd6dJason Sams 499c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 50d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 5127676fe24be7444a174c15df476e49adc5335d03Jason Sams * Class which is used to describe a pixel format for a graphical buffer. 5227676fe24be7444a174c15df476e49adc5335d03Jason Sams * This is used to describe the intended format of the display surface. 5327676fe24be7444a174c15df476e49adc5335d03Jason Sams * 54bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * The configuration is described by pairs of minimum and preferred bit 55bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * depths for each component within the config and additional structural 56bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * information. 5727676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 582222aa90031604e9752ebc2909303a84139b8b18Jason Sams public static class SurfaceConfig { 592222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mDepthMin = 0; 602222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mDepthPref = 0; 612222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mStencilMin = 0; 622222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mStencilPref = 0; 632222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mColorMin = 8; 642222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mColorPref = 8; 652222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mAlphaMin = 0; 662222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mAlphaPref = 0; 672222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mSamplesMin = 1; 682222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mSamplesPref = 1; 692222aa90031604e9752ebc2909303a84139b8b18Jason Sams float mSamplesQ = 1.f; 702222aa90031604e9752ebc2909303a84139b8b18Jason Sams 71d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 72d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 73d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 742222aa90031604e9752ebc2909303a84139b8b18Jason Sams public SurfaceConfig() { 752222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 762222aa90031604e9752ebc2909303a84139b8b18Jason Sams 77d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 78d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 79d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 802222aa90031604e9752ebc2909303a84139b8b18Jason Sams public SurfaceConfig(SurfaceConfig sc) { 812222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthMin = sc.mDepthMin; 822222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthPref = sc.mDepthPref; 832222aa90031604e9752ebc2909303a84139b8b18Jason Sams mStencilMin = sc.mStencilMin; 842222aa90031604e9752ebc2909303a84139b8b18Jason Sams mStencilPref = sc.mStencilPref; 852222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorMin = sc.mColorMin; 862222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorPref = sc.mColorPref; 872222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaMin = sc.mAlphaMin; 882222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaPref = sc.mAlphaPref; 892222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesMin = sc.mSamplesMin; 902222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesPref = sc.mSamplesPref; 912222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesQ = sc.mSamplesQ; 922222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 932222aa90031604e9752ebc2909303a84139b8b18Jason Sams 942222aa90031604e9752ebc2909303a84139b8b18Jason Sams private void validateRange(int umin, int upref, int rmin, int rmax) { 952222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (umin < rmin || umin > rmax) { 96c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSIllegalArgumentException("Minimum value provided out of range."); 972222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 982222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (upref < umin) { 99bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams throw new RSIllegalArgumentException("preferred must be >= Minimum."); 1002222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1012222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1022222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1039c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 104d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 105bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the per-component bit depth for color (red, green, blue). This 106bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * configures the surface for an unsigned integer buffer type. 107bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 108bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 109bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 110bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 111bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setColor(int minimum, int preferred) { 112bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 5, 8); 1132222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorMin = minimum; 114bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mColorPref = preferred; 1152222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 116bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1179c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 118d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 119bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the bit depth for alpha. This configures the surface for 120bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * an unsigned integer buffer type. 121bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 122bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 123bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 124bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 125bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setAlpha(int minimum, int preferred) { 126bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 0, 8); 1272222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaMin = minimum; 128bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mAlphaPref = preferred; 1292222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 130bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1319c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 132d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 133bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the bit depth for the depth buffer. This configures the 134bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * surface for an unsigned integer buffer type. If a minimum of 0 135bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * is specified then its possible no depth buffer will be 136bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * allocated. 137bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 138bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 139bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 140bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 141bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setDepth(int minimum, int preferred) { 142bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 0, 24); 1432222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthMin = minimum; 144bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mDepthPref = preferred; 1452222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 146bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1479c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 148d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 149bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Configure the multisample rendering. 150bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 151bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum The required number of samples, must be at least 1. 152bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred The targe number of samples, must be at least 153bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * minimum 154bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param Q The quality of samples, range 0-1. Used to decide between 155bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * different formats which have the same number of samples but 156bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * different rendering quality. 157bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 158bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setSamples(int minimum, int preferred, float Q) { 159bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 1, 32); 1602222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (Q < 0.0f || Q > 1.0f) { 161c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSIllegalArgumentException("Quality out of 0-1 range."); 1622222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1632222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesMin = minimum; 164bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mSamplesPref = preferred; 1652222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesQ = Q; 1662222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1672222aa90031604e9752ebc2909303a84139b8b18Jason Sams }; 1682222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1692222aa90031604e9752ebc2909303a84139b8b18Jason Sams SurfaceConfig mSurfaceConfig; 1702222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1719c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 172d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 173bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Construct a new RenderScriptGL context. 174bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 1756b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * @param ctx The context. 1768cecbb5293f73e3f63f2601dda68016762c58a0cStephen Hines * @param sc The desired format of the primary rendering surface. 177bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1786b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao public RenderScriptGL(Context ctx, SurfaceConfig sc) { 1796b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao super(ctx); 1802222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSurfaceConfig = new SurfaceConfig(sc); 1812222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1821a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams int sdkVersion = ctx.getApplicationInfo().targetSdkVersion; 1834382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines 184704ff64b099406bb328898a7443921f22dbffd6dJason Sams mWidth = 0; 185704ff64b099406bb328898a7443921f22dbffd6dJason Sams mHeight = 0; 186704ff64b099406bb328898a7443921f22dbffd6dJason Sams mDev = nDeviceCreate(); 1872c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int dpi = ctx.getResources().getDisplayMetrics().densityDpi; 1884382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines mContext = nContextCreateGL(mDev, 0, sdkVersion, 18911c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mColorMin, mSurfaceConfig.mColorPref, 19011c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mAlphaMin, mSurfaceConfig.mAlphaPref, 19111c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mDepthMin, mSurfaceConfig.mDepthPref, 19211c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mStencilMin, mSurfaceConfig.mStencilPref, 19311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mSamplesMin, mSurfaceConfig.mSamplesPref, 1942c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk mSurfaceConfig.mSamplesQ, dpi); 195d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams if (mContext == 0) { 196d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams throw new RSDriverException("Failed to create RS context."); 197d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams } 198704ff64b099406bb328898a7443921f22dbffd6dJason Sams mMessageThread = new MessageThread(this); 199704ff64b099406bb328898a7443921f22dbffd6dJason Sams mMessageThread.start(); 200704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 201704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2029c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 203d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 204bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Bind an os surface 205bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 206bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 207bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param w 208bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param h 209bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param sur 210bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 211bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setSurface(SurfaceHolder sur, int w, int h) { 212bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validate(); 213faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams Surface s = null; 214bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams if (sur != null) { 215faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams s = sur.getSurface(); 216bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 217704ff64b099406bb328898a7443921f22dbffd6dJason Sams mWidth = w; 218704ff64b099406bb328898a7443921f22dbffd6dJason Sams mHeight = h; 219faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams nContextSetSurface(w, h, s); 220faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 221faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 2229c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 223e619de6a4e4326b7662b523ea2f403801291d432Jason Sams * @deprecated in API 16 224faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * Bind an os surface 225faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * 226faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param w 227faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param h 228faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param sur 229faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams */ 230faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams public void setSurfaceTexture(SurfaceTexture sur, int w, int h) { 231faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams validate(); 232faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams //android.util.Log.v("rs", "set surface " + sur + " w=" + w + ", h=" + h); 233faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 234faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams mWidth = w; 235faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams mHeight = h; 236faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams nContextSetSurfaceTexture(w, h, sur); 237704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 238704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2399c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 240d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 241bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * return the height of the last set surface. 242bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 243bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return int 244bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 2455585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams public int getHeight() { 2465585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams return mHeight; 2475585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams } 2485585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams 2499c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 250d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 251bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * return the width of the last set surface. 252bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 253bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return int 254bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 2555585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams public int getWidth() { 2565585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams return mWidth; 2575585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams } 258704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2599c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 260d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 261bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Temporarly halt calls to the root rendering script. 262bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 263bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 264bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void pause() { 265704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 266704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextPause(); 267704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 268704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2699c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 270d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 271bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Resume calls to the root rendering script. 272bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 273bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 274bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void resume() { 275704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 276704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextResume(); 277704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 278704ff64b099406bb328898a7443921f22dbffd6dJason Sams 279704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2809c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 281d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 282bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the script to handle calls to render the primary surface. 283bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 284bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param s Graphics script to process rendering requests. 285bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 286bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindRootScript(Script s) { 287704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 288704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindRootScript(safeID(s)); 289704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 290704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2919c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 292d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 293bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramStore object seen as the parent state by the root 294bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * rendering script. 295bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 296bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 297bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 298bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramStore(ProgramStore p) { 299704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 30054db59c3594e887a412a24713fc3daa1c2404593Jason Sams nContextBindProgramStore(safeID(p)); 301704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 302704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3039c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 304d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 305bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramFragment object seen as the parent state by the 306bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 307bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 308bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 309bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 310bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramFragment(ProgramFragment p) { 311704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 312704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindProgramFragment(safeID(p)); 313704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 314704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3159c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 316d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 317bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramRaster object seen as the parent state by the 318bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 319bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 320bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 321bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 322bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramRaster(ProgramRaster p) { 323704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 324704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindProgramRaster(safeID(p)); 325704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 326704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3279c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 328d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 329bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramVertex object seen as the parent state by the 330bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 331bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 332bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 333bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 334bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramVertex(ProgramVertex p) { 335704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 336704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextBindProgramVertex(safeID(p)); 337704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 338704ff64b099406bb328898a7443921f22dbffd6dJason Sams 339704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 340