checkpoint pragma support.  Includes more cleanup of script enviroment storage to keep the env settings in the base and only the per language state in ScriptC.
diff --git a/rsScriptC.cpp b/rsScriptC.cpp
index 91b743c..49d7872 100644
--- a/rsScriptC.cpp
+++ b/rsScriptC.cpp
@@ -434,6 +434,136 @@
     accScriptSource(mAccScript, 1, scriptSource, scriptLength);
     accCompileScript(mAccScript);
     accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mProgram.mScript);
+    rsAssert(mProgram.mScript);
+
+    if (mProgram.mScript) {
+        const static int pragmaMax = 16;
+        ACCsizei pragmaCount;
+        ACCchar * str[pragmaMax];
+        accGetPragmas(mAccScript, &pragmaCount, pragmaMax, &str[0]);
+
+        // Start with defaults
+        mEnviroment.mStateVertex = 
+            Script::Enviroment_t::VTX_ORTHO_WINDOW;
+        mEnviroment.mStateRaster = 
+            Script::Enviroment_t::RASTER_FLAT;
+        mEnviroment.mStateFragment = 
+            Script::Enviroment_t::FRAGMENT_COLOR;
+        mEnviroment.mStateFragmentStore = 
+            Script::Enviroment_t::FRAGMENT_STORE_ALWAYS_REPLACE;
+
+        for (int ct=0; ct < pragmaCount; ct+=2) {
+            LOGE("pragma %i %s %s", ct, str[ct], str[ct+1]);
+
+            if (!strcmp(str[ct], "version")) {
+                continue;
+
+            }
+
+
+            if (!strcmp(str[ct], "stateVertex")) {
+                if (!strcmp(str[ct+1], "orthoWindow")) {
+                    mEnviroment.mStateVertex = 
+                        Script::Enviroment_t::VTX_ORTHO_WINDOW;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "orthoNormalized")) {
+                    mEnviroment.mStateVertex = 
+                        Script::Enviroment_t::VTX_ORTHO_NORMALIZED;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "projection")) {
+                    mEnviroment.mStateVertex = 
+                        Script::Enviroment_t::VTX_PROJECTION;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "parent")) {
+                    mEnviroment.mStateVertex = 
+                        Script::Enviroment_t::VTX_PARENT;
+                    continue;
+                }
+                LOGE("Unreconized value %s passed to stateVertex", str[ct+1]);
+            }
+
+            if (!strcmp(str[ct], "stateRaster")) {
+                if (!strcmp(str[ct+1], "flat")) {
+                    mEnviroment.mStateRaster = 
+                        Script::Enviroment_t::RASTER_FLAT;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "smooth")) {
+                    mEnviroment.mStateRaster = 
+                        Script::Enviroment_t::RASTER_SMOOTH;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "parent")) {
+                    mEnviroment.mStateRaster = 
+                        Script::Enviroment_t::RASTER_PARENT;
+                    continue;
+                }
+                LOGE("Unreconized value %s passed to stateRaster", str[ct+1]);
+            }
+
+            if (!strcmp(str[ct], "stateFragment")) {
+                if (!strcmp(str[ct+1], "color")) {
+                    mEnviroment.mStateFragment = 
+                        Script::Enviroment_t::FRAGMENT_COLOR;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "texReplace")) {
+                    mEnviroment.mStateFragment = 
+                        Script::Enviroment_t::FRAGMENT_TEX_REPLACE;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "texModulate")) {
+                    mEnviroment.mStateFragment = 
+                        Script::Enviroment_t::FRAGMENT_TEX_MODULATE;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "parent")) {
+                    mEnviroment.mStateFragment = 
+                        Script::Enviroment_t::FRAGMENT_PARENT;
+                    continue;
+                }
+                LOGE("Unreconized value %s passed to stateFragment", str[ct+1]);
+            }
+
+            if (!strcmp(str[ct], "stateFragmentStore")) {
+                if (!strcmp(str[ct+1], "alwaysReplace")) {
+                    mEnviroment.mStateFragmentStore = 
+                        Script::Enviroment_t::FRAGMENT_STORE_ALWAYS_REPLACE;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "alwaysBlend")) {
+                    mEnviroment.mStateFragmentStore = 
+                        Script::Enviroment_t::FRAGMENT_STORE_ALWAYS_BLEND;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "depthLessReplace")) {
+                    mEnviroment.mStateFragmentStore = 
+                        Script::Enviroment_t::FRAGMENT_STORE_DEPTH_LESS_REPLACE;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "depthLessBlend")) {
+                    mEnviroment.mStateFragmentStore = 
+                        Script::Enviroment_t::FRAGMENT_STORE_DEPTH_LESS_BLEND;
+                    continue;
+                }
+                if (!strcmp(str[ct+1], "parent")) {
+                    mEnviroment.mStateFragmentStore = 
+                        Script::Enviroment_t::FRAGMENT_STORE_PARENT;
+                    continue;
+                }
+                LOGE("Unreconized value %s passed to stateFragmentStore", str[ct+1]);
+            }
+
+        }
+
+            
+    } else {
+        // Deal with an error.
+    }
+
 }
 
 namespace android {
@@ -511,6 +641,7 @@
     s->mEnviroment = ss->mEnviroment;
     s->mProgram = ss->mProgram;
     ss->clear();
+
     return s;
 }