diff --git a/rs.h b/rs.h
index b748849..5abc408 100644
--- a/rs.h
+++ b/rs.h
@@ -24,40 +24,115 @@
 
 extern "C" {
 // Legacy graphics functions
-RsObjectBase rsaFileA3DGetEntryByIndex(RsContext, uint32_t idx, RsFile) __DEPRECATED_IN(31);
-RsFile rsaFileA3DCreateFromMemory(RsContext, const void* data, uint32_t len) __DEPRECATED_IN(31);
-RsFile rsaFileA3DCreateFromAsset(RsContext, void* asset) __DEPRECATED_IN(31);
-RsFile rsaFileA3DCreateFromFile(RsContext, const char* path) __DEPRECATED_IN(31);
-void rsaFileA3DGetNumIndexEntries(RsContext, int32_t* numEntries, RsFile) __DEPRECATED_IN(31);
-void rsaFileA3DGetIndexEntries(RsContext, RsFileIndexEntry* fileEntries, uint32_t numEntries,
-                               RsFile) __DEPRECATED_IN(31);
+RsObjectBase rsaFileA3DGetEntryByIndex(RsContext, uint32_t idx, RsFile)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+RsFile rsaFileA3DCreateFromMemory(RsContext, const void* data, uint32_t len)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+RsFile rsaFileA3DCreateFromAsset(RsContext, void* asset) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+RsFile rsaFileA3DCreateFromFile(RsContext, const char* path) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+void rsaFileA3DGetNumIndexEntries(RsContext, int32_t* numEntries, RsFile)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+void rsaFileA3DGetIndexEntries(RsContext, RsFileIndexEntry* fileEntries,
+                               uint32_t numEntries, RsFile)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 // Mesh update functions
-void rsaMeshGetVertexBufferCount(RsContext, RsMesh, int32_t* vtxCount) __DEPRECATED_IN(31);
-void rsaMeshGetIndexCount(RsContext, RsMesh, int32_t* idxCount) __DEPRECATED_IN(31);
-void rsaMeshGetVertices(RsContext, RsMesh, RsAllocation* vtxData, uint32_t vtxDataCount)
-        __DEPRECATED_IN(31);
+void rsaMeshGetVertexBufferCount(RsContext, RsMesh, int32_t* vtxCount)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+void rsaMeshGetIndexCount(RsContext, RsMesh, int32_t* idxCount) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+void rsaMeshGetVertices(RsContext, RsMesh, RsAllocation* vtxData,
+                        uint32_t vtxDataCount)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 void rsaMeshGetIndices(RsContext, RsMesh, RsAllocation* va, uint32_t* primType,
-                       uint32_t idxDataCount) __DEPRECATED_IN(31);
-RsContext rsContextCreateGL(RsDevice dev, uint32_t version, uint32_t sdkVersion, RsSurfaceConfig sc,
-                            uint32_t dpi) __DEPRECATED_IN(31);
+                       uint32_t idxDataCount)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+RsContext rsContextCreateGL(RsDevice dev, uint32_t version, uint32_t sdkVersion,
+                            RsSurfaceConfig sc, uint32_t dpi)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
-void rsaGetName(RsContext, void* obj, const char** name) __DEPRECATED_IN(31);
+void rsaGetName(RsContext, void* obj, const char** name) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
 // Allocation update
