Moved all the rendering code to the new shader generator.

The generator supports features that are not yet implement in the
renderer: color matrix, lighting, porterduff color blending and
composite shaders.

This change also adds support for repeated/mirrored non-power of 2
bitmap shaders.

Change-Id: I903a11a070c0eb9cc8850a60ef305751e5b47234
diff --git a/libs/hwui/Program.h b/libs/hwui/Program.h
index 2cdd905..6531c74 100644
--- a/libs/hwui/Program.h
+++ b/libs/hwui/Program.h
@@ -21,7 +21,6 @@
 #include <GLES2/gl2ext.h>
 
 #include <utils/KeyedVector.h>
-#include <utils/RefBase.h>
 
 #include "Matrix.h"
 
@@ -32,7 +31,7 @@
  * A program holds a vertex and a fragment shader. It offers several utility
  * methods to query attributes and uniforms.
  */
-class Program: public LightRefBase<Program> {
+class Program {
 public:
     /**
      * Creates a new program with the specified vertex and fragment
@@ -70,6 +69,28 @@
         return mUse;
     }
 
+    /**
+     * Binds the program with the specified projection, modelView and
+     * transform matrices.
+     */
+    void set(const mat4& projectionMatrix, const mat4& modelViewMatrix,
+             const mat4& transformMatrix);
+
+    /**
+     * Name of the position attribute.
+     */
+    int position;
+
+    /**
+     * Name of the color uniform.
+     */
+    int color;
+
+    /**
+     * Name of the transform uniform.
+     */
+    int transform;
+
 protected:
     /**
      * Adds an attribute with the specified name.
@@ -107,146 +128,6 @@
     bool mUse;
 }; // class Program
 
-/**
- * Program used to draw vertices with a simple color. The shaders must
- * specify the following attributes:
- *      vec4 position, position of the vertex
- *      vec4 color, RGBA color of the vertex
- *
- * And the following uniforms:
- *      mat4 projection, the projection matrix
- *      mat4 modelView, the modelView matrix
- *      mat4 transform, an extra transformation matrix
- */
-class DrawColorProgram: public Program {
-public:
-    DrawColorProgram();
-    DrawColorProgram(const char* vertex, const char* fragment);
-
-    /**
-     * Binds the program with the specified projection, modelView and
-     * transform matrices.
-     */
-    void set(const mat4& projectionMatrix, const mat4& modelViewMatrix,
-             const mat4& transformMatrix);
-
-    /**
-     * Binds this program to the GL context.
-     */
-    virtual void use();
-
-    /**
-     * Marks this program as unused. This will not unbind
-     * the program from the GL context.
-     */
-    virtual void remove();
-
-    /**
-     * Name of the position attribute.
-     */
-    int position;
-
-    /**
-     * Name of the texture coordinates attribute.
-     */
-    int texCoords;
-
-    /**
-     * Name of the color uniform.
-     */
-    int color;
-
-    /**
-     * Name of the transform uniform.
-     */
-    int transform;
-
-protected:
-    void getAttribsAndUniforms();
-};
-
-/**
- * Program used to draw textured vertices. In addition to everything that the
- * DrawColorProgram supports, the following two attributes must be specified:
- *      sampler2D sampler, the texture sampler
- *      vec2 texCoords, the texture coordinates of the vertex
- */
-class DrawTextureProgram: public DrawColorProgram {
-public:
-    DrawTextureProgram();
-    DrawTextureProgram(const char* vertex, const char* fragment);
-
-    /**
-     * Binds this program to the GL context.
-     */
-    virtual void use();
-
-    /**
-     * Marks this program as unused. This will not unbind
-     * the program from the GL context.
-     */
-    virtual void remove();
-
-    /**
-     * Name of the texture sampler uniform.
-     */
-    int sampler;
-};
-
-class DrawTextProgram: public DrawTextureProgram {
-public:
-    DrawTextProgram();
-};
-
-/**
- * Program used to draw linear gradients. In addition to everything that the
- * DrawColorProgram supports, the following two attributes must be specified:
- *      vec2 gradient, the vector describing the linear gradient
- *      float gradientLength, the invert of the magnitude of the gradient vector
- *      sampler2D sampler, the texture sampler
- */
-class DrawLinearGradientProgram: public DrawColorProgram {
-public:
-    DrawLinearGradientProgram();
-
-    /**
-     * Binds this program to the GL context.
-     */
-    virtual void use();
-
-    /**
-     * Marks this program as unused. This will not unbind
-     * the program from the GL context.
-     */
-    virtual void remove();
-
-    /**
-     * Name of the matrix used to compute the screen space coordinates
-     * of the vertices.
-     */
-    int screenSpace;
-
-    /**
-     * Name of the linear gradient start point.
-     */
-    int start;
-
-    /**
-     * Name of the linear gradient vector.
-     */
-    int gradient;
-
-    /**
-     * Name of the inverse of linear gradient vector's magnitude.
-     */
-    int gradientLength;
-
-    /**
-     * Name of the texture sampler uniform.
-     */
-    int sampler;
-};
-
 }; // namespace uirenderer
 }; // namespace android