summaryrefslogtreecommitdiffstats
path: root/rs/java/android/renderscript/RenderScriptGL.java
diff options
context:
space:
mode:
Diffstat (limited to 'rs/java/android/renderscript/RenderScriptGL.java')
-rw-r--r--rs/java/android/renderscript/RenderScriptGL.java344
1 files changed, 344 insertions, 0 deletions
diff --git a/rs/java/android/renderscript/RenderScriptGL.java b/rs/java/android/renderscript/RenderScriptGL.java
new file mode 100644
index 0000000..d6841c8
--- /dev/null
+++ b/rs/java/android/renderscript/RenderScriptGL.java
@@ -0,0 +1,344 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+import java.lang.reflect.Field;
+
+import android.content.Context;
+import android.graphics.PixelFormat;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.SurfaceTexture;
+import android.util.Log;
+import android.view.Surface;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+/**
+ * @hide
+ * @deprecated in API 16
+ * The Graphics derivitive of RenderScript. Extends the basic context to add a
+ * root script which is the display window for graphical output. When the
+ * system needs to update the display the currently bound root script will be
+ * called. This script is expected to issue the rendering commands to repaint
+ * the screen.
+ *
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For more information about creating an application that uses RenderScript, read the
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
+ * </div>
+ **/
+public class RenderScriptGL extends RenderScript {
+ int mWidth;
+ int mHeight;
+
+ /**
+ * @deprecated in API 16
+ * Class which is used to describe a pixel format for a graphical buffer.
+ * This is used to describe the intended format of the display surface.
+ *
+ * The configuration is described by pairs of minimum and preferred bit
+ * depths for each component within the config and additional structural
+ * information.
+ */
+ public static class SurfaceConfig {
+ int mDepthMin = 0;
+ int mDepthPref = 0;
+ int mStencilMin = 0;
+ int mStencilPref = 0;
+ int mColorMin = 8;
+ int mColorPref = 8;
+ int mAlphaMin = 0;
+ int mAlphaPref = 0;
+ int mSamplesMin = 1;
+ int mSamplesPref = 1;
+ float mSamplesQ = 1.f;
+
+ /**
+ * @deprecated in API 16
+ */
+ public SurfaceConfig() {
+ }
+
+ /**
+ * @deprecated in API 16
+ */
+ public SurfaceConfig(SurfaceConfig sc) {
+ mDepthMin = sc.mDepthMin;
+ mDepthPref = sc.mDepthPref;
+ mStencilMin = sc.mStencilMin;
+ mStencilPref = sc.mStencilPref;
+ mColorMin = sc.mColorMin;
+ mColorPref = sc.mColorPref;
+ mAlphaMin = sc.mAlphaMin;
+ mAlphaPref = sc.mAlphaPref;
+ mSamplesMin = sc.mSamplesMin;
+ mSamplesPref = sc.mSamplesPref;
+ mSamplesQ = sc.mSamplesQ;
+ }
+
+ private void validateRange(int umin, int upref, int rmin, int rmax) {
+ if (umin < rmin || umin > rmax) {
+ throw new RSIllegalArgumentException("Minimum value provided out of range.");
+ }
+ if (upref < umin) {
+ throw new RSIllegalArgumentException("preferred must be >= Minimum.");
+ }
+ }
+
+ /**
+ * @deprecated in API 16
+ * Set the per-component bit depth for color (red, green, blue). This
+ * configures the surface for an unsigned integer buffer type.
+ *
+ * @param minimum
+ * @param preferred
+ */
+ public void setColor(int minimum, int preferred) {
+ validateRange(minimum, preferred, 5, 8);
+ mColorMin = minimum;
+ mColorPref = preferred;
+ }
+
+ /**
+ * @deprecated in API 16
+ * Set the bit depth for alpha. This configures the surface for
+ * an unsigned integer buffer type.
+ *
+ * @param minimum
+ * @param preferred
+ */
+ public void setAlpha(int minimum, int preferred) {
+ validateRange(minimum, preferred, 0, 8);
+ mAlphaMin = minimum;
+ mAlphaPref = preferred;
+ }
+
+ /**
+ * @deprecated in API 16
+ * Set the bit depth for the depth buffer. This configures the
+ * surface for an unsigned integer buffer type. If a minimum of 0
+ * is specified then its possible no depth buffer will be
+ * allocated.
+ *
+ * @param minimum
+ * @param preferred
+ */
+ public void setDepth(int minimum, int preferred) {
+ validateRange(minimum, preferred, 0, 24);
+ mDepthMin = minimum;
+ mDepthPref = preferred;
+ }
+
+ /**
+ * @deprecated in API 16
+ * Configure the multisample rendering.
+ *
+ * @param minimum The required number of samples, must be at least 1.
+ * @param preferred The targe number of samples, must be at least
+ * minimum
+ * @param Q The quality of samples, range 0-1. Used to decide between
+ * different formats which have the same number of samples but
+ * different rendering quality.
+ */
+ public void setSamples(int minimum, int preferred, float Q) {
+ validateRange(minimum, preferred, 1, 32);
+ if (Q < 0.0f || Q > 1.0f) {
+ throw new RSIllegalArgumentException("Quality out of 0-1 range.");
+ }
+ mSamplesMin = minimum;
+ mSamplesPref = preferred;
+ mSamplesQ = Q;
+ }
+ };
+
+ SurfaceConfig mSurfaceConfig;
+
+ /**
+ * @deprecated in API 16
+ * Construct a new RenderScriptGL context.
+ *
+ * @param ctx The context.
+ * @param sc The desired format of the primary rendering surface.
+ */
+ public RenderScriptGL(Context ctx, SurfaceConfig sc) {
+ super(ctx);
+ mSurfaceConfig = new SurfaceConfig(sc);
+
+ int sdkVersion = ctx.getApplicationInfo().targetSdkVersion;
+
+ mWidth = 0;
+ mHeight = 0;
+ mDev = nDeviceCreate();
+ int dpi = ctx.getResources().getDisplayMetrics().densityDpi;
+ mContext = nContextCreateGL(mDev, 0, sdkVersion,
+ mSurfaceConfig.mColorMin, mSurfaceConfig.mColorPref,
+ mSurfaceConfig.mAlphaMin, mSurfaceConfig.mAlphaPref,
+ mSurfaceConfig.mDepthMin, mSurfaceConfig.mDepthPref,
+ mSurfaceConfig.mStencilMin, mSurfaceConfig.mStencilPref,
+ mSurfaceConfig.mSamplesMin, mSurfaceConfig.mSamplesPref,
+ mSurfaceConfig.mSamplesQ, dpi);
+ if (mContext == 0) {
+ throw new RSDriverException("Failed to create RS context.");
+ }
+ mMessageThread = new MessageThread(this);
+ mMessageThread.start();
+ }
+
+ /**
+ * @deprecated in API 16
+ * Bind an os surface
+ *
+ *
+ * @param w
+ * @param h
+ * @param sur
+ */
+ public void setSurface(SurfaceHolder sur, int w, int h) {
+ validate();
+ Surface s = null;
+ if (sur != null) {
+ s = sur.getSurface();
+ }
+ mWidth = w;
+ mHeight = h;
+ nContextSetSurface(w, h, s);
+ }
+
+ /**
+ * @deprecated in API 16
+ * Bind an os surface
+ *
+ * @param w
+ * @param h
+ * @param sur
+ */
+ public void setSurfaceTexture(SurfaceTexture sur, int w, int h) {
+ validate();
+ //android.util.Log.v("rs", "set surface " + sur + " w=" + w + ", h=" + h);
+
+ Surface s = null;
+ if (sur != null) {
+ s = new Surface(sur);
+ }
+ mWidth = w;
+ mHeight = h;
+ nContextSetSurface(w, h, s);
+ }
+
+ /**
+ * @deprecated in API 16
+ * return the height of the last set surface.
+ *
+ * @return int
+ */
+ public int getHeight() {
+ return mHeight;
+ }
+
+ /**
+ * @deprecated in API 16
+ * return the width of the last set surface.
+ *
+ * @return int
+ */
+ public int getWidth() {
+ return mWidth;
+ }
+
+ /**
+ * @deprecated in API 16
+ * Temporarly halt calls to the root rendering script.
+ *
+ */
+ public void pause() {
+ validate();
+ nContextPause();
+ }
+
+ /**
+ * @deprecated in API 16
+ * Resume calls to the root rendering script.
+ *
+ */
+ public void resume() {
+ validate();
+ nContextResume();
+ }
+
+
+ /**
+ * @deprecated in API 16
+ * Set the script to handle calls to render the primary surface.
+ *
+ * @param s Graphics script to process rendering requests.
+ */
+ public void bindRootScript(Script s) {
+ validate();
+ nContextBindRootScript((int)safeID(s));
+ }
+
+ /**
+ * @deprecated in API 16
+ * Set the default ProgramStore object seen as the parent state by the root
+ * rendering script.
+ *
+ * @param p
+ */
+ public void bindProgramStore(ProgramStore p) {
+ validate();
+ nContextBindProgramStore((int)safeID(p));
+ }
+
+ /**
+ * @deprecated in API 16
+ * Set the default ProgramFragment object seen as the parent state by the
+ * root rendering script.
+ *
+ * @param p
+ */
+ public void bindProgramFragment(ProgramFragment p) {
+ validate();
+ nContextBindProgramFragment((int)safeID(p));
+ }
+
+ /**
+ * @deprecated in API 16
+ * Set the default ProgramRaster object seen as the parent state by the
+ * root rendering script.
+ *
+ * @param p
+ */
+ public void bindProgramRaster(ProgramRaster p) {
+ validate();
+ nContextBindProgramRaster((int)safeID(p));
+ }
+
+ /**
+ * @deprecated in API 16
+ * Set the default ProgramVertex object seen as the parent state by the
+ * root rendering script.
+ *
+ * @param p
+ */
+ public void bindProgramVertex(ProgramVertex p) {
+ validate();
+ nContextBindProgramVertex((int)safeID(p));
+ }
+
+}