Error checking for MVP matrix computation.
Fixing more padding bugs.

Change-Id: Ic5d4260027b7dc86a50fdab7221c7296c7d3ea0d
diff --git a/rsProgramVertex.cpp b/rsProgramVertex.cpp
index c3ef356..918625c 100644
--- a/rsProgramVertex.cpp
+++ b/rsProgramVertex.cpp
@@ -108,6 +108,11 @@
     rsc->checkError("ProgramVertex::setupGL2 start");
 
     if(!isUserProgram()) {
+        if(mConstants[0].get() == NULL) {
+            LOGE("Unable to set fixed function emulation matrices because allocation is missing");
+            rsc->setError(RS_ERROR_BAD_SHADER, "Fixed function allocation missing");
+            return;
+        }
         float *f = static_cast<float *>(mConstants[0]->getPtr());
         Matrix mvp;
         mvp.load(&f[RS_PROGRAM_VERTEX_PROJECTION_OFFSET]);
diff --git a/rsVertexArray.cpp b/rsVertexArray.cpp
index 075a70d..16be5ea 100644
--- a/rsVertexArray.cpp
+++ b/rsVertexArray.cpp
@@ -84,6 +84,10 @@
 
 void VertexArray::add(const Attrib &a, uint32_t stride)
 {
+    // Skip padding
+    if(a.name[0] == '#') {
+        return;
+    }
     rsAssert(mCount < RS_MAX_ATTRIBS);
     mAttribs[mCount].set(a);
     mAttribs[mCount].buffer = mActiveBuffer;
@@ -94,6 +98,10 @@
 
 void VertexArray::add(uint32_t type, uint32_t size, uint32_t stride, bool normalized, uint32_t offset, const char *name)
 {
+    // Skip padding
+    if(name[0] == '#') {
+        return;
+    }
     rsAssert(mCount < RS_MAX_ATTRIBS);
     mAttribs[mCount].clear();
     mAttribs[mCount].type = type;
@@ -129,12 +137,7 @@
 
     rsc->checkError("VertexArray::setupGL2 disabled");
     for (uint32_t ct=0; ct < mCount; ct++) {
-        int32_t slot = 0;
-
-        if (mAttribs[ct].name[0] == '#') {
-            continue;
-        }
-
+        int32_t slot = -1;
         if (sc->isUserVertexProgram()) {
             slot = sc->vtxAttribSlot(ct);
         } else {
@@ -146,14 +149,11 @@
                 slot = 2;
             } else if (mAttribs[ct].name == "texture0") {
                 slot = 3;
-            } else {
-                continue;
             }
         }
         if(slot < 0) {
             continue;
         }
-
         //logAttrib(ct, slot);
         glEnableVertexAttribArray(slot);
         glBindBuffer(GL_ARRAY_BUFFER, mAttribs[ct].buffer);