GPU
gpu, adreno serials, kgsl
bubbleben
这个作者很懒,什么都没留下…
展开
-
adreno源码系列(十)私有内存申请
1. 从kgsl pool中申请物理内存;2. 在GPU虚拟地址空间中寻找一块未被映射的VMA并返回其起始地址;3. 将GPU虚拟地址插入到进程的页表中;4. 将GPU虚拟地址返回给用户空间原创 2022-12-05 00:06:29 · 529 阅读 · 0 评论 -
adreno源码系列(九)全局内存申请
1. 从kgsl pool中申请物理内存;2. 通过vmap将此块物理内存映射到内核虚拟地址空间中;3. 根据物理内存大小计算随机偏移量,结合GPU虚拟基地址计算得到GPU虚拟地址;4. 将GPU虚拟地址添加到IOMMU的页表中;原创 2022-12-05 00:05:30 · 622 阅读 · 0 评论 -
adreno源码系列(八)adreno_ringbuffer
int adreno_ringbuffer_init(struct adreno_device *adreno_dev){ struct kgsl_device *device = KGSL_DEVICE(adreno_dev); int i; int status = -ENOMEM; if (!adreno_is_a3xx(adreno_dev)) { unsigned int priv = KGSL_MEMDESC_RANDOM | KGSL_MEMDESC_PRIVILEGED原创 2022-12-05 00:04:24 · 315 阅读 · 0 评论 -
adreno源码系列(七)adreno_dispatcher
static void adreno_dispatcher_work(struct kthread_work *work){ struct adreno_dispatcher *dispatcher = container_of(work, struct adreno_dispatcher, work); struct adreno_device *adreno_dev = container_of(dispatcher, struct adreno_device, dispatcher);原创 2022-12-05 00:03:45 · 319 阅读 · 0 评论 -
adreno源码系列(六)启动kgsl
int adreno_start(struct kgsl_device *device, int priority){ struct adreno_device *adreno_dev = ADRENO_DEVICE(device); // 当前进程nice值 int nice = task_nice(current); int ret; // 如果指定以低延时的工作队列启动, 而且当前nice值低于-7, 则重新设置其nice值 if (priority && (adreno_原创 2022-12-05 00:03:16 · 749 阅读 · 0 评论 -
adreno源码系列(五)打开kgsl
// 接"adreno源码系列(二)kgsl driver"中第3.3节static int kgsl_open_device(struct kgsl_device *device){ int result = 0; mutex_lock(&device->mutex); // kgsl_device->open_count记录/dev/kgsl-3d0被open的次数 if (device->open_count == 0) { // 如果是第一次打开, 则调用adre原创 2022-12-05 00:02:45 · 568 阅读 · 0 评论 -
adreno源码系列(四)注册platform_driver
static struct platform_driver adreno_platform_driver = { // kgsl probe函数[见第2节] .probe = adreno_probe, .remove = adreno_remove, // device_driver .driver = { .name = "kgsl-3d", // .pm = &adreno_pm_ops, .of_match_table = of_match_ptr原创 2022-12-05 00:01:58 · 344 阅读 · 0 评论 -
adreno源码系列(三)dts配置与gpu列表
以Find x3 pro设备树文件为例进行分析:https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8350/blob/oppo/sm8350_s_12.1_find_x3_pro/vendor/qcom/proprietary/devicetree/qcom/sm8150-gpu.dtsi原创 2022-12-05 00:01:11 · 586 阅读 · 0 评论 -
adreno系列(二)dts配置与gpu列表
以Find x3 pro设备树文件为例分析:https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8350/blob/oppo/sm8350_s_12.1_find_x3_pro/vendor/qcom/proprietary/devicetree/qcom/sm8150-gpu.dtsi原创 2022-12-05 00:00:50 · 531 阅读 · 0 评论 -
adreno系列(一)kgsl driver
static int __init kgsl_3d_init(void){ int ret; // 初始化kgsl_driver[见第2节] ret = kgsl_core_init(); if (ret) return ret; // 初始化gmu[见第3节] gmu_core_register(); // 注册adreno_platform_driver:见"adreno源码系列(四)注册platform_driver" ret = platform_driv原创 2022-12-05 00:00:23 · 920 阅读 · 1 评论