Skip to content

Commit

Permalink
Revert "Revert ION heap_mask changes"
Browse files Browse the repository at this point in the history
This reverts commit e9cf7c0.
  • Loading branch information
Daz Jones committed Nov 1, 2013
1 parent de4df2c commit eb71118
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 32 deletions.
34 changes: 18 additions & 16 deletions mm-video/vidc/vdec/src/omx_vdec.cpp
Expand Up @@ -4136,7 +4136,7 @@ OMX_ERRORTYPE omx_vdec::use_output_buffer(
drv_ctx.op_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
drv_ctx.op_buf.buffer_size,drv_ctx.op_buf.alignment,
&drv_ctx.op_buf_ion_info[i].ion_alloc_data,
&drv_ctx.op_buf_ion_info[i].fd_ion_data,CACHED);
&drv_ctx.op_buf_ion_info[i].fd_ion_data,ION_FLAG_CACHED);
if(drv_ctx.op_buf_ion_info[i].ion_device_fd < 0) {
return OMX_ErrorInsufficientResources;
}
Expand Down Expand Up @@ -4729,7 +4729,7 @@ OMX_ERRORTYPE omx_vdec::allocate_input_buffer(
drv_ctx.ip_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
drv_ctx.ip_buf.buffer_size,drv_ctx.op_buf.alignment,
&drv_ctx.ip_buf_ion_info[i].ion_alloc_data,
&drv_ctx.ip_buf_ion_info[i].fd_ion_data,CACHED);
&drv_ctx.ip_buf_ion_info[i].fd_ion_data,ION_FLAG_CACHED);
if(drv_ctx.ip_buf_ion_info[i].ion_device_fd < 0) {
return OMX_ErrorInsufficientResources;
}
Expand Down Expand Up @@ -5048,7 +5048,7 @@ OMX_ERRORTYPE omx_vdec::allocate_output_buffer(
drv_ctx.op_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
drv_ctx.op_buf.buffer_size,drv_ctx.op_buf.alignment,
&drv_ctx.op_buf_ion_info[i].ion_alloc_data,
&drv_ctx.op_buf_ion_info[i].fd_ion_data, CACHED);
&drv_ctx.op_buf_ion_info[i].fd_ion_data, ION_FLAG_CACHED);
if (drv_ctx.op_buf_ion_info[i].ion_device_fd < 0) {
return OMX_ErrorInsufficientResources;
}
Expand Down Expand Up @@ -7553,30 +7553,31 @@ int omx_vdec::alloc_map_ion_memory(OMX_U32 buffer_size,
DEBUG_PRINT_ERROR("Invalid arguments to alloc_map_ion_memory\n");
return -EINVAL;
}
if(!secure_mode && flag == CACHED)
{
ion_dev_flag = O_RDONLY;
} else {
ion_dev_flag = (O_RDONLY | O_DSYNC);
}
ion_dev_flag = O_RDONLY;
fd = open (MEM_DEVICE, ion_dev_flag);
if (fd < 0) {
DEBUG_PRINT_ERROR("opening ion device failed with fd = %d\n", fd);
return fd;
}
alloc_data->flags = 0;
if (!secure_mode && (flag & ION_FLAG_CACHED))
{
alloc_data->flags |= ION_FLAG_CACHED;
}
alloc_data->len = buffer_size;
alloc_data->align = clip2(alignment);
if (alloc_data->align < 4096)
{
alloc_data->align = 4096;
}

if(secure_mode) {
alloc_data->flags = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
alloc_data->heap_mask = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
} else {
#ifdef MAX_RES_720P
alloc_data->flags = ION_HEAP(MEM_HEAP_ID);
alloc_data->heap_mask = ION_HEAP(MEM_HEAP_ID);
#else
alloc_data->flags = (ION_HEAP(ION_IOMMU_HEAP_ID));
alloc_data->heap_mask = (ION_HEAP(ION_IOMMU_HEAP_ID));
#endif
}
rc = ioctl(fd,ION_IOC_ALLOC,alloc_data);
Expand All @@ -7600,9 +7601,9 @@ int omx_vdec::alloc_map_ion_memory(OMX_U32 buffer_size,
fd = -ENOMEM;
}
DEBUG_PRINT_HIGH("ION: alloc_data: handle(0x%X), len(%u), align(%u), "
"flags(0x%x), fd_data: handle(0x%x), fd(0x%x)",
"heap_mask(0x%x), fd_data: handle(0x%x), fd(0x%x)",
alloc_data->handle, alloc_data->len, alloc_data->align,
alloc_data->flags, fd_data->handle, fd_data->fd);
alloc_data->heap_mask, fd_data->handle, fd_data->fd);
return fd;
}

