blob: c02fd4252c2232f5ff7d0ca125e061fbeb25c326 [file] [log] [blame]
Jason Sams9397e302009-08-27 20:23:34 -07001
2#define DATA_SYNC_SIZE 1024
3
Jason Sams8c880902010-06-15 12:15:57 -07004static inline void rsHCAPI_ContextFinish (RsContext rsc)
5{
6 ThreadIO *io = &((Context *)rsc)->mIO;
7 uint32_t size = sizeof(RS_CMD_ContextFinish);
8 RS_CMD_ContextFinish *cmd = static_cast<RS_CMD_ContextFinish *>(io->mToCore.reserve(size));
9 io->mToCore.commitSync(RS_CMD_ID_ContextFinish, size);
10}
11
Jason Samsbe36bf32010-05-11 14:03:58 -070012static inline void rsHCAPI_ScriptInvokeV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes)
13{
14 ThreadIO *io = &((Context *)rsc)->mIO;
15 uint32_t size = sizeof(RS_CMD_ScriptInvokeV);
16 if (sizeBytes < DATA_SYNC_SIZE) {
17 size += (sizeBytes + 3) & ~3;
18 }
19 RS_CMD_ScriptInvokeV *cmd = static_cast<RS_CMD_ScriptInvokeV *>(io->mToCore.reserve(size));
20 cmd->s = va;
21 cmd->slot = slot;
22 cmd->dataLen = sizeBytes;
23 cmd->data = data;
24 if (sizeBytes < DATA_SYNC_SIZE) {
25 cmd->data = (void *)(cmd+1);
26 memcpy(cmd+1, data, sizeBytes);
27 io->mToCore.commit(RS_CMD_ID_ScriptInvokeV, size);
28 } else {
29 io->mToCore.commitSync(RS_CMD_ID_ScriptInvokeV, size);
30 }
31}
32
33
34static inline void rsHCAPI_ScriptSetVarV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes)
35{
36 ThreadIO *io = &((Context *)rsc)->mIO;
37 uint32_t size = sizeof(RS_CMD_ScriptSetVarV);
38 if (sizeBytes < DATA_SYNC_SIZE) {
39 size += (sizeBytes + 3) & ~3;
40 }
41 RS_CMD_ScriptSetVarV *cmd = static_cast<RS_CMD_ScriptSetVarV *>(io->mToCore.reserve(size));
42 cmd->s = va;
43 cmd->slot = slot;
44 cmd->dataLen = sizeBytes;
45 cmd->data = data;
46 if (sizeBytes < DATA_SYNC_SIZE) {
47 cmd->data = (void *)(cmd+1);
48 memcpy(cmd+1, data, sizeBytes);
49 io->mToCore.commit(RS_CMD_ID_ScriptSetVarV, size);
50 } else {
51 io->mToCore.commitSync(RS_CMD_ID_ScriptSetVarV, size);
52 }
53}
54
Jason Sams9397e302009-08-27 20:23:34 -070055static inline void rsHCAPI_AllocationData (RsContext rsc, RsAllocation va, const void * data, uint32_t sizeBytes)
56{
57 ThreadIO *io = &((Context *)rsc)->mIO;
58 uint32_t size = sizeof(RS_CMD_AllocationData);
59 if (sizeBytes < DATA_SYNC_SIZE) {
60 size += (sizeBytes + 3) & ~3;
61 }
62 RS_CMD_AllocationData *cmd = static_cast<RS_CMD_AllocationData *>(io->mToCore.reserve(size));
63 cmd->va = va;
64 cmd->bytes = sizeBytes;
65 cmd->data = data;
66 if (sizeBytes < DATA_SYNC_SIZE) {
67 cmd->data = (void *)(cmd+1);
68 memcpy(cmd+1, data, sizeBytes);
69 io->mToCore.commit(RS_CMD_ID_AllocationData, size);
70 } else {
71 io->mToCore.commitSync(RS_CMD_ID_AllocationData, size);
72 }
73}
74
75
76static inline void rsHCAPI_Allocation1DSubData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void * data, uint32_t sizeBytes)
77{
78 ThreadIO *io = &((Context *)rsc)->mIO;
79 uint32_t size = sizeof(RS_CMD_Allocation1DSubData);
80 if (sizeBytes < DATA_SYNC_SIZE) {
81 size += (sizeBytes + 3) & ~3;
82 }
83 RS_CMD_Allocation1DSubData *cmd = static_cast<RS_CMD_Allocation1DSubData *>(io->mToCore.reserve(size));
84 cmd->va = va;
85 cmd->xoff = xoff;
86 cmd->count = count;
87 cmd->data = data;
88 cmd->bytes = sizeBytes;
89 if (sizeBytes < DATA_SYNC_SIZE) {
90 cmd->data = (void *)(cmd+1);
91 memcpy(cmd+1, data, sizeBytes);
92 io->mToCore.commit(RS_CMD_ID_Allocation1DSubData, size);
93 } else {
94 io->mToCore.commitSync(RS_CMD_ID_Allocation1DSubData, size);
95 }
96
97}
98
Jason Sams5f0c84c2010-08-31 13:50:42 -070099static inline void rsHCAPI_Allocation1DSubElementData (RsContext rsc, RsAllocation va, uint32_t x, const void * data, uint32_t comp_offset, uint32_t sizeBytes)
100{
101 ThreadIO *io = &((Context *)rsc)->mIO;
102 uint32_t size = sizeof(RS_CMD_Allocation1DSubElementData);
103 if (sizeBytes < DATA_SYNC_SIZE) {
104 size += (sizeBytes + 3) & ~3;
105 }
106 RS_CMD_Allocation1DSubElementData *cmd = static_cast<RS_CMD_Allocation1DSubElementData *>(io->mToCore.reserve(size));
107 cmd->va = va;
108 cmd->x = x;
109 cmd->data = data;
110 cmd->comp_offset = comp_offset;
111 cmd->bytes = sizeBytes;
112 if (sizeBytes < DATA_SYNC_SIZE) {
113 cmd->data = (void *)(cmd+1);
114 memcpy(cmd+1, data, sizeBytes);
115 io->mToCore.commit(RS_CMD_ID_Allocation1DSubElementData, size);
116 } else {
117 io->mToCore.commitSync(RS_CMD_ID_Allocation1DSubElementData, size);
118 }
119
120}
121