
Mesa框架学习
文章平均质量分 86
IT先森
Android界的大牛忒多了,我大胆的估摸一下有生之年我是达不到那个高度了!但是怎么着我也要在这浩瀚的博客世界留下我的痕迹才行!
展开
-
Mesa软件框架以及重要数据结构分析
MESA的核心数据结构很多很复杂,上图列举了一些核心数据结构主要强调了它们的层次关系,即上层使用下层的抽象结构(比如 函数指针调用),下层为上次做具体的实现(比如具体的函数实现),虽然是C代码但设计理念基本上与C++的继承类似(这个也是C语言实现大型代码框架的核心)。Mesa的实现比较复杂,其中还有许多的数据结构之间的关系逻辑还不是很清楚。这里的核心主要是Mesa软件EGL/GL层级的递进调用。1.1 Mesa下EGL/GL核心数据结构和层级关系。1.2 Mesa下核心文件和核心结构体。原创 2024-05-28 19:11:26 · 1463 阅读 · 0 评论 -
Android环境下Mesa初始化流程重学习之eglCreateContext
总得找点事情干不是!2.1 smapi->screen->context_create的实现。这块我们在前面分析时,已经提到过了。我们接着继续分析_mesa_initialize_context。这里的核心是_glapi_table,它在前面已经被初始化了!我们接着继续分析st_create_context_priv。Mesa初始化流程重学习之eglCreateContext。Mesa初始化流程重学习之eglCreateContext。2.2 st_create_context的实现。原创 2024-05-28 17:33:44 · 770 阅读 · 0 评论 -
Android环境下Mesa初始化流程重学习之eglInitialize
那么这里的xxx_driver_descriptor是怎么实现的,刚开始我通过grep搜索发现只有定义,没有怎么实现。这里的__driDriverGetExtensions_xxx_gpu函数符号表是怎么拼凑成的了,如果我们通过grep在mesa搜索,怎么搜索也搜不到了。分析完了pipe_loader_drm_probe_fd流程,我们接着咔咔一顿接着继续分析,pipe_loader_create_screen它会构建pipe_screen的结构体类型!真可以说的上是你中有我,我中有你的典范啊。原创 2024-05-28 17:30:06 · 1449 阅读 · 0 评论 -
Mesa GL Dispatch分发分析与理解
gl_打头的函数是OpenGL API,首先这些函数都是函数指针,这些函数挂载的函数就是mesa里以_mesa_打头的对应函数。在正式分析相关分发流程之前,我们必须明确的一点就是现在的Mesa采用的是最新的gallium架构,下图的左侧调用栈是在gallium 架构之前采用的模式,右侧是gallium架构下的模式。通过我们前面的st_create_context_priv分析可知,获取到table表以后,然后通过id会找到对应的函数,即指向了_mesa_Flush。原创 2024-05-28 17:14:39 · 1286 阅读 · 0 评论 -
Mesa Gallium框架入门初探
它负责把上层库的state(blend modes、texture statte等)和draw command(glDrawArrays、glDrawPixels)等转换成MESA内部的pipe对象和操作。state tracker也可以直接通过p_winsys和Winsys通信,一般GPU厂商也要实现一个自己的winsys,可以参考纯软的 kms_dri_sw_winsys.c。: 把Gallium的state、shader和primitive概念转换成硬件能懂的语言。这个系列博客,确实写得蛮好的。原创 2024-05-28 17:03:30 · 1637 阅读 · 0 评论