Expand Down Expand Up @@ -8855,7 +8856,7 @@ OMX_ERRORTYPE omx_vdec::vdec_alloc_h264_mv()
drv_ctx.h264_mv.ion_device_fd = alloc_map_ion_memory(
size, 8192,
&drv_ctx.h264_mv.ion_alloc_data,
&drv_ctx.h264_mv.fd_ion_data,CACHED);
&drv_ctx.h264_mv.fd_ion_data,ION_FLAG_CACHED);
if (drv_ctx.h264_mv.ion_device_fd < 0) {
return OMX_ErrorInsufficientResources;
}
Expand Down Expand Up @@ -9232,7 +9233,8 @@ OMX_ERRORTYPE omx_vdec::allocate_color_convert_buf::allocate_buffers_color_conve
unsigned int i = allocated_count;
op_buf_ion_info[i].ion_device_fd = omx->alloc_map_ion_memory(
buffer_size_req,buffer_alignment_req,
&op_buf_ion_info[i].ion_alloc_data,&op_buf_ion_info[i].fd_ion_data,CACHED);
&op_buf_ion_info[i].ion_alloc_data,&op_buf_ion_info[i].fd_ion_data,
ION_FLAG_CACHED);

pmem_fd[i] = op_buf_ion_info[i].fd_ion_data.fd;
if (op_buf_ion_info[i].ion_device_fd < 0) {
Expand Down
25 changes: 13 additions & 12 deletions mm-video/vidc/venc/src/omx_video_base.cpp
Expand Up @@ -2131,7 +2131,7 @@ OMX_ERRORTYPE omx_video::use_input_buffer(
#ifdef USE_ION
m_pInput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sInPortDef.nBufferSize,
&m_pInput_ion[i].ion_alloc_data,
&m_pInput_ion[i].fd_ion_data,CACHED);
&m_pInput_ion[i].fd_ion_data,ION_FLAG_CACHED);
if(m_pInput_ion[i].ion_device_fd < 0) {
DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");
return OMX_ErrorInsufficientResources;
Expand Down Expand Up @@ -2330,7 +2330,7 @@ OMX_ERRORTYPE omx_video::use_output_buffer(
m_pOutput_ion[i].ion_device_fd = alloc_map_ion_memory(
m_sOutPortDef.nBufferSize,
&m_pOutput_ion[i].ion_alloc_data,
&m_pOutput_ion[i].fd_ion_data,CACHED);
&m_pOutput_ion[i].fd_ion_data,ION_FLAG_CACHED);
if(m_pOutput_ion[i].ion_device_fd < 0) {
DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");
return OMX_ErrorInsufficientResources;
Expand Down Expand Up @@ -2747,7 +2747,7 @@ OMX_ERRORTYPE omx_video::allocate_input_buffer(
#ifdef USE_ION
m_pInput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sInPortDef.nBufferSize,
&m_pInput_ion[i].ion_alloc_data,
&m_pInput_ion[i].fd_ion_data,CACHED);
&m_pInput_ion[i].fd_ion_data,ION_FLAG_CACHED);
if(m_pInput_ion[i].ion_device_fd < 0) {
DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");
return OMX_ErrorInsufficientResources;
Expand Down Expand Up @@ -2906,7 +2906,7 @@ OMX_ERRORTYPE omx_video::allocate_output_buffer(
#ifdef USE_ION
m_pOutput_ion[i].ion_device_fd = alloc_map_ion_memory(m_sOutPortDef.nBufferSize,
&m_pOutput_ion[i].ion_alloc_data,
&m_pOutput_ion[i].fd_ion_data,CACHED);
&m_pOutput_ion[i].fd_ion_data,ION_FLAG_CACHED);
if(m_pOutput_ion[i].ion_device_fd < 0) {
DEBUG_PRINT_ERROR("\nERROR:ION device open() Failed");
return OMX_ErrorInsufficientResources;
Expand Down Expand Up @@ -4303,11 +4303,7 @@ int omx_video::alloc_map_ion_memory(int size,struct ion_allocation_data *alloc_d
DEBUG_PRINT_ERROR("\nInvalid input to alloc_map_ion_memory");
return -EINVAL;
}
if(!secure_session && flag == CACHED) {
ion_dev_flags = O_RDONLY;
} else {
ion_dev_flags = O_RDONLY | O_DSYNC;
}
ion_dev_flags = O_RDONLY;
ion_device_fd = open (MEM_DEVICE,ion_dev_flags);
if(ion_device_fd < 0)
{
Expand All @@ -4316,14 +4312,19 @@ int omx_video::alloc_map_ion_memory(int size,struct ion_allocation_data *alloc_d
}
alloc_data->len = size;
alloc_data->align = 4096;
alloc_data->flags = 0;
if(!secure_session && (flag & ION_FLAG_CACHED))
{
alloc_data->flags = ION_FLAG_CACHED;
}

if (secure_session)
alloc_data->flags = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
alloc_data->heap_mask = (ION_HEAP(MEM_HEAP_ID) | ION_SECURE);
else
#ifdef MAX_RES_720P
alloc_data->flags = ION_HEAP(MEM_HEAP_ID);
alloc_data->heap_mask = ION_HEAP(MEM_HEAP_ID);
#else
alloc_data->flags = (ION_HEAP(MEM_HEAP_ID) |
alloc_data->heap_mask = (ION_HEAP(MEM_HEAP_ID) |
ION_HEAP(ION_IOMMU_HEAP_ID));
#endif
rc = ioctl(ion_device_fd,ION_IOC_ALLOC,alloc_data);
Expand Down
5 changes: 3 additions & 2 deletions mm-video/vidc/venc/src/video_encoder_device.cpp
Expand Up @@ -1250,11 +1250,12 @@ OMX_U32 venc_dev::pmem_allocate(OMX_U32 size, OMX_U32 alignment, OMX_U32 count)
return -1;
}

recon_buff[count].alloc_data.flags = 0;
recon_buff[count].alloc_data.len = size;
#ifdef MAX_RES_720P
recon_buff[count].alloc_data.flags = ION_HEAP(MEM_HEAP_ID);
recon_buff[count].alloc_data.heap_mask = ION_HEAP(MEM_HEAP_ID);
#else
recon_buff[count].alloc_data.flags = (ION_HEAP(MEM_HEAP_ID) |
recon_buff[count].alloc_data.heap_mask = (ION_HEAP(MEM_HEAP_ID) |
(venc_encoder->is_secure_session() ? ION_SECURE
: ION_HEAP(ION_IOMMU_HEAP_ID)));
#endif
Expand Down
5 changes: 3 additions & 2 deletions mm-video/vidc/venc/test/venc_test.cpp
Expand Up @@ -363,16 +363,17 @@ void* PmemMalloc(OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO* pMem, int nSize)
return NULL;

#ifdef USE_ION
ion_data.ion_device_fd = open (PMEM_DEVICE,O_RDONLY | O_DSYNC);
ion_data.ion_device_fd = open (PMEM_DEVICE,O_RDONLY);
if(ion_data.ion_device_fd < 0)
{
E("\nERROR: ION Device open() Failed");
return NULL;
}
nSize = (nSize + 4095) & (~4095);
ion_data.alloc_data.len = nSize;
ion_data.alloc_data.flags = 0x1 << ION_CP_MM_HEAP_ID;
ion_data.alloc_data.heap_mask = 0x1 << ION_CP_MM_HEAP_ID;
ion_data.alloc_data.align = 4096;
ion_data.alloc_data.flags = 0;

rc = ioctl(ion_data.ion_device_fd,ION_IOC_ALLOC,&ion_data.alloc_data);
if(rc || !ion_data.alloc_data.handle) {
Expand Down

0 comments on commit eb71118

Please sign in to comment.