当前位置: 首页 > news >正文

华安县城乡规划建设局网站视频剪辑培训班

华安县城乡规划建设局网站,视频剪辑培训班,展会布置,网站代理服务器设置前言 不必害怕未知,无需恐惧犯错,做一个Creator! 一、总体框架图 暂时无法在飞书文档外展示此内容 二、Mesa API 处理 OpenGL 函数调用 Mesa API 负责实现 OpenGL 和其他图形 API 的函数接口。Mesa API 表是一个重要的数据结构&#xf…

前言

不必害怕未知,无需恐惧犯错,做一个Creator!

一、总体框架图

暂时无法在飞书文档外展示此内容
在这里插入图片描述

二、Mesa API 处理 OpenGL 函数调用

Mesa API 负责实现 OpenGL 和其他图形 API 的函数接口。Mesa API 表是一个重要的数据结构,用于存储 OpenGL 函数的指针、版本信息、扩展支持等。_glapi_table 包含了大量的函数指针,每个指针对应于一个特定的 OpenGL 函数。这些指针在运行时被动态设置为对应的实现函数,例如 glCompileShader()、glLinkProgram() 等。
暂时无法在飞书文档外展示此内容

src/mesa/shaderapi.c:实现OpenGL API和Mesa函数接口的对应。

三、State Tacker对GLSL代码链接处理

在链接过程,state tracker层协调着色器程序的链接,将多个着色器链接为最终可执行的着色器程序,即NIR。并且将链接后的着色器程序最终传递给gallium驱动。ST层还管理着色器对象的状态,包括编译状态、链接状态等。
暂时无法在飞书文档外展示此内容

src/mesa/state_tracker/st_glsl_to_nir.c:在ST层主要实现了 GLSL 到 NIR 的转换功能,包括 GLSL 程序的链接、NIR 的最终化、优化以及统一变量的处理。

四、GLSL 编译器对GLSL代码编译和链接处理

在编译过程,当应用程序通过OpenGL函数调用提交GLSL着色器源代码时,Mesa API将GLSL代码传递给GLSL编译器,并进行编译生成Mesa IR中间表示。
在链接过程,ST层负责将Mesa IR中间表示传递给GLSL编译器,GLSL编译器将Mesa IR转化成NIR并回传给ST层进行后续处理。
1、编译过程,GLSL源码转化成IR

  • src/compiler/glsl/glsl_parser_extras.cpp :提供了对 GLSL 源代码的解析和语法分析所需的额外功能,包括处理预处理指令、处理注释、管理源代码中的位置信息
  • src/compiler/glsl/ast_to_hir.cpp: 将抽象语法树(AST)转换为高级中间表示(HIR)的过程。
    在这里插入图片描述

2、链接过程,IR转化成NIR
src/compiler/glsl/glsl_to_nir.cpp:在Compiler层负责将GLSL源码转化成NIR,包括GLSL IR的释放和NIR的创建和验证
暂时无法在飞书文档外展示此内容

五、NIR转换与优化

GLSL IR 通常会被转换为 NIR(New Intermediate Representation)。st_glsl_to_nir.cpp 文件负责 GLSL 到 NIR 的转换,其中 NIR 提供了更抽象和可优化的中间表示。优化后的NIR将提供给gallium层供各个硬件驱动层进行转化。
暂时无法在飞书文档外展示此内容

GLSL编译器转化成NIR后,在ST还需进行以下处理和优化:

  • NIR 统一变量处理
  • 统一变量的位置分配
  • 顶点着色器输入位置分配
  • 变量位置的分配
  • NIR 向量化和坐标系变换
  • NIR 缓存加载和存储
  • 释放 NIR 变体

六、核心数据结构

_glapi_table 结构体:
_glapi_table 结构体是 Mesa API 层的核心数据结构,包含了 OpenGL 函数的指针、版本信息、扩展支持等。它被用于表示 OpenGL API 的实现层次。

struct _glapi_table {/* OpenGL function pointers */GET_DISPATCH_PTR();
/* Version information */GLuint Version; 
/* Extension support */GLuint Extensions[32];
};

st_context结构体:
st_context 是一个表示Gallium3D状态跟踪上下文的结构体,负责跟踪和管理图形状态、与Gallium3D框架进行交互。

struct st_context
{struct st_context_iface iface;struct gl_context *ctx;struct pipe_context *pipe;struct draw_context *draw;  /< For selection/feedback/rastpos only */
**   struct draw_stage *feedback_stage;  /**< For GL_FEEDBACK rendermode */struct draw_stage *selection_stage;  /< For GL_SELECT rendermode */
**   struct draw_stage *rastpos_stage;  /**< For glRasterPos */
// 省略
};
http://www.hkea.cn/news/486571/

相关文章:

  • 瑜伽网站设计国外推广网站
  • 什么网站做国外批发百度推广自己怎么做
  • 网站管理工具百度推广可以自己开户吗
  • 三水网站制作中山做网站推广公司
  • ysl网站设计论文郑州seo地址
  • 做食品的网站设计要注意片多多可以免费看电视剧吗
  • 网站排名推广自己怎么做长沙seo代理商
  • 手机网站改版公司加盟关键词优化排名查询
  • html5 图片网站建设企业网站多少钱
  • 企业网站定制开发流程网络营销的概念及特点
  • 做火影网站背景图农村电商平台有哪些
  • 国内html5网站建设seo兼职工资一般多少
  • 青海西宁网站建设公司百度网络推广
  • 服装公司网站设计百度站长收录入口
  • 做搜索关键词任务网站网站维护是什么意思
  • 2018什么做网站百度网盘网页版入口
  • 深圳福田大型商城网站建设石家庄最新疫情最新消息
  • 网站版面结构chatgpt 网站
  • 网站后期推广是谁来做广州百度推广开户
  • 不上此网站枉做男人免费制作网站平台
  • 防红短链接生成佛山抖音seo
  • 网站建设php带数据库模板站长工具四叶草
  • 做网站客户拖着不验收店铺推广渠道有哪些方式
  • 站群系统哪个好用怎样进行seo推广
  • 淄博网站建设方案网络推广是做什么的
  • 网站建设销售工作职责seo平台怎么样
  • 免费的网站给一个百度seo优化服务项目
  • 现代广告创意设计郑州百度网站优化排名
  • 兰州网站建设哪家专业谷歌seo网站推广
  • 崇信门户网站留言回复上优化seo