#include #include #include #include #include #include "csi_dsp_api.h" #include "csi_dsp_task_defs.h" #include "csi_dsp_post_process_defs.h" #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineTestRunner.h" struct buf_param{ int with; int height; int stride; int plane_num; }; TEST_GROUP(DspPostProcessTestLibLoader) { void setup() { instance = csi_dsp_create_instance(0); if(!instance) { FAIL_TEST("create fail\n"); } task= csi_dsp_create_task(instance,CSI_DSP_TASK_SW_TO_SW); if(!task) { FAIL_TEST("task create fail\n"); } } void teardown() { csi_dsp_destroy_task(task); csi_dsp_delete_instance(instance); } void *instance; void *task; int oneRequsetHelper(int with,int height,int stride,int plane_num,char *name) { int i=0; int j=0; int ret =0 ; struct timeval time_enqueue; struct timeval time_dequeue; csi_dsp_algo_load_req_t alog_config={ .algo_id=0, }; if(csi_dsp_task_acquire_algo(task,name)) { FAIL_TEST("algo kernel load fail\n"); } struct csi_sw_task_req* req=NULL; req =csi_dsp_task_create_request(task); if(req==NULL) { FAIL_TEST("req create fail\n"); } struct csi_dsp_buffer buf1; buf1.buf_id = 0; buf1.dir = CSI_DSP_BUFFER_IN; buf1.type = CSI_DSP_BUF_ALLOC_DRV; buf1.plane_count = plane_num; buf1.width =with; buf1.height =height; for(i=0;istatus != CSI_DSP_SW_REQ_DONE) { FAIL_TEST("req dequeue fail\n"); } gettimeofday(&time_dequeue, 0); printf("req:%d,start:%d,%d,end:%d,%d\n",req->request_id,time_enqueue.tv_sec,time_enqueue.tv_usec,time_dequeue.tv_sec,time_dequeue.tv_usec); // MEMCMP_EQUAL((void*)buf1.planes[0].buf_vir,(void *)buf2.planes[0].buf_vir,buf1.planes[0].size); // memset((void *)buf2.planes[0].buf_vir,0xff,16); for(i=0;i0;loop--) // { // req = csi_dsp_request_dequeue(task); // if(req==NULL && req->status != CSI_DSP_SW_REQ_DONE) // { // FAIL_TEST("req dequeue fail\n"); // } // // MEMCMP_EQUAL((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // int ret = memcmp((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // CHECK_EQUAL_ZERO(ret); // csi_dsp_task_release_request(req); // } // } // TEST(DspPostProcessTestLibLoader,MultiProcessReqEnqueueConcentration) // { // struct csi_sw_task_req* req_list[6]; // int loop=0; // struct csi_sw_task_req* req=NULL; // int req_num = sizeof(req_list)/sizeof(struct csi_sw_task_req*); // csi_dsp_algo_load_req_t alog_config={ // .algo_id=0, // }; // if(csi_dsp_task_load_algo(task,&alog_config)) // { // FAIL_TEST("algo kernel load fail\n"); // } // for(loop =0 ;loop < req_num;loop++) // { // req =csi_dsp_task_create_request(task); // if(req==NULL) // { // FAIL_TEST("req create fail\n"); // } // req_list[loop]=req; // struct csi_dsp_buffer buf1; // buf1.buf_id = 0; // buf1.dir = CSI_DSP_BUFFER_IN; // buf1.type = CSI_DSP_BUF_ALLOC_DRV; // buf1.plane_count = 1; // buf1.width =640; // buf1.height =480; // buf1.planes[0].stride= 640; // buf1.planes[0].size= 640*480; // if(csi_dsp_request_add_buffer(req,&buf1)) // { // csi_dsp_task_release_request(req); // FAIL_TEST("Add buffer:%d\n"); // } // int i=0; // for(i=0;i0;loop--) // { // req = csi_dsp_request_dequeue(task); // if(req==NULL && req->status != CSI_DSP_SW_REQ_DONE) // { // FAIL_TEST("req dequeue fail\n"); // } // // MEMCMP_EQUAL((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // int ret = memcmp((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // CHECK_EQUAL_ZERO(ret); // csi_dsp_task_release_request(req); // } // } // TEST(DspPostProcessTestLibLoader,MultiProcessReqEnqueueConcentration_1) // { // struct csi_sw_task_req* req_list[6]; // int loop=0; // struct csi_sw_task_req* req=NULL; // int req_num = sizeof(req_list)/sizeof(struct csi_sw_task_req*); // csi_dsp_algo_load_req_t alog_config={ // .algo_id=0, // }; // if(csi_dsp_task_load_algo(task,&alog_config)) // { // FAIL_TEST("algo kernel load fail\n"); // } // for(loop =0 ;loop < req_num;loop++) // { // req =csi_dsp_task_create_request(task); // if(req==NULL) // { // FAIL_TEST("req create fail\n"); // } // req_list[loop]=req; // struct csi_dsp_buffer buf1; // buf1.buf_id = 0; // buf1.dir = CSI_DSP_BUFFER_IN; // buf1.type = CSI_DSP_BUF_ALLOC_DRV; // buf1.plane_count = 1; // buf1.width =640; // buf1.height =480; // buf1.planes[0].stride= 640; // buf1.planes[0].size= 640*480; // if(csi_dsp_request_add_buffer(req,&buf1)) // { // csi_dsp_task_release_request(req); // FAIL_TEST("Add buffer:%d\n"); // } // int i=0; // for(i=0;i0;loop--) // { // req = csi_dsp_request_dequeue(task); // if(req==NULL && req->status != CSI_DSP_SW_REQ_DONE) // { // FAIL_TEST("req dequeue fail\n"); // } // } // for(loop =0 ;loop < req_num;loop++) // { // req = req_list[loop]; // // MEMCMP_EQUAL((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // int ret = memcmp((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // CHECK_EQUAL_ZERO(ret); // csi_dsp_task_release_request(req); // } // } // TEST(DspPostProcessTestLibLoader,MultiProcessReqEnqueueConcentration_profile_640) // { // struct csi_sw_task_req* req_list[6]; // struct timeval cur_time_enqueue[6]; // struct timeval cur_time_dequeue[6]; // int loop=0; // struct csi_sw_task_req* req=NULL; // int req_num = sizeof(req_list)/sizeof(struct csi_sw_task_req*); // csi_dsp_algo_load_req_t alog_config={ // .algo_id=0, // }; // if(csi_dsp_task_load_algo(task,&alog_config)) // { // FAIL_TEST("algo kernel load fail\n"); // } // for(loop =0 ;loop < req_num;loop++) // { // req =csi_dsp_task_create_request(task); // if(req==NULL) // { // FAIL_TEST("req create fail\n"); // } // req_list[loop]=req; // struct csi_dsp_buffer buf1; // buf1.buf_id = 0; // buf1.dir = CSI_DSP_BUFFER_IN; // buf1.type = CSI_DSP_BUF_ALLOC_DRV; // buf1.plane_count = 1; // buf1.width =640; // buf1.height =480; // buf1.planes[0].stride= 640; // buf1.planes[0].size= 640*480; // if(csi_dsp_request_add_buffer(req,&buf1)) // { // csi_dsp_task_release_request(req); // FAIL_TEST("Add buffer:%d\n"); // } // int i=0; // for(i=0;i0;loop--) // { // req = csi_dsp_request_dequeue(task); // if(req==NULL && req->status != CSI_DSP_SW_REQ_DONE) // { // FAIL_TEST("req dequeue fail\n"); // } // gettimeofday(&cur_time_dequeue[loop], 0); // } // for(loop =0 ;loop < req_num;loop++) // { // printf("req:%d,start:%d,%d,end:%d,%d\n",req_list[loop]->request_id,cur_time_enqueue[loop].tv_sec,cur_time_enqueue[loop].tv_usec, // cur_time_dequeue[loop].tv_sec,cur_time_dequeue[loop].tv_usec); // } // for(loop =0 ;loop < req_num;loop++) // { // req = req_list[loop]; // // MEMCMP_EQUAL((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // int ret = memcmp((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // CHECK_EQUAL_ZERO(ret); // csi_dsp_task_release_request(req); // } // } // TEST(DspPostProcessTestLibLoader,MultiProcessReqEnqueueConcentration_profile_1920) // { // struct csi_sw_task_req* req_list[6]; // struct timeval cur_time_enqueue[6]; // struct timeval cur_time_dequeue[6]; // int loop=0; // struct csi_sw_task_req* req=NULL; // int req_num = sizeof(req_list)/sizeof(struct csi_sw_task_req*); // csi_dsp_algo_load_req_t alog_config={ // .algo_id=0, // }; // if(csi_dsp_task_load_algo(task,&alog_config)) // { // FAIL_TEST("algo kernel load fail\n"); // } // for(loop =0 ;loop < req_num;loop++) // { // req =csi_dsp_task_create_request(task); // if(req==NULL) // { // FAIL_TEST("req create fail\n"); // } // req_list[loop]=req; // struct csi_dsp_buffer buf1; // buf1.buf_id = 0; // buf1.dir = CSI_DSP_BUFFER_IN; // buf1.type = CSI_DSP_BUF_ALLOC_DRV; // buf1.plane_count = 1; // buf1.width =1920; // buf1.height =1080; // buf1.planes[0].stride= 1920; // buf1.planes[0].size= 1920*1080; // if(csi_dsp_request_add_buffer(req,&buf1)) // { // csi_dsp_task_release_request(req); // FAIL_TEST("Add buffer:%d\n"); // } // int i=0; // for(i=0;i0;loop--) // { // req = csi_dsp_request_dequeue(task); // if(req==NULL && req->status != CSI_DSP_SW_REQ_DONE) // { // FAIL_TEST("req dequeue fail\n"); // } // gettimeofday(&cur_time_dequeue[loop], 0); // } // uint32_t counter; // for(loop =0 ;loop < req_num;loop++) // { // printf("req:%d,start:%d,%d,end:%d,%d\n",req_list[loop]->request_id,cur_time_enqueue[loop].tv_sec,cur_time_enqueue[loop].tv_usec, // cur_time_dequeue[loop].tv_sec,cur_time_dequeue[loop].tv_usec); // } // for(loop =0 ;loop < req_num;loop++) // { // req = req_list[loop]; // // MEMCMP_EQUAL((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // int ret = memcmp((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // CHECK_EQUAL_ZERO(ret); // csi_dsp_task_release_request(req); // } // } // TEST(DspPostProcessTestLibLoader,MultiProcessReqEnqueueConcentration_profile_4096) // { // struct csi_sw_task_req* req_list[6]; // struct timeval cur_time_enqueue[6]; // struct timeval cur_time_dequeue[6]; // int loop=0; // struct csi_sw_task_req* req=NULL; // int req_num = sizeof(req_list)/sizeof(struct csi_sw_task_req*); // csi_dsp_algo_load_req_t alog_config={ // .algo_id=0, // }; // if(csi_dsp_task_load_algo(task,&alog_config)) // { // FAIL_TEST("algo kernel load fail\n"); // } // for(loop =0 ;loop < req_num;loop++) // { // req =csi_dsp_task_create_request(task); // if(req==NULL) // { // FAIL_TEST("req create fail\n"); // } // req_list[loop]=req; // struct csi_dsp_buffer buf1; // buf1.buf_id = 0; // buf1.dir = CSI_DSP_BUFFER_IN; // buf1.type = CSI_DSP_BUF_ALLOC_DRV; // buf1.plane_count = 1; // buf1.width =4096; // buf1.height =2160; // buf1.planes[0].stride= 4096; // buf1.planes[0].size= 4096*2160; // if(csi_dsp_request_add_buffer(req,&buf1)) // { // csi_dsp_task_release_request(req); // FAIL_TEST("Add buffer:%d\n"); // } // int i=0; // for(i=0;i0;loop--) // { // req = csi_dsp_request_dequeue(task); // if(req==NULL && req->status != CSI_DSP_SW_REQ_DONE) // { // FAIL_TEST("req dequeue fail\n"); // } // gettimeofday(&cur_time_dequeue[loop], 0); // } // uint32_t counter; // for(loop =0 ;loop < req_num;loop++) // { // printf("req:%d,start:%d,%d,end:%d,%d\n",req_list[loop]->request_id,cur_time_enqueue[loop].tv_sec,cur_time_enqueue[loop].tv_usec, // cur_time_dequeue[loop].tv_sec,cur_time_dequeue[loop].tv_usec); // } // for(loop =0 ;loop < req_num;loop++) // { // req = req_list[loop]; // // MEMCMP_EQUAL((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // int ret = memcmp((void*)req->buffers[0].planes[0].buf_vir,(void *)req->buffers[1].planes[0].buf_vir,req->buffers[0].planes[0].size); // CHECK_EQUAL_ZERO(ret); // csi_dsp_task_release_request(req); // } // }