blob: 57da10a65b1fce238a0a2eafa23789f21d1cafb0 [file] [log] [blame]
Jason Sams07ae4062009-08-27 20:23:34 -07001
2#define DATA_SYNC_SIZE 1024
3
Alex Sakhartchouked9f2102010-11-09 17:00:54 -08004static inline void rsHCAPI_ContextFinish (RsContext rsc) {
Jason Sams96ed4cf2010-06-15 12:15:57 -07005 ThreadIO *io = &((Context *)rsc)->mIO;
6 uint32_t size = sizeof(RS_CMD_ContextFinish);
Jason Sams96ed4cf2010-06-15 12:15:57 -07007 io->mToCore.commitSync(RS_CMD_ID_ContextFinish, size);
8}
9
Alex Sakhartchouked9f2102010-11-09 17:00:54 -080010static inline void rsHCAPI_ScriptInvokeV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes) {
Jason Sams4d339932010-05-11 14:03:58 -070011 ThreadIO *io = &((Context *)rsc)->mIO;
12 uint32_t size = sizeof(RS_CMD_ScriptInvokeV);
13 if (sizeBytes < DATA_SYNC_SIZE) {
14 size += (sizeBytes + 3) & ~3;
15 }
16 RS_CMD_ScriptInvokeV *cmd = static_cast<RS_CMD_ScriptInvokeV *>(io->mToCore.reserve(size));
17 cmd->s = va;
18 cmd->slot = slot;
19 cmd->dataLen = sizeBytes;
20 cmd->data = data;
21 if (sizeBytes < DATA_SYNC_SIZE) {
22 cmd->data = (void *)(cmd+1);
23 memcpy(cmd+1, data, sizeBytes);
24 io->mToCore.commit(RS_CMD_ID_ScriptInvokeV, size);
25 } else {
26 io->mToCore.commitSync(RS_CMD_ID_ScriptInvokeV, size);
27 }
28}
29
30
Alex Sakhartchouked9f2102010-11-09 17:00:54 -080031static inline void rsHCAPI_ScriptSetVarV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes) {
Jason Sams4d339932010-05-11 14:03:58 -070032 ThreadIO *io = &((Context *)rsc)->mIO;
33 uint32_t size = sizeof(RS_CMD_ScriptSetVarV);
34 if (sizeBytes < DATA_SYNC_SIZE) {
35 size += (sizeBytes + 3) & ~3;
36 }
37 RS_CMD_ScriptSetVarV *cmd = static_cast<RS_CMD_ScriptSetVarV *>(io->mToCore.reserve(size));
38 cmd->s = va;
39 cmd->slot = slot;
40 cmd->dataLen = sizeBytes;
41 cmd->data = data;
42 if (sizeBytes < DATA_SYNC_SIZE) {
43 cmd->data = (void *)(cmd+1);
44 memcpy(cmd+1, data, sizeBytes);
45 io->mToCore.commit(RS_CMD_ID_ScriptSetVarV, size);
46 } else {
47 io->mToCore.commitSync(RS_CMD_ID_ScriptSetVarV, size);
48 }
49}
50
Jason Sams49a05d72010-12-29 14:31:29 -080051static inline void rsHCAPI_Allocation1DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod,
52 uint32_t count, const void * data, uint32_t sizeBytes) {
Jason Sams07ae4062009-08-27 20:23:34 -070053 ThreadIO *io = &((Context *)rsc)->mIO;
Jason Sams49a05d72010-12-29 14:31:29 -080054 uint32_t size = sizeof(RS_CMD_Allocation1DData);
Jason Sams07ae4062009-08-27 20:23:34 -070055 if (sizeBytes < DATA_SYNC_SIZE) {
56 size += (sizeBytes + 3) & ~3;
57 }
Jason Sams49a05d72010-12-29 14:31:29 -080058 RS_CMD_Allocation1DData *cmd = static_cast<RS_CMD_Allocation1DData *>(io->mToCore.reserve(size));
Jason Sams07ae4062009-08-27 20:23:34 -070059 cmd->va = va;
60 cmd->xoff = xoff;
Jason Sams49a05d72010-12-29 14:31:29 -080061 cmd->lod = lod;
Jason Sams07ae4062009-08-27 20:23:34 -070062 cmd->count = count;
63 cmd->data = data;
64 cmd->bytes = sizeBytes;
65 if (sizeBytes < DATA_SYNC_SIZE) {
66 cmd->data = (void *)(cmd+1);
67 memcpy(cmd+1, data, sizeBytes);
Jason Sams49a05d72010-12-29 14:31:29 -080068 io->mToCore.commit(RS_CMD_ID_Allocation1DData, size);
Jason Sams07ae4062009-08-27 20:23:34 -070069 } else {
Jason Sams49a05d72010-12-29 14:31:29 -080070 io->mToCore.commitSync(RS_CMD_ID_Allocation1DData, size);
Jason Sams07ae4062009-08-27 20:23:34 -070071 }
Jason Sams07ae4062009-08-27 20:23:34 -070072}
73
Jason Sams49a05d72010-12-29 14:31:29 -080074static inline void rsHCAPI_Allocation1DElementData (RsContext rsc, RsAllocation va, uint32_t x, uint32_t lod,
75 const void * data, uint32_t comp_offset, uint32_t sizeBytes) {
Jason Sams49bdaf02010-08-31 13:50:42 -070076 ThreadIO *io = &((Context *)rsc)->mIO;
Jason Sams49a05d72010-12-29 14:31:29 -080077 uint32_t size = sizeof(RS_CMD_Allocation1DElementData);
Jason Sams49bdaf02010-08-31 13:50:42 -070078 if (sizeBytes < DATA_SYNC_SIZE) {
79 size += (sizeBytes + 3) & ~3;
80 }
Jason Sams49a05d72010-12-29 14:31:29 -080081 RS_CMD_Allocation1DElementData *cmd = static_cast<RS_CMD_Allocation1DElementData *>(io->mToCore.reserve(size));
Jason Sams49bdaf02010-08-31 13:50:42 -070082 cmd->va = va;
83 cmd->x = x;
Jason Sams49a05d72010-12-29 14:31:29 -080084 cmd->lod = lod;
Jason Sams49bdaf02010-08-31 13:50:42 -070085 cmd->data = data;
86 cmd->comp_offset = comp_offset;
87 cmd->bytes = sizeBytes;
88 if (sizeBytes < DATA_SYNC_SIZE) {
89 cmd->data = (void *)(cmd+1);
90 memcpy(cmd+1, data, sizeBytes);
Jason Sams49a05d72010-12-29 14:31:29 -080091 io->mToCore.commit(RS_CMD_ID_Allocation1DElementData, size);
Jason Sams49bdaf02010-08-31 13:50:42 -070092 } else {
Jason Sams49a05d72010-12-29 14:31:29 -080093 io->mToCore.commitSync(RS_CMD_ID_Allocation1DElementData, size);
Jason Sams49bdaf02010-08-31 13:50:42 -070094 }
Jason Sams49bdaf02010-08-31 13:50:42 -070095}
96