问题描述
我正在做一个业余项目来实现我自己的 Metal.framework 实现和一个软件渲染器来在 MTLCommandBuffer 提交后进行实际渲染。我试图想出一种方法来模拟 cpu 上的 GPU 线程(可能使用 pthreads)。为了看看它是否可行,我设法将一个简单的 shader.Metal 编译成 LLVM 位码(.air 文件),然后使用 LLVM 的 llc 工具使用下面的命令行编译成 ARM 程序集。
lc -march arm64 shader.air -o shader.s
我还设法获取了 ARM 程序集,将其传递给了一个汇编程序并生成了一个目标文件
gcc -c shader.s -o shader.o
(或者)我也可以手动编辑 shader.s 并将着色器名称更改为 _main,然后使用以下内容生成可执行文件:
gcc shader.air.s -o shader
此时,我想我的下一步应该是使用 Apple 的 Hypervisor 框架,其中每个 pthread 应该运行一个虚拟 cpu,该 cpu 运行使用上述步骤编译的着色器。我有一个运行一个小的 ARM 片段的示例管理程序代码,我目前正在考虑是否可以编写自己的“驱动程序”来读取着色器 mach-o 文件,从中提取片段并将其映射到管理程序内存中Vcpu 可以从中读取。
我的问题是:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)