-const void* rsaAllocationGetType(RsContext con, RsAllocation va) __DEPRECATED_IN(31);
+const void* rsaAllocationGetType(RsContext con, RsAllocation va)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 // Type update
-void rsaTypeGetNativeData(RsContext, RsType, uintptr_t* typeData, uint32_t typeDataSize)
-        __DEPRECATED_IN(31);
+void rsaTypeGetNativeData(RsContext, RsType, uintptr_t* typeData,
+                          uint32_t typeDataSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 // Element update
-void rsaElementGetNativeData(RsContext, RsElement, uintptr_t* elemData, uint32_t elemDataSize)
-        __DEPRECATED_IN(31);
-void rsaElementGetSubElements(RsContext, RsElement, uintptr_t* ids, const char** names,
-                              uint32_t* arraySizes, uint32_t dataSize) __DEPRECATED_IN(31);
+void rsaElementGetNativeData(RsContext, RsElement, uintptr_t* elemData,
+                             uint32_t elemDataSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+void rsaElementGetSubElements(RsContext, RsElement, uintptr_t* ids,
+                              const char** names, uint32_t* arraySizes,
+                              uint32_t dataSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
-RsDevice rsDeviceCreate() __DEPRECATED_IN(31);
-void rsDeviceDestroy(RsDevice dev) __DEPRECATED_IN(31);
-void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) __DEPRECATED_IN(31);
-RsContext rsContextCreate(RsDevice dev, uint32_t version, uint32_t sdkVersion, RsContextType ct,
-                          uint32_t flags) __DEPRECATED_IN(31);
+RsDevice rsDeviceCreate() __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+void rsDeviceDestroy(RsDevice dev) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+RsContext rsContextCreate(RsDevice dev, uint32_t version, uint32_t sdkVersion,
+                          RsContextType ct, uint32_t flags)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 }
 #include "rsgApiFuncDecl.h"
 
diff --git a/rsApiStubs.h b/rsApiStubs.h
index c5a36a7..70af063 100644
--- a/rsApiStubs.h
+++ b/rsApiStubs.h
@@ -20,293 +20,768 @@
 #include "rsInternalDefines.h"
 
 // Device
-extern "C" RsDevice rsDeviceCreate() __DEPRECATED_IN(31);
-extern "C" void rsDeviceDestroy(RsDevice dev) __DEPRECATED_IN(31);
-extern "C" void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) __DEPRECATED_IN(31);
+extern "C" RsDevice rsDeviceCreate() __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsDeviceDestroy(RsDevice dev) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // Context
-extern "C" RsContext rsContextCreate(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
-                                     RsContextType ct, uint32_t flags) __DEPRECATED_IN(31);
-extern "C" void rsContextDestroy(RsContext rsc) __DEPRECATED_IN(31);
-extern "C" void rsContextFinish(RsContext rsc) __DEPRECATED_IN(31);
-extern "C" void rsContextDump(RsContext rsc, int32_t bits) __DEPRECATED_IN(31);
-extern "C" void rsContextSetPriority(RsContext rsc, int32_t priority) __DEPRECATED_IN(31);
-extern "C" void rsContextDestroyWorker(RsContext rsc) __DEPRECATED_IN(31);
-extern "C" RsMessageToClientType rsContextGetMessage(RsContext rsc, void* data, size_t data_length,
-                                                     size_t* receiveLen, size_t receiveLen_length,
-                                                     uint32_t* usrID, size_t usrID_length)
-        __DEPRECATED_IN(31);
-extern "C" RsMessageToClientType rsContextPeekMessage(RsContext rsc, size_t* receiveLen,
-                                                      size_t receiveLen_length, uint32_t* usrID,
-                                                      size_t usrID_length) __DEPRECATED_IN(31);
-extern "C" void rsContextSendMessage(RsContext rsc, uint32_t id, const uint8_t* data,
-                                     size_t data_length) __DEPRECATED_IN(31);
-extern "C" void rsContextInitToClient(RsContext rsc) __DEPRECATED_IN(31);
-extern "C" void rsContextDeinitToClient(RsContext rsc) __DEPRECATED_IN(31);
-extern "C" void rsContextSetCacheDir(RsContext rsc, const char* cacheDir, size_t cacheDir_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsaContextSetNativeLibDir(RsContext con, char* libDir, size_t length)
-        __DEPRECATED_IN(31);
+extern "C" RsContext rsContextCreate(RsDevice vdev, uint32_t version,
+                                     uint32_t sdkVersion, RsContextType ct,
+                                     uint32_t flags)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextDestroy(RsContext rsc) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextFinish(RsContext rsc) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextDump(RsContext rsc, int32_t bits) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextSetPriority(RsContext rsc, int32_t priority)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextDestroyWorker(RsContext rsc) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsMessageToClientType rsContextGetMessage(
+    RsContext rsc, void* data, size_t data_length, size_t* receiveLen,
+    size_t receiveLen_length, uint32_t* usrID, size_t usrID_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsMessageToClientType rsContextPeekMessage(RsContext rsc,
+                                                      size_t* receiveLen,
+                                                      size_t receiveLen_length,
+                                                      uint32_t* usrID,
+                                                      size_t usrID_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextSendMessage(RsContext rsc, uint32_t id,
+                                     const uint8_t* data, size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextInitToClient(RsContext rsc) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextDeinitToClient(RsContext rsc) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextSetCacheDir(RsContext rsc, const char* cacheDir,
+                                     size_t cacheDir_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaContextSetNativeLibDir(RsContext con, char* libDir,
+                                          size_t length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // BaseObject
-extern "C" void rsAssignName(RsContext rsc, RsObjectBase obj, const char* name, size_t name_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsaGetName(RsContext con, void* obj, const char** name) __DEPRECATED_IN(31);
-extern "C" void rsObjDestroy(RsContext rsc, RsAsyncVoidPtr objPtr) __DEPRECATED_IN(31);
+extern "C" void rsAssignName(RsContext rsc, RsObjectBase obj, const char* name,
+                             size_t name_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaGetName(RsContext con, void* obj, const char** name)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsObjDestroy(RsContext rsc, RsAsyncVoidPtr objPtr)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // Element
-extern "C" RsElement rsElementCreate(RsContext rsc, RsDataType mType, RsDataKind mKind,
-                                     bool mNormalized, uint32_t mVectorSize) __DEPRECATED_IN(31);
-extern "C" RsElement rsElementCreate2(RsContext rsc, const RsElement* elements,
-                                      size_t elements_length, const char** names,
-                                      size_t names_length_length, const size_t* names_length,
-                                      const uint32_t* arraySize, size_t arraySize_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsaElementGetNativeData(RsContext con, RsElement elem, uint32_t* elemData,
-                                        uint32_t elemDataSize) __DEPRECATED_IN(31);
-extern "C" void rsaElementGetSubElements(RsContext con, RsElement elem, uintptr_t* ids,
-                                         const char** names, size_t* arraySizes, uint32_t dataSize)
-        __DEPRECATED_IN(31);
+extern "C" RsElement rsElementCreate(RsContext rsc, RsDataType mType,
+                                     RsDataKind mKind, bool mNormalized,
+                                     uint32_t mVectorSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsElement rsElementCreate2(
+    RsContext rsc, const RsElement* elements, size_t elements_length,
+    const char** names, size_t names_length_length, const size_t* names_length,
+    const uint32_t* arraySize, size_t arraySize_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaElementGetNativeData(RsContext con, RsElement elem,
+                                        uint32_t* elemData,
+                                        uint32_t elemDataSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaElementGetSubElements(RsContext con, RsElement elem,
+                                         uintptr_t* ids, const char** names,
+                                         size_t* arraySizes, uint32_t dataSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // Type
-extern "C" RsType rsTypeCreate(RsContext rsc, RsElement e, uint32_t dimX, uint32_t dimY,
-                               uint32_t dimZ, bool mipmaps, bool faces, uint32_t yuv)
-        __DEPRECATED_IN(31);
-extern "C" RsType rsTypeCreate2(RsContext rsc, const RsTypeCreateParams* dat, size_t dat_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsaTypeGetNativeData(RsContext con, RsType type, uintptr_t* typeData,
-                                     uint32_t typeDataSize) __DEPRECATED_IN(31);
+extern "C" RsType rsTypeCreate(RsContext rsc, RsElement e, uint32_t dimX,
+                               uint32_t dimY, uint32_t dimZ, bool mipmaps,
+                               bool faces, uint32_t yuv)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsType rsTypeCreate2(RsContext rsc, const RsTypeCreateParams* dat,
+                                size_t dat_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaTypeGetNativeData(RsContext con, RsType type,
+                                     uintptr_t* typeData, uint32_t typeDataSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // Allocation
-extern "C" RsAllocation rsAllocationCreateTyped(RsContext rsc, RsType vtype,
-                                                RsAllocationMipmapControl mipmaps, uint32_t usages,
-                                                uintptr_t ptr) __DEPRECATED_IN(31);
-extern "C" RsAllocation rsAllocationCreateFromBitmap(RsContext rsc, RsType vtype,
-                                                     RsAllocationMipmapControl mipmaps,
-                                                     const void* data, size_t data_length,
-                                                     uint32_t usages) __DEPRECATED_IN(31);
-extern "C" RsAllocation rsAllocationCubeCreateFromBitmap(RsContext rsc, RsType vtype,
-                                                         RsAllocationMipmapControl mipmaps,
-                                                         const void* data, size_t data_length,
-                                                         uint32_t usages) __DEPRECATED_IN(31);
+extern "C" RsAllocation rsAllocationCreateTyped(
+    RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps,
+    uint32_t usages, uintptr_t ptr)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsAllocation rsAllocationCreateFromBitmap(
+    RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps,
+    const void* data, size_t data_length, uint32_t usages)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsAllocation rsAllocationCubeCreateFromBitmap(
+    RsContext rsc, RsType vtype, RsAllocationMipmapControl mipmaps,
+    const void* data, size_t data_length, uint32_t usages)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 extern "C" RsAllocation rsAllocationAdapterCreate(RsContext rsc, RsType vtype,
-                                                  RsAllocation baseAlloc) __DEPRECATED_IN(31);
-extern "C" const void* rsaAllocationGetType(RsContext con, RsAllocation va) __DEPRECATED_IN(31);
-extern "C" RsNativeWindow rsAllocationGetSurface(RsContext rsc, RsAllocation alloc)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationSetupBufferQueue(RsContext rsc, RsAllocation alloc, uint32_t numAlloc)
-        __DEPRECATED_IN(31);
+                                                  RsAllocation baseAlloc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" const void* rsaAllocationGetType(RsContext con, RsAllocation va)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsNativeWindow rsAllocationGetSurface(RsContext rsc,
+                                                 RsAllocation alloc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationSetupBufferQueue(RsContext rsc, RsAllocation alloc,
+                                             uint32_t numAlloc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 extern "C" void rsAllocationShareBufferQueue(RsContext rsc, RsAllocation alloc1,
-                                             RsAllocation alloc2) __DEPRECATED_IN(31);
-extern "C" void rsAllocationSetSurface(RsContext rsc, RsAllocation alloc, RsNativeWindow sur)
-        __DEPRECATED_IN(31);
+                                             RsAllocation alloc2)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationSetSurface(RsContext rsc, RsAllocation alloc,
+                                       RsNativeWindow sur)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 extern "C" void rsAllocationAdapterOffset(RsContext rsc, RsAllocation alloc,
-                                          const uint32_t* offsets, size_t offsets_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationCopyToBitmap(RsContext rsc, RsAllocation alloc, void* data,
-                                         size_t data_length) __DEPRECATED_IN(31);
-extern "C" void* rsAllocationGetPointer(RsContext rsc, RsAllocation va, uint32_t lod,
-                                        RsAllocationCubemapFace face, uint32_t z, uint32_t array,
-                                        size_t* stride, size_t stride_length) __DEPRECATED_IN(31);
-extern "C" void rsAllocation1DData(RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod,
-                                   uint32_t count, const void* data, size_t data_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocation1DElementData(RsContext rsc, RsAllocation va, uint32_t x, uint32_t lod,
-                                          const void* data, size_t data_length, size_t comp_offset)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationElementData(RsContext rsc, RsAllocation va, uint32_t x, uint32_t y,
-                                        uint32_t z, uint32_t lod, const void* data,
-                                        size_t data_length, size_t comp_offset) __DEPRECATED_IN(31);
-extern "C" void rsAllocation2DData(RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff,
-                                   uint32_t lod, RsAllocationCubemapFace face, uint32_t w,
-                                   uint32_t h, const void* data, size_t data_length, size_t stride)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocation3DData(RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff,
-                                   uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d,
-                                   const void* data, size_t data_length, size_t stride)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationGenerateMipmaps(RsContext rsc, RsAllocation va) __DEPRECATED_IN(31);
-extern "C" void rsAllocationRead(RsContext rsc, RsAllocation va, void* data, size_t data_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocation1DRead(RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod,
-                                   uint32_t count, void* data, size_t data_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationElementRead(RsContext rsc, RsAllocation va, uint32_t x, uint32_t y,
-                                        uint32_t z, uint32_t lod, void* data, size_t data_length,
-                                        size_t comp_offset) __DEPRECATED_IN(31);
-extern "C" void rsAllocation2DRead(RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff,
-                                   uint32_t lod, RsAllocationCubemapFace face, uint32_t w,
-                                   uint32_t h, void* data, size_t data_length, size_t stride)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocation3DRead(RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t yoff,
-                                   uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d,
-                                   void* data, size_t data_length, size_t stride)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationSyncAll(RsContext rsc, RsAllocation va, RsAllocationUsageType src)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationResize1D(RsContext rsc, RsAllocation va, uint32_t dimX)
-        __DEPRECATED_IN(31);
-extern "C" void rsAllocationCopy2DRange(RsContext rsc, RsAllocation dest, uint32_t destXoff,
-                                        uint32_t destYoff, uint32_t destMip, uint32_t destFace,
-                                        uint32_t width, uint32_t height, RsAllocation src,
-                                        uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip,
-                                        uint32_t srcFace) __DEPRECATED_IN(31);
-extern "C" void rsAllocationCopy3DRange(RsContext rsc, RsAllocation dest, uint32_t destXoff,
-                                        uint32_t destYoff, uint32_t destZoff, uint32_t destMip,
-                                        uint32_t width, uint32_t height, uint32_t depth,
-                                        RsAllocation src, uint32_t srcXoff, uint32_t srcYoff,
-                                        uint32_t srcZoff, uint32_t srcMip) __DEPRECATED_IN(31);
-extern "C" void rsAllocationIoSend(RsContext rsc, RsAllocation alloc) __DEPRECATED_IN(31);
-extern "C" int64_t rsAllocationIoReceive(RsContext rsc, RsAllocation alloc) __DEPRECATED_IN(31);
+                                          const uint32_t* offsets,
+                                          size_t offsets_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationCopyToBitmap(RsContext rsc, RsAllocation alloc,
+                                         void* data, size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void* rsAllocationGetPointer(RsContext rsc, RsAllocation va,
+                                        uint32_t lod,
+                                        RsAllocationCubemapFace face,
+                                        uint32_t z, uint32_t array,
+                                        size_t* stride, size_t stride_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocation1DData(RsContext rsc, RsAllocation va,
+                                   uint32_t xoff, uint32_t lod, uint32_t count,
+                                   const void* data, size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocation1DElementData(RsContext rsc, RsAllocation va,
+                                          uint32_t x, uint32_t lod,
+                                          const void* data, size_t data_length,
+                                          size_t comp_offset)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationElementData(RsContext rsc, RsAllocation va,
+                                        uint32_t x, uint32_t y, uint32_t z,
+                                        uint32_t lod, const void* data,
+                                        size_t data_length, size_t comp_offset)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocation2DData(RsContext rsc, RsAllocation va,
+                                   uint32_t xoff, uint32_t yoff, uint32_t lod,
+                                   RsAllocationCubemapFace face, uint32_t w,
+                                   uint32_t h, const void* data,
+                                   size_t data_length, size_t stride)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocation3DData(RsContext rsc, RsAllocation va,
+                                   uint32_t xoff, uint32_t yoff, uint32_t zoff,
+                                   uint32_t lod, uint32_t w, uint32_t h,
+                                   uint32_t d, const void* data,
+                                   size_t data_length, size_t stride)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationGenerateMipmaps(RsContext rsc, RsAllocation va)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationRead(RsContext rsc, RsAllocation va, void* data,
+                                 size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocation1DRead(RsContext rsc, RsAllocation va,
+                                   uint32_t xoff, uint32_t lod, uint32_t count,
+                                   void* data, size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationElementRead(RsContext rsc, RsAllocation va,
+                                        uint32_t x, uint32_t y, uint32_t z,
+                                        uint32_t lod, void* data,
+                                        size_t data_length, size_t comp_offset)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocation2DRead(RsContext rsc, RsAllocation va,
+                                   uint32_t xoff, uint32_t yoff, uint32_t lod,
+                                   RsAllocationCubemapFace face, uint32_t w,
+                                   uint32_t h, void* data, size_t data_length,
+                                   size_t stride)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocation3DRead(RsContext rsc, RsAllocation va,
+                                   uint32_t xoff, uint32_t yoff, uint32_t zoff,
+                                   uint32_t lod, uint32_t w, uint32_t h,
+                                   uint32_t d, void* data, size_t data_length,
+                                   size_t stride)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationSyncAll(RsContext rsc, RsAllocation va,
+                                    RsAllocationUsageType src)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationResize1D(RsContext rsc, RsAllocation va,
+                                     uint32_t dimX)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationCopy2DRange(RsContext rsc, RsAllocation dest,
+                                        uint32_t destXoff, uint32_t destYoff,
+                                        uint32_t destMip, uint32_t destFace,
+                                        uint32_t width, uint32_t height,
+                                        RsAllocation src, uint32_t srcXoff,
+                                        uint32_t srcYoff, uint32_t srcMip,
+                                        uint32_t srcFace)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationCopy3DRange(RsContext rsc, RsAllocation dest,
+                                        uint32_t destXoff, uint32_t destYoff,
+                                        uint32_t destZoff, uint32_t destMip,
+                                        uint32_t width, uint32_t height,
+                                        uint32_t depth, RsAllocation src,
+                                        uint32_t srcXoff, uint32_t srcYoff,
+                                        uint32_t srcZoff, uint32_t srcMip)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsAllocationIoSend(RsContext rsc, RsAllocation alloc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" int64_t rsAllocationIoReceive(RsContext rsc, RsAllocation alloc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // ScriptGroup
-extern "C" RsScriptGroup rsScriptGroupCreate(RsContext rsc, RsScriptKernelID* kernels,
-                                             size_t kernels_length, RsScriptKernelID* src,
-                                             size_t src_length, RsScriptKernelID* dstK,
-                                             size_t dstK_length, RsScriptFieldID* dstF,
-                                             size_t dstF_length, const RsType* type,
-                                             size_t type_length) __DEPRECATED_IN(31);
-extern "C" RsScriptGroup2 rsScriptGroup2Create(RsContext rsc, const char* name, size_t name_length,
-                                               const char* cacheDir, size_t cacheDir_length,
-                                               RsClosure* closures, size_t closures_length)
-        __DEPRECATED_IN(31);
-extern "C" RsClosure rsClosureCreate(RsContext rsc, RsScriptKernelID kernelID,
-                                     RsAllocation returnValue, RsScriptFieldID* fieldIDs,
-                                     size_t fieldIDs_length, const int64_t* values,
-                                     size_t values_length, const int* sizes, size_t sizes_length,
-                                     RsClosure* depClosures, size_t depClosures_length,
-                                     RsScriptFieldID* depFieldIDs, size_t depFieldIDs_length)
-        __DEPRECATED_IN(31);
-extern "C" RsClosure rsInvokeClosureCreate(RsContext rsc, RsScriptInvokeID invokeID,
-                                           const void* params, size_t params_length,
-                                           const RsScriptFieldID* fieldIDs, size_t fieldIDs_length,
-                                           const int64_t* values, size_t values_length,
-                                           const int* sizes, size_t sizes_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsClosureSetArg(RsContext rsc, RsClosure closureID, uint32_t index, uintptr_t value,
-                                int valueSize) __DEPRECATED_IN(31);
-extern "C" void rsClosureSetGlobal(RsContext rsc, RsClosure closureID, RsScriptFieldID fieldID,
-                                   int64_t value, int valueSize) __DEPRECATED_IN(31);
-extern "C" RsScriptKernelID rsScriptKernelIDCreate(RsContext rsc, RsScript sid, int slot, int sig)
-        __DEPRECATED_IN(31);
-extern "C" RsScriptInvokeID rsScriptInvokeIDCreate(RsContext rsc, RsScript s, uint32_t slot)
-        __DEPRECATED_IN(31);
-extern "C" RsScriptFieldID rsScriptFieldIDCreate(RsContext rsc, RsScript sid, int slot)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptGroupSetOutput(RsContext rsc, RsScriptGroup group, RsScriptKernelID kernel,
-                                       RsAllocation alloc) __DEPRECATED_IN(31);
-extern "C" void rsScriptGroupSetInput(RsContext rsc, RsScriptGroup group, RsScriptKernelID kernel,
-                                      RsAllocation alloc) __DEPRECATED_IN(31);
-extern "C" void rsScriptGroupExecute(RsContext rsc, RsScriptGroup group) __DEPRECATED_IN(31);
+extern "C" RsScriptGroup rsScriptGroupCreate(
+    RsContext rsc, RsScriptKernelID* kernels, size_t kernels_length,
+    RsScriptKernelID* src, size_t src_length, RsScriptKernelID* dstK,
+    size_t dstK_length, RsScriptFieldID* dstF, size_t dstF_length,
+    const RsType* type, size_t type_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsScriptGroup2 rsScriptGroup2Create(
+    RsContext rsc, const char* name, size_t name_length, const char* cacheDir,
+    size_t cacheDir_length, RsClosure* closures, size_t closures_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsClosure rsClosureCreate(
+    RsContext rsc, RsScriptKernelID kernelID, RsAllocation returnValue,
+    RsScriptFieldID* fieldIDs, size_t fieldIDs_length, const int64_t* values,
+    size_t values_length, const int* sizes, size_t sizes_length,
+    RsClosure* depClosures, size_t depClosures_length,
+    RsScriptFieldID* depFieldIDs, size_t depFieldIDs_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsClosure rsInvokeClosureCreate(
+    RsContext rsc, RsScriptInvokeID invokeID, const void* params,
+    size_t params_length, const RsScriptFieldID* fieldIDs,
+    size_t fieldIDs_length, const int64_t* values, size_t values_length,
+    const int* sizes, size_t sizes_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsClosureSetArg(RsContext rsc, RsClosure closureID,
+                                uint32_t index, uintptr_t value, int valueSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsClosureSetGlobal(RsContext rsc, RsClosure closureID,
+                                   RsScriptFieldID fieldID, int64_t value,
+                                   int valueSize)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsScriptKernelID rsScriptKernelIDCreate(RsContext rsc, RsScript sid,
+                                                   int slot, int sig)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsScriptInvokeID rsScriptInvokeIDCreate(RsContext rsc, RsScript s,
+                                                   uint32_t slot)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsScriptFieldID rsScriptFieldIDCreate(RsContext rsc, RsScript sid,
+                                                 int slot)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptGroupSetOutput(RsContext rsc, RsScriptGroup group,
+                                       RsScriptKernelID kernel,
+                                       RsAllocation alloc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptGroupSetInput(RsContext rsc, RsScriptGroup group,
+                                      RsScriptKernelID kernel,
+                                      RsAllocation alloc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptGroupExecute(RsContext rsc, RsScriptGroup group)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // Sampler
 extern "C" RsSampler rsSamplerCreate(RsContext rsc, RsSamplerValue magFilter,
-                                     RsSamplerValue minFilter, RsSamplerValue wrapS,
-                                     RsSamplerValue wrapT, RsSamplerValue wrapR, float mAniso)
-        __DEPRECATED_IN(31);
+                                     RsSamplerValue minFilter,
+                                     RsSamplerValue wrapS, RsSamplerValue wrapT,
+                                     RsSamplerValue wrapR, float mAniso)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // Script
-extern "C" RsScript rsScriptCCreate(RsContext rsc, const char* resName, size_t resName_length,
-                                    const char* cacheDir, size_t cacheDir_length, const char* text,
-                                    size_t text_length) __DEPRECATED_IN(31);
-extern "C" RsScript rsScriptIntrinsicCreate(RsContext rsc, uint32_t id, RsElement eid)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptBindAllocation(RsContext rsc, RsScript vtm, RsAllocation va, uint32_t slot)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptSetTimeZone(RsContext rsc, RsScript s, const char* timeZone,
-                                    size_t timeZone_length) __DEPRECATED_IN(31);
-extern "C" void rsScriptInvoke(RsContext rsc, RsScript s, uint32_t slot) __DEPRECATED_IN(31);
-extern "C" void rsScriptInvokeV(RsContext rsc, RsScript s, uint32_t slot, const void* data,
-                                size_t data_length) __DEPRECATED_IN(31);
-extern "C" void rsScriptForEach(RsContext rsc, RsScript s, uint32_t slot, RsAllocation ain,
-                                RsAllocation aout, const void* usr, size_t usr_length,
-                                const RsScriptCall* sc, size_t sc_length) __DEPRECATED_IN(31);
-extern "C" void rsScriptForEachMulti(RsContext rsc, RsScript s, uint32_t slot, RsAllocation* ains,
-                                     size_t ains_length, RsAllocation aout, const void* usr,
-                                     size_t usr_length, const RsScriptCall* sc, size_t sc_length)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptReduce(RsContext rsc, RsScript s, uint32_t slot, RsAllocation* ains,
-                               size_t ains_length, RsAllocation aout, const RsScriptCall* sc,
-                               size_t sc_length) __DEPRECATED_IN(31);
-extern "C" void rsScriptSetVarI(RsContext rsc, RsScript s, uint32_t slot, int value)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptSetVarObj(RsContext rsc, RsScript s, uint32_t slot, RsObjectBase value)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptSetVarJ(RsContext rsc, RsScript s, uint32_t slot, int64_t value)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptSetVarF(RsContext rsc, RsScript s, uint32_t slot, float value)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptSetVarD(RsContext rsc, RsScript s, uint32_t slot, double value)
-        __DEPRECATED_IN(31);
-extern "C" void rsScriptSetVarV(RsContext rsc, RsScript s, uint32_t slot, const void* data,
-                                size_t data_length) __DEPRECATED_IN(31);
-extern "C" void rsScriptGetVarV(RsContext rsc, RsScript s, uint32_t slot, void* data,
-                                size_t data_length) __DEPRECATED_IN(31);
-extern "C" void rsScriptSetVarVE(RsContext rsc, RsScript s, uint32_t slot, const void* data,
-                                 size_t data_length, RsElement e, const uint32_t* dims,
-                                 size_t dims_length) __DEPRECATED_IN(31);
+extern "C" RsScript rsScriptCCreate(RsContext rsc, const char* resName,
+                                    size_t resName_length, const char* cacheDir,
+                                    size_t cacheDir_length, const char* text,
+                                    size_t text_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsScript rsScriptIntrinsicCreate(RsContext rsc, uint32_t id,
+                                            RsElement eid)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptBindAllocation(RsContext rsc, RsScript vtm,
+                                       RsAllocation va, uint32_t slot)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetTimeZone(RsContext rsc, RsScript s,
+                                    const char* timeZone,
+                                    size_t timeZone_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptInvoke(RsContext rsc, RsScript s, uint32_t slot)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptInvokeV(RsContext rsc, RsScript s, uint32_t slot,
+                                const void* data, size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptForEach(RsContext rsc, RsScript s, uint32_t slot,
+                                RsAllocation ain, RsAllocation aout,
+                                const void* usr, size_t usr_length,
+                                const RsScriptCall* sc, size_t sc_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptForEachMulti(RsContext rsc, RsScript s, uint32_t slot,
+                                     RsAllocation* ains, size_t ains_length,
+                                     RsAllocation aout, const void* usr,
+                                     size_t usr_length, const RsScriptCall* sc,
+                                     size_t sc_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptReduce(RsContext rsc, RsScript s, uint32_t slot,
+                               RsAllocation* ains, size_t ains_length,
+                               RsAllocation aout, const RsScriptCall* sc,
+                               size_t sc_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetVarI(RsContext rsc, RsScript s, uint32_t slot,
+                                int value)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetVarObj(RsContext rsc, RsScript s, uint32_t slot,
+                                  RsObjectBase value)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetVarJ(RsContext rsc, RsScript s, uint32_t slot,
+                                int64_t value)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetVarF(RsContext rsc, RsScript s, uint32_t slot,
+                                float value)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetVarD(RsContext rsc, RsScript s, uint32_t slot,
+                                double value)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetVarV(RsContext rsc, RsScript s, uint32_t slot,
+                                const void* data, size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptGetVarV(RsContext rsc, RsScript s, uint32_t slot,
+                                void* data, size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsScriptSetVarVE(RsContext rsc, RsScript s, uint32_t slot,
+                                 const void* data, size_t data_length,
+                                 RsElement e, const uint32_t* dims,
+                                 size_t dims_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 // Graphics
-extern "C" RsContext rsContextCreateGL(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
-                                       RsSurfaceConfig sc, uint32_t dpi) __DEPRECATED_IN(31);
-extern "C" void rsContextSetSurface(RsContext rsc, uint32_t width, uint32_t height,
-                                    RsNativeWindow sur) __DEPRECATED_IN(31);
-extern "C" void rsContextPause(RsContext rsc) __DEPRECATED_IN(31);
-extern "C" void rsContextResume(RsContext rsc) __DEPRECATED_IN(31);
-extern "C" void rsContextBindProgramStore(RsContext rsc, RsProgramStore pgm) __DEPRECATED_IN(31);
-extern "C" void rsContextBindProgramFragment(RsContext rsc, RsProgramFragment pgm)
-        __DEPRECATED_IN(31);
-extern "C" void rsContextBindProgramVertex(RsContext rsc, RsProgramVertex pgm) __DEPRECATED_IN(31);
-extern "C" void rsContextBindProgramRaster(RsContext rsc, RsProgramRaster pgm) __DEPRECATED_IN(31);
-extern "C" void rsContextBindFont(RsContext rsc, RsFont pgm) __DEPRECATED_IN(31);
-extern "C" void rsContextBindRootScript(RsContext rsc, RsScript sampler) __DEPRECATED_IN(31);
+extern "C" RsContext rsContextCreateGL(RsDevice vdev, uint32_t version,
+                                       uint32_t sdkVersion, RsSurfaceConfig sc,
+                                       uint32_t dpi)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextSetSurface(RsContext rsc, uint32_t width,
+                                    uint32_t height, RsNativeWindow sur)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextPause(RsContext rsc) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextResume(RsContext rsc) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextBindProgramStore(RsContext rsc, RsProgramStore pgm)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextBindProgramFragment(RsContext rsc,
+                                             RsProgramFragment pgm)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextBindProgramVertex(RsContext rsc, RsProgramVertex pgm)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextBindProgramRaster(RsContext rsc, RsProgramRaster pgm)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextBindFont(RsContext rsc, RsFont pgm) __DEPRECATED_IN(
+    31,
+    "RenderScript is deprecated. See "
+    "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsContextBindRootScript(RsContext rsc, RsScript sampler)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
-extern "C" RsProgramStore rsProgramStoreCreate(RsContext rsc, bool colorMaskR, bool colorMaskG,
-                                               bool colorMaskB, bool colorMaskA, bool depthMask,
-                                               bool ditherEnable, RsBlendSrcFunc srcFunc,
-                                               RsBlendDstFunc destFunc, RsDepthFunc depthFunc)
-        __DEPRECATED_IN(31);
-extern "C" RsProgramRaster rsProgramRasterCreate(RsContext rsc, bool pointSprite, RsCullMode cull)
-        __DEPRECATED_IN(31);
+extern "C" RsProgramStore rsProgramStoreCreate(
+    RsContext rsc, bool colorMaskR, bool colorMaskG, bool colorMaskB,
+    bool colorMaskA, bool depthMask, bool ditherEnable, RsBlendSrcFunc srcFunc,
+    RsBlendDstFunc destFunc, RsDepthFunc depthFunc)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsProgramRaster rsProgramRasterCreate(RsContext rsc,
+                                                 bool pointSprite,
+                                                 RsCullMode cull)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 extern "C" RsProgramFragment rsProgramFragmentCreate(
-        RsContext rsc, const char* shaderText, size_t shaderText_length, const char** textureNames,
-        size_t textureNames_length_length, const size_t* textureNames_length,
-        const uintptr_t* params, size_t params_length) __DEPRECATED_IN(31);
+    RsContext rsc, const char* shaderText, size_t shaderText_length,
+    const char** textureNames, size_t textureNames_length_length,
+    const size_t* textureNames_length, const uintptr_t* params,
+    size_t params_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 extern "C" RsProgramVertex rsProgramVertexCreate(
-        RsContext rsc, const char* shaderText, size_t shaderText_length, const char** textureNames,
-        size_t textureNames_length_length, const size_t* textureNames_length,
-        const uintptr_t* params, size_t params_length) __DEPRECATED_IN(31);
-extern "C" RsFont rsFontCreateFromFile(RsContext rsc, const char* name, size_t name_length,
-                                       float fontSize, uint32_t dpi) __DEPRECATED_IN(31);
-extern "C" RsFont rsFontCreateFromMemory(RsContext rsc, const char* name, size_t name_length,
-                                         float fontSize, uint32_t dpi, const void* data,
-                                         size_t data_length) __DEPRECATED_IN(31);
-extern "C" RsMesh rsMeshCreate(RsContext rsc, RsAllocation* vtx, size_t vtx_length,
-                               RsAllocation* idx, size_t idx_length, uint32_t* primType,
-                               size_t primType_length) __DEPRECATED_IN(31);
-extern "C" void rsProgramBindConstants(RsContext rsc, RsProgram vp, uint32_t slot,
-                                       RsAllocation constants) __DEPRECATED_IN(31);
-extern "C" void rsProgramBindTexture(RsContext rsc, RsProgramFragment pf, uint32_t slot,
-                                     RsAllocation a) __DEPRECATED_IN(31);
-extern "C" void rsProgramBindSampler(RsContext rsc, RsProgramFragment pf, uint32_t slot,
-                                     RsSampler s) __DEPRECATED_IN(31);
+    RsContext rsc, const char* shaderText, size_t shaderText_length,
+    const char** textureNames, size_t textureNames_length_length,
+    const size_t* textureNames_length, const uintptr_t* params,
+    size_t params_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsFont rsFontCreateFromFile(RsContext rsc, const char* name,
+                                       size_t name_length, float fontSize,
+                                       uint32_t dpi)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsFont rsFontCreateFromMemory(RsContext rsc, const char* name,
+                                         size_t name_length, float fontSize,
+                                         uint32_t dpi, const void* data,
+                                         size_t data_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsMesh rsMeshCreate(RsContext rsc, RsAllocation* vtx,
+                               size_t vtx_length, RsAllocation* idx,
+                               size_t idx_length, uint32_t* primType,
+                               size_t primType_length)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsProgramBindConstants(RsContext rsc, RsProgram vp,
+                                       uint32_t slot, RsAllocation constants)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsProgramBindTexture(RsContext rsc, RsProgramFragment pf,
+                                     uint32_t slot, RsAllocation a)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsProgramBindSampler(RsContext rsc, RsProgramFragment pf,
+                                     uint32_t slot, RsSampler s)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
-extern "C" RsObjectBase rsaFileA3DGetEntryByIndex(RsContext con, uint32_t index, RsFile file)
-        __DEPRECATED_IN(31);
-extern "C" RsFile rsaFileA3DCreateFromMemory(RsContext con, const void* data, uint32_t len)
-        __DEPRECATED_IN(31);
-extern "C" RsFile rsaFileA3DCreateFromAsset(RsContext con, void* _asset) __DEPRECATED_IN(31);
-extern "C" RsFile rsaFileA3DCreateFromFile(RsContext con, const char* path) __DEPRECATED_IN(31);
-extern "C" void rsaFileA3DGetNumIndexEntries(RsContext con, int32_t* numEntries, RsFile file)
-        __DEPRECATED_IN(31);
-extern "C" void rsaFileA3DGetIndexEntries(RsContext con, RsFileIndexEntry* fileEntries,
-                                          uint32_t numEntries, RsFile file) __DEPRECATED_IN(31);
-extern "C" void rsaMeshGetVertexBufferCount(RsContext con, RsMesh mv, int32_t* numVtx)
-        __DEPRECATED_IN(31);
-extern "C" void rsaMeshGetIndexCount(RsContext con, RsMesh mv, int32_t* numIdx) __DEPRECATED_IN(31);
-extern "C" void rsaMeshGetVertices(RsContext con, RsMesh mv, RsAllocation* vtxData,
-                                   uint32_t vtxDataCount) __DEPRECATED_IN(31);
-extern "C" void rsaMeshGetIndices(RsContext con, RsMesh mv, RsAllocation* va, uint32_t* primType,
-                                  uint32_t idxDataCount) __DEPRECATED_IN(31);
+extern "C" RsObjectBase rsaFileA3DGetEntryByIndex(RsContext con, uint32_t index,
+                                                  RsFile file)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsFile rsaFileA3DCreateFromMemory(RsContext con, const void* data,
+                                             uint32_t len)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsFile rsaFileA3DCreateFromAsset(RsContext con, void* _asset)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" RsFile rsaFileA3DCreateFromFile(RsContext con, const char* path)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaFileA3DGetNumIndexEntries(RsContext con, int32_t* numEntries,
+                                             RsFile file)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaFileA3DGetIndexEntries(RsContext con,
+                                          RsFileIndexEntry* fileEntries,
+                                          uint32_t numEntries, RsFile file)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaMeshGetVertexBufferCount(RsContext con, RsMesh mv,
+                                            int32_t* numVtx)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaMeshGetIndexCount(RsContext con, RsMesh mv, int32_t* numIdx)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaMeshGetVertices(RsContext con, RsMesh mv,
+                                   RsAllocation* vtxData, uint32_t vtxDataCount)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
+extern "C" void rsaMeshGetIndices(RsContext con, RsMesh mv, RsAllocation* va,
+                                  uint32_t* primType, uint32_t idxDataCount)
+    __DEPRECATED_IN(
+        31,
+        "RenderScript is deprecated. See "
+        "https://developer.android.com/guide/topics/renderscript/migrate");
 
 #endif // ANDROID_RS_API_STUBS_H
diff --git a/rsg_generator.c b/rsg_generator.c
index 02aa1c8..1527bec 100644
--- a/rsg_generator.c
+++ b/rsg_generator.c
@@ -149,7 +149,10 @@
             fprintf(f, "extern \"C\" ");
         }
         printFuncDecl(f, &apis[ct], prefix, addContext, 0);
-        fprintf(f, " __DEPRECATED_IN(31);\n");
+        fprintf(f,
+                " __DEPRECATED_IN(31, \"RenderScript is deprecated. See "
+                "https://developer.android.com/guide/topics/renderscript/"
+                "migrate\");\n");
     }
     fprintf(f, "\n\n");
 }
