summaryrefslogtreecommitdiff
path: root/rsHandcode.h
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-05-11 14:03:58 -0700
committerJason Sams <rjsams@android.com>2010-05-11 14:03:58 -0700
commitbe36bf3a76481737a7fa606a04144ceef80eb4f2 (patch)
treeb99c2d6bc09a0d595106149de3e348bc35a04a20 /rsHandcode.h
parent3910dbf6d1291b2977ba59e4ed759360c518c9d3 (diff)
downloadrs-be36bf3a76481737a7fa606a04144ceef80eb4f2.tar.gz
Convert renderscript from using ACC to LLVM for its compiler.
This will also require application to be updated to support the new compiler and data passing models. Change-Id: If078e3a5148af395ba1b936169a407d8c3ad727f
Diffstat (limited to 'rsHandcode.h')
-rw-r--r--rsHandcode.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/rsHandcode.h b/rsHandcode.h
index 800eddde..f6e56aca 100644
--- a/rsHandcode.h
+++ b/rsHandcode.h
@@ -1,6 +1,49 @@
#define DATA_SYNC_SIZE 1024
+static inline void rsHCAPI_ScriptInvokeV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes)
+{
+ ThreadIO *io = &((Context *)rsc)->mIO;
+ uint32_t size = sizeof(RS_CMD_ScriptInvokeV);
+ if (sizeBytes < DATA_SYNC_SIZE) {
+ size += (sizeBytes + 3) & ~3;
+ }
+ RS_CMD_ScriptInvokeV *cmd = static_cast<RS_CMD_ScriptInvokeV *>(io->mToCore.reserve(size));
+ cmd->s = va;
+ cmd->slot = slot;
+ cmd->dataLen = sizeBytes;
+ cmd->data = data;
+ if (sizeBytes < DATA_SYNC_SIZE) {
+ cmd->data = (void *)(cmd+1);
+ memcpy(cmd+1, data, sizeBytes);
+ io->mToCore.commit(RS_CMD_ID_ScriptInvokeV, size);
+ } else {
+ io->mToCore.commitSync(RS_CMD_ID_ScriptInvokeV, size);
+ }
+}
+
+
+static inline void rsHCAPI_ScriptSetVarV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes)
+{
+ ThreadIO *io = &((Context *)rsc)->mIO;
+ uint32_t size = sizeof(RS_CMD_ScriptSetVarV);
+ if (sizeBytes < DATA_SYNC_SIZE) {
+ size += (sizeBytes + 3) & ~3;
+ }
+ RS_CMD_ScriptSetVarV *cmd = static_cast<RS_CMD_ScriptSetVarV *>(io->mToCore.reserve(size));
+ cmd->s = va;
+ cmd->slot = slot;
+ cmd->dataLen = sizeBytes;
+ cmd->data = data;
+ if (sizeBytes < DATA_SYNC_SIZE) {
+ cmd->data = (void *)(cmd+1);
+ memcpy(cmd+1, data, sizeBytes);
+ io->mToCore.commit(RS_CMD_ID_ScriptSetVarV, size);
+ } else {
+ io->mToCore.commitSync(RS_CMD_ID_ScriptSetVarV, size);
+ }
+}
+
static inline void rsHCAPI_AllocationData (RsContext rsc, RsAllocation va, const void * data, uint32_t sizeBytes)
{
ThreadIO *io = &((Context *)rsc)->mIO;