diff options
author | Jason Sams <rjsams@android.com> | 2010-05-11 14:03:58 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-05-11 14:03:58 -0700 |
commit | be36bf3a76481737a7fa606a04144ceef80eb4f2 (patch) | |
tree | b99c2d6bc09a0d595106149de3e348bc35a04a20 /rsHandcode.h | |
parent | 3910dbf6d1291b2977ba59e4ed759360c518c9d3 (diff) | |
download | rs-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.h | 43 |
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; |