Hasty Briefsbeta

双语

Writing a bindless GPU abstraction layer

2 days ago
  • #GPU API Design
  • #Bindless Rendering
  • #Graphics Programming
  • 塞巴斯蒂安·阿尔托宁的博客《无图形API》启发了Loon GPU项目,该项目通过随处使用GPU指针简化了现代图形API,消除了缓冲对象、顶点缓冲和显式绑定组。
  • Loon GPU提供了一种指针优先的API,GPU内存通过malloc分配并用free释放,支持不同的内存类型(CPU映射、GPU本地),并使用设备指针作为着色器参数,在Vulkan和Metal后端内部创建缓冲。
  • 着色器被设计为无绑定模式,输入来自单个指针,但在跨平台兼容性方面面临挑战,尤其是针对Vulkan和Metal的Slang语言,需要变通方案来处理推送常量和线程组大小。
  • 无绑定纹理和采样器在Metal中本地支持,而Vulkan则使用带有描述符索引的大绑定集,通过通用布局和全局处理初始化,无需显式图像布局转换。
  • 局限性包括由于后端限制而不支持的功能,如解耦混合状态和分离屏障,未来计划包括调试支持、示例扩展,以及通过Vulkan扩展可能的后端改进。