| 125 | } |
| 126 | |
| 127 | Array::Array(NVCVArrayRequirements reqs, IAllocator &alloc, NVCVResourceType target) |
| 128 | : m_alloc{alloc} |
| 129 | , m_reqs{std::move(reqs)} |
| 130 | , m_target{target} |
| 131 | { |
| 132 | // Assuming reqs are already validated during its creation |
| 133 | |
| 134 | int64_t bufSize; |
| 135 | switch (m_target) |
| 136 | { |
| 137 | case NVCV_RESOURCE_MEM_CUDA: |
| 138 | bufSize = CalcTotalSizeBytes(m_reqs.mem.cudaMem); |
| 139 | m_memBuffer = m_alloc->allocCudaMem(bufSize, m_reqs.alignBytes); |
| 140 | break; |
| 141 | case NVCV_RESOURCE_MEM_HOST: |
| 142 | bufSize = CalcTotalSizeBytes(m_reqs.mem.hostMem); |
| 143 | m_memBuffer = m_alloc->allocHostMem(bufSize, m_reqs.alignBytes); |
| 144 | break; |
| 145 | case NVCV_RESOURCE_MEM_HOST_PINNED: |
| 146 | bufSize = CalcTotalSizeBytes(m_reqs.mem.hostPinnedMem); |
| 147 | m_memBuffer = m_alloc->allocHostPinnedMem(bufSize, m_reqs.alignBytes); |
| 148 | break; |
| 149 | default: |
| 150 | throw Exception(NVCV_ERROR_INVALID_ARGUMENT) << "Unknown Resource type " << m_target; |
| 151 | break; |
| 152 | } |
| 153 | |
| 154 | NVCV_ASSERT(m_memBuffer != nullptr); |
| 155 | |
| 156 | this->exportData(m_data); |
| 157 | m_data.length = 0; |
| 158 | } |
| 159 | |
| 160 | Array::~Array() |
| 161 | { |
nothing calls this directly
no test coverage detected