Lines Matching refs:buffer

105 static int32_t InitBufferHandle(PriBufferHandle* buffer, const AllocInfo* info)
112 HDF_LOGE("can not get format information : %d", buffer->hdl.format);
119 buffer->hdl.width = info->width;
120 buffer->hdl.stride = stride;
121 buffer->hdl.height = info->height;
122 buffer->hdl.size = size;
123 buffer->hdl.usage = info->usage;
124 buffer->hdl.fd = -1;
125 buffer->shmid = INVALID_SHMID;
126 buffer->hdl.format = info->format;
127 buffer->hdl.reserveInts = (sizeof(PriBufferHandle) - sizeof(BufferHandle) -
128 buffer->hdl.reserveFds * sizeof(uint32_t)) / sizeof(uint32_t);
132 static int32_t AllocShm(BufferHandle *buffer)
137 while ((shmid = shmget(key, buffer->size, IPC_CREAT | IPC_EXCL | DEFAULT_READ_WRITE_PERMISSIONS)) < 0) {
155 buffer->virAddr = pBase;
156 buffer->fd = key;
157 ((PriBufferHandle*)buffer)->shmid = shmid;
159 (void)memset_s(pBase, buffer->size, 0x0, buffer->size);
212 static int32_t AllocMmz(BufferHandle *buffer)
217 mmz.size = buffer->size;
218 switch (buffer->usage) {
220 printf("req size(%#x), ret:%d \n", buffer->size, SendCmd(MMZ_CACHE_TYPE, (uintptr_t)&mmz));
225 printf("req size(%#x), ret:%d \n", buffer->size, SendCmd(MMZ_NOCACHE_TYPE, (uintptr_t)&mmz));
230 HDF_LOGE("%s: not support memory usage: 0x%" PRIx64 "", __func__, buffer->usage);
235 buffer->usage, ret);
238 (void)memset_s(mmz.vaddr, buffer->size, 0x0, buffer->size);
239 buffer->phyAddr = mmz.paddr;
240 buffer->virAddr = mmz.vaddr;
252 static int32_t MmzFlushCache(BufferHandle *buffer)
255 mmz.paddr = buffer->phyAddr;
256 mmz.size = buffer->size;
257 mmz.vaddr = buffer->virAddr;
261 static int32_t MmzInvalidateCache(BufferHandle *buffer)
264 mmz.paddr = buffer->phyAddr;
265 mmz.size = buffer->size;
266 mmz.vaddr = buffer->virAddr;
270 static int32_t AllocMem(const AllocInfo* info, BufferHandle **buffer)
273 DISPLAY_CHK_RETURN((buffer == NULL), DISPLAY_NULL_PTR, HDF_LOGE("%s: in buffer is null", __func__));
300 *buffer = bufferHdl;
304 static void FreeShm(BufferHandle *buffer)
306 CHECK_NULLPOINTER_RETURN(buffer->virAddr);
307 if (shmdt(buffer->virAddr) == -1) {
310 if (shmctl(((PriBufferHandle*)buffer)->shmid, IPC_RMID, 0) == -1) {
315 static void FreeMem(BufferHandle *buffer)
319 CHECK_NULLPOINTER_RETURN(buffer);
320 if ((buffer->size > MAX_MALLOC_SIZE) || (buffer->size == 0)) {
321 HDF_LOGE("%s: size is invalid, buffer->size = %d", __func__, buffer->size);
325 switch (buffer->usage) {
328 ret = FreeMmz(buffer->phyAddr, buffer->virAddr);
334 FreeShm(buffer);
337 HDF_LOGE("%s: not support memory usage: 0x%" PRIx64 "", __func__, buffer->usage);
341 static void *MmapShm(BufferHandle *buffer)
345 shmid = shmget(buffer->fd, buffer->size, IPC_EXCL | DEFAULT_READ_WRITE_PERMISSIONS);
355 ((PriBufferHandle*)buffer)->shmid = shmid;
369 static int32_t UnmapMmz(BufferHandle *buffer)
372 mmz.paddr = buffer->phyAddr;
373 mmz.size = buffer->size;
374 mmz.vaddr = buffer->virAddr;
387 static void *MmapCache(BufferHandle *buffer)
389 CHECK_NULLPOINTER_RETURN_VALUE(buffer, NULL);
390 if ((buffer->size > MAX_MALLOC_SIZE) || (buffer->size == 0)) {
391 HDF_LOGE("%s: size is invalid, buffer->size = %d", __func__, buffer->size);
394 if (buffer->usage == HBM_USE_MEM_MMZ_CACHE) {
395 return MmapMmzCache(buffer->phyAddr, buffer->size);
397 HDF_LOGE("%s: buffer usage error, buffer->usage = 0x%" PRIx64 "", __func__, buffer->usage);
402 static void *Mmap(BufferHandle *buffer)
404 CHECK_NULLPOINTER_RETURN_VALUE(buffer, NULL);
405 if ((buffer->size > MAX_MALLOC_SIZE) || (buffer->size == 0)) {
406 HDF_LOGE("%s: size is invalid, buffer->size = %d", __func__, buffer->size);
410 switch (buffer->usage) {
412 return MmapMmzCache(buffer->phyAddr, buffer->size);
414 return MmapMmzNoCache(buffer->phyAddr, buffer->size);
416 return MmapShm(buffer);
418 HDF_LOGE("%s: not support memory usage: 0x%" PRIx64 "", __func__, buffer->usage);
424 static int32_t UnmapShm(BufferHandle *buffer)
426 if (shmdt(buffer->virAddr) == -1) {
430 int32_t shmid = ((PriBufferHandle*)buffer)->shmid;
437 static int32_t Unmap(BufferHandle *buffer)
441 CHECK_NULLPOINTER_RETURN_VALUE(buffer, DISPLAY_NULL_PTR);
442 CHECK_NULLPOINTER_RETURN_VALUE(buffer->virAddr, DISPLAY_NULL_PTR);
443 if ((buffer->size > MAX_MALLOC_SIZE) || (buffer->size == 0)) {
444 HDF_LOGE("%s: size is invalid, buffer->size = %d", __func__, buffer->size);
447 switch (buffer->usage) {
450 ret = UnmapMmz(buffer);
453 ret = UnmapShm(buffer);
456 HDF_LOGE("%s: not support memory usage: 0x%" PRIx64 "", __func__, buffer->usage);
463 static int32_t FlushCache(BufferHandle *buffer)
467 CHECK_NULLPOINTER_RETURN_VALUE(buffer, DISPLAY_NULL_PTR);
468 CHECK_NULLPOINTER_RETURN_VALUE(buffer->virAddr, DISPLAY_NULL_PTR);
469 if ((buffer->size > MAX_MALLOC_SIZE) || (buffer->size == 0)) {
470 HDF_LOGE("%s: size is invalid, buffer->size = %d", __func__, buffer->size);
473 if (buffer->usage == HBM_USE_MEM_MMZ_CACHE) {
474 ret = MmzFlushCache(buffer);
480 HDF_LOGE("%s: buffer usage error, usage = 0x%" PRIx64"", __func__, buffer->usage);
486 static int32_t InvalidateCache(BufferHandle *buffer)
490 CHECK_NULLPOINTER_RETURN_VALUE(buffer, DISPLAY_NULL_PTR);
491 CHECK_NULLPOINTER_RETURN_VALUE(buffer->virAddr, DISPLAY_NULL_PTR);
492 if ((buffer->size > MAX_MALLOC_SIZE) || (buffer->size == 0)) {
493 HDF_LOGE("%s: size is invalid, buffer->size = %d", __func__, buffer->size);
496 if (buffer->usage == HBM_USE_MEM_MMZ_CACHE) {
497 ret = MmzInvalidateCache(buffer);
503 HDF_LOGE("%s: buffer usage error, usage = 0x%" PRIx64"", __func__, buffer->usage);