| 110 | } |
| 111 | |
| 112 | bufferStruct *newBufferStruct(size_t inSize, size_t outSize, clState *pClState) |
| 113 | { |
| 114 | int error; |
| 115 | bufferStruct *pResult = (bufferStruct *)malloc(sizeof(bufferStruct)); |
| 116 | #if DEBUG_MEM_ALLOC |
| 117 | log_info("malloc bufferStruct * %x\n", pResult); |
| 118 | #endif |
| 119 | |
| 120 | pResult->m_bufSizeIn = inSize; |
| 121 | pResult->m_bufSizeOut = outSize; |
| 122 | |
| 123 | pResult->m_pIn = malloc(inSize); |
| 124 | pResult->m_pOut = malloc(outSize); |
| 125 | #if DEBUG_MEM_ALLOC |
| 126 | log_info("malloc m_pIn %x\n", pResult->m_pIn); |
| 127 | log_info("malloc m_pOut %x\n", pResult->m_pOut); |
| 128 | #endif |
| 129 | |
| 130 | pResult->m_inBuffer = clCreateBuffer(pClState->m_context, CL_MEM_READ_ONLY, |
| 131 | inSize, NULL, &error); |
| 132 | if (pResult->m_inBuffer == NULL) |
| 133 | { |
| 134 | vlog_error("clCreateArray failed for input (%d)\n", error); |
| 135 | return destroyBufferStruct(pResult, pClState); |
| 136 | } |
| 137 | #if DEBUG_MEM_ALLOC |
| 138 | log_info("clCreateBuffer %x\n", pResult->m_inBuffer); |
| 139 | #endif |
| 140 | |
| 141 | pResult->m_outBuffer = clCreateBuffer( |
| 142 | pClState->m_context, CL_MEM_WRITE_ONLY, outSize, NULL, &error); |
| 143 | if (pResult->m_outBuffer == NULL) |
| 144 | { |
| 145 | vlog_error("clCreateArray failed for output (%d)\n", error); |
| 146 | return destroyBufferStruct(pResult, pClState); |
| 147 | } |
| 148 | #if DEBUG_MEM_ALLOC |
| 149 | log_info("clCreateBuffer %x\n", pResult->m_outBuffer); |
| 150 | #endif |
| 151 | |
| 152 | pResult->m_bufferUploaded = false; |
| 153 | |
| 154 | return pResult; |
| 155 | } |
| 156 | |
| 157 | bufferStruct *destroyBufferStruct(bufferStruct *destroyMe, clState *pClState) |
| 158 | { |