S5PV210 多媒体预留内存空间 4 - textscream, GPU1

textscream

是为3D引擎预留的内存,在drivers/gpu/pvr/s3c_bc/s3c_bc.c使用预留内存空间。


reserved size = ALIGN(fb0->var.xres * fb0->var.yres * fb0->var.bits_per_pixel, PAGE_ALIGN) * 2

如果framebuffer的xres=800 yres=480,那么所需的预留内存为3000kB


GPU1

#define  S5PV210_ANDROID_PMEM_MEMSIZE_PMEM_GPU1 (3300 * SZ_1K)

这个预留内存是为android系统特有的pmem驱动预留的,pmem是android为DSP vpu gpu等设备提供的一种内存分配机制,我们都知道vpu gpu这一类设备需要大块的连续物理内存以便进行硬件解码,硬件显示加速。PMEM就像一个小型的buddy内存管理系统,独立于linux kernel内存管理模块管理,不会受到内存管理中的外碎片的影响,同时还可以灵活的提供额外功能。

当然在系统运行一段时间后,PMEM也同样面临着外碎片问题,因此PMEM内存区的使用者尽量分配大块的内存,而不是零星的小内存。

在S5PV210平台代码中,仅仅propriety/libcopybit/使用该驱动,libcopybit共享库提供硬件的区块copy,这个功能和要借助FIMC1硬件完成,内存的分配可以使用FIMC1的物理内存,也可以使用PMEM1分配物理内存。因此我觉得如果强制使用FIMC1的内存,那么就不需要为PMEM1预留内存了。

libcopybit需要物理内存大小

buffer_count * buffer_size = 2 * (lcd_width * lcd_height * (bpp / 8)) = 3000KB。

当然理论上PMEM1还可能被系统其他需要连续物理内存的部件使用。





你可能感兴趣的:(S5PV210 多媒体预留内存空间 4 - textscream, GPU1)