openGL之API学习(七十八)SPIR-V

Standard, Portable Intermediate Representation - V (SPIR-V)

OpenGL 4.6的最大变化就是 支持SPIR-V,一种用于GPU通用计算和图形学的中间语言,Khronos开发设计,最初是为OpenCL规范准备的,和下一代图形标准Vulkan差不多同时提出,也在不断发展完善。

 

SPIR-V是一种简单的二元中间语言,用于图形着色和计算内核。SPIR-V模块包含多个入口点,在入口点的调用树中具有潜在的共享函数。每个函数都包含基本块的控制流图(CFG),以及表示结构化控制流的可选指令。加载/存储指令用于访问声明的变量,其中包括所有输入/输出(IO)。绕过加载/存储的中间结果使用静态单一分配(SSA)表示。数据对象是用分层类型信息逻辑表示的:不存在聚合的扁平化或对物理寄存器组的分配等。可选的寻址模型确定是否可以使用常规指针操作,或者内存访问是纯逻辑的。

SPIR-V的目标是:

为出现在khronos shaders/kernels中的所有功能提供一种简单的二进制中间语言。
具有简洁、透明、独立的规范(章节规范和二进制形式)。
很容易映射到其他中间语言。
是API传递给驱动程序以设置着色器/内核的形式。
可以被新的高端语言的前端所瞄准。
允许脱机完成编译和反射的第一步。
足够低的级别,需要反向工程步骤来重新构造源代码。
通过启用共享工具来生成或操作它来提高可移植性。
允许将核心规范与特定于源语言的内置函数集分离。
减少应用程序运行时的编译时间。(在应用程序运行时消除大部分编译时间不是此中间语言的目标。目标特定的寄存器分配和调度仍然需要花费大量时间。)
允许脱机进行一些优化。

 

SPIR-V工作过程是这样的:

 

glsl代码是这样的

#version 450

in vec4 color1;
in vec4 multiplier;
noperspec
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值