blob: f6e56acabf90968374a5322c2f779360c0d32019 [file] [log] [blame]
Jason Sams07ae4062009-08-27 20:23:34 -07001
2#define DATA_SYNC_SIZE 1024
3
Jason Sams4d339932010-05-11 14:03:58 -07004static inline void rsHCAPI_ScriptInvokeV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes)
5{
6 ThreadIO *io = &((Context *)rsc)->mIO;
7 uint32_t size = sizeof(RS_CMD_ScriptInvokeV);
8 if (sizeBytes < DATA_SYNC_SIZE) {
9 size += (sizeBytes + 3) & ~3;
10 }
11 RS_CMD_ScriptInvokeV *cmd = static_cast<RS_CMD_ScriptInvokeV *>(io->mToCore.reserve(size));
12 cmd->s = va;
13 cmd->slot = slot;
14 cmd->dataLen = sizeBytes;
15 cmd->data = data;
16 if (sizeBytes < DATA_SYNC_SIZE) {
17 cmd->data = (void *)(cmd+1);
18 memcpy(cmd+1, data, sizeBytes);
19 io->mToCore.commit(RS_CMD_ID_ScriptInvokeV, size);
20 } else {
21 io->mToCore.commitSync(RS_CMD_ID_ScriptInvokeV, size);
22 }
23}
24
25
26static inline void rsHCAPI_ScriptSetVarV (RsContext rsc, RsScript va, uint32_t slot, const void * data, uint32_t sizeBytes)
27{
28 ThreadIO *io = &((Context *)rsc)->mIO;
29 uint32_t size = sizeof(RS_CMD_ScriptSetVarV);
30 if (sizeBytes < DATA_SYNC_SIZE) {
31 size += (sizeBytes + 3) & ~3;
32 }
33 RS_CMD_ScriptSetVarV *cmd = static_cast<RS_CMD_ScriptSetVarV *>(io->mToCore.reserve(size));
34 cmd->s = va;
35 cmd->slot = slot;
36 cmd->dataLen = sizeBytes;
37 cmd->data = data;
38 if (sizeBytes < DATA_SYNC_SIZE) {
39 cmd->data = (void *)(cmd+1);
40 memcpy(cmd+1, data, sizeBytes);
41 io->mToCore.commit(RS_CMD_ID_ScriptSetVarV, size);
42 } else {
43 io->mToCore.commitSync(RS_CMD_ID_ScriptSetVarV, size);
44 }
45}
46
Jason Sams07ae4062009-08-27 20:23:34 -070047static inline void rsHCAPI_AllocationData (RsContext rsc, RsAllocation va, const void * data, uint32_t sizeBytes)
48{
49 ThreadIO *io = &((Context *)rsc)->mIO;
50 uint32_t size = sizeof(RS_CMD_AllocationData);
51 if (sizeBytes < DATA_SYNC_SIZE) {
52 size += (sizeBytes + 3) & ~3;
53 }
54 RS_CMD_AllocationData *cmd = static_cast<RS_CMD_AllocationData *>(io->mToCore.reserve(size));
55 cmd->va = va;
56 cmd->bytes = sizeBytes;
57 cmd->data = data;
58 if (sizeBytes < DATA_SYNC_SIZE) {
59 cmd->data = (void *)(cmd+1);
60 memcpy(cmd+1, data, sizeBytes);
61 io->mToCore.commit(RS_CMD_ID_AllocationData, size);
62 } else {
63 io->mToCore.commitSync(RS_CMD_ID_AllocationData, size);
64 }
65}
66
67
68static inline void rsHCAPI_Allocation1DSubData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void * data, uint32_t sizeBytes)
69{
70 ThreadIO *io = &((Context *)rsc)->mIO;
71 uint32_t size = sizeof(RS_CMD_Allocation1DSubData);
72 if (sizeBytes < DATA_SYNC_SIZE) {
73 size += (sizeBytes + 3) & ~3;
74 }
75 RS_CMD_Allocation1DSubData *cmd = static_cast<RS_CMD_Allocation1DSubData *>(io->mToCore.reserve(size));
76 cmd->va = va;
77 cmd->xoff = xoff;
78 cmd->count = count;
79 cmd->data = data;
80 cmd->bytes = sizeBytes;
81 if (sizeBytes < DATA_SYNC_SIZE) {
82 cmd->data = (void *)(cmd+1);
83 memcpy(cmd+1, data, sizeBytes);
84 io->mToCore.commit(RS_CMD_ID_Allocation1DSubData, size);
85 } else {
86 io->mToCore.commitSync(RS_CMD_ID_Allocation1DSubData, size);
87 }
88
89}
90