明月I伊人
明月I伊人
我在使用XDMA从FPGA PCIE把数据放到了xdma.buffer里,xdma.buffer是posix_memalign()分配的内存,当我把1920*1080*3大小的数据用memcpy拷贝到mpp buffer(DRM或者DMA_HEAP类型)里,使用时间3---4ms,但是cpu占用率约40%。 我又使用librga的imcopy(),效果差不多,耗时3---4ms,cpu占用率仍然30%~40%。 请问有没有什么方法可以降低CPU使用率呢?有没有免拷贝或者DMA直接拷贝,不经过CPU的方法呢?
我在使用XDMA从FPGA PCIE把数据放到了xdma.buffer里,xdma.buffer是posix_memalign()分配的内存,当我把192010803大小的数据用memcpy拷贝到mpp buffer(DRM或者DMA_HEAP类型)里,使用时间3---4ms,但是cpu占用率约40%。 我又使用librga的imcopy(),效果差不多,耗时3---4ms,cpu占用率仍然30%~40%。 请问有没有什么方法可以降低CPU使用率呢?有没有免拷贝或者DMA直接拷贝,不经过CPU的方法呢?
请问一下: 1、使用drm_buf_alloc分配的连续drm内存,是否是对齐的(1024字节、4096字节对齐)? 2、使用dma_buf_alloc分配的dma、cma内存,是否是物理连续且对齐的(1024字节、4096字节对齐)?
我使用cuda硬解码1920*1080的视频后,图像格式是AV_PIX_FMT_CUDA,linesize[0]和linesize[1]是2048,使用代码将解码后的数据复制到opengl纹理中: `cudaArray_t cudaArray2; cudaGraphicsMapResources(1, &cudaResource2, 0); cudaGraphicsSubResourceGetMappedArray(&cudaArray2, cudaResource2, 0, 0); err = cudaMemcpy2DToArray(cudaArray2, 0, 0, qsCodecCtx->pFrame->data[1], qsCodecCtx->pFrame->linesize[1], qsCodecCtx->pFrame->width, qsCodecCtx->pFrame->height / 2, cudaMemcpyDeviceToDevice); cudaGraphicsUnmapResources(1, &cudaResource2, 0);` cudaMemcpy2DToArray()执行失败,返回无效参数错误。 此段代码在64位上运行正常的。不知道为什么在32位上会失败。