mirror of
				https://github.com/nyanmisaka/mpp.git
				synced 2025-10-31 20:42:53 +08:00 
			
		
		
		
	 d4913c1b88
			
		
	
	d4913c1b88
	
	
	
		
			
			Signed-off-by: Herman Chen <herman.chen@rock-chips.com> Change-Id: Ice181f6d8cf312d68c79d6e6a33cddcbf65ef5f6
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: Apache-2.0 OR MIT */
 | |
| /*
 | |
|  * Copyright (c) 2023 Rockchip Electronics Co., Ltd.
 | |
|  */
 | |
| 
 | |
| #define MODULE_TAG "mpp_dmabuf_test"
 | |
| 
 | |
| #include <string.h>
 | |
| #include <errno.h>
 | |
| 
 | |
| #include "mpp_log.h"
 | |
| #include "mpp_buffer.h"
 | |
| #include "mpp_common.h"
 | |
| #include "mpp_dmabuf.h"
 | |
| 
 | |
| int main()
 | |
| {
 | |
|     MppBufferGroup grp = NULL;
 | |
|     MppBuffer buf = NULL;
 | |
|     RK_S32 fd = -1;
 | |
|     RK_U8 *ptr = NULL;
 | |
|     MPP_RET ret = MPP_NOK;
 | |
| 
 | |
|     mpp_logi("mpp dmabuf test start\n");
 | |
| 
 | |
|     do {
 | |
|         ret = mpp_buffer_group_get_internal(&grp, MPP_BUFFER_TYPE_DMA_HEAP | MPP_BUFFER_FLAGS_CACHABLE);
 | |
|         if (ret) {
 | |
|             mpp_loge("get dmaheap buffer group failed ret %d\n", ret);
 | |
|             break;
 | |
|         }
 | |
| 
 | |
|         ret = mpp_buffer_get(grp, &buf, SZ_1M);
 | |
|         if (ret) {
 | |
|             mpp_loge("get 1M dmaheap buffer failed ret %d\n", ret);
 | |
|             break;
 | |
|         }
 | |
| 
 | |
|         fd = mpp_buffer_get_fd(buf);
 | |
|         ptr = mpp_buffer_get_ptr(buf);
 | |
| 
 | |
|         ret = mpp_dmabuf_sync_begin(fd, 0, MODULE_TAG);
 | |
|         if (ret) {
 | |
|             mpp_loge("get dmaheap buffer sync begin failed ret %d\n", ret);
 | |
|             break;
 | |
|         }
 | |
| 
 | |
|         ptr[0] = 'a';
 | |
|         ptr[1] = 'b';
 | |
|         ptr[2] = 'c';
 | |
|         ptr[3] = 'd';
 | |
| 
 | |
|         mpp_logi("ioctl begin cpu access         success\n");
 | |
| 
 | |
|         ret = mpp_dmabuf_sync_end(fd, 0, MODULE_TAG);
 | |
|         if (ret) {
 | |
|             mpp_loge("get dmaheap buffer sync begin failed ret %d\n", ret);
 | |
|             break;
 | |
|         }
 | |
| 
 | |
|         mpp_logi("ioctl end cpu access           success\n");
 | |
| 
 | |
|         ret = mpp_dmabuf_sync_partial_begin(fd, 0, 0, SZ_512K, MODULE_TAG);
 | |
|         mpp_logi("ioctl begin cpu access partial %s\n", ret ? "failed" : "success");
 | |
| 
 | |
|         ret = mpp_dmabuf_sync_partial_end(fd, 0, 0, SZ_512K, MODULE_TAG);
 | |
|         mpp_logi("ioctl end cpu access partial   %s\n", ret ? "failed" : "success");
 | |
| 
 | |
|         ret = mpp_dmabuf_set_name(fd, "dmabuf_test", MODULE_TAG);
 | |
|         mpp_logi("ioctl set name                 %s\n", ret ? "failed" : "success");
 | |
| 
 | |
|         ret = mpp_dmabuf_sync_partial_support();
 | |
|         mpp_logi("ioctl sync partial             %s\n", ret ? "YES" : "NO");
 | |
| 
 | |
|         ret = MPP_OK;
 | |
|     } while (0);
 | |
| 
 | |
|     if (buf) {
 | |
|         mpp_buffer_put(buf);
 | |
|         buf = NULL;
 | |
|     }
 | |
| 
 | |
|     if (grp) {
 | |
|         mpp_buffer_group_put(grp);
 | |
|         grp = NULL;
 | |
|     }
 | |
| 
 | |
|     mpp_logi("mpp dmabuf test done %s\n", ret ? "failed" : "success");
 | |
| 
 | |
|     return 0;
 | |
| }
 |