📝Trae对话实现Shader静态编译分析服务

168 阅读2分钟

我正在参加Trae「超级体验官」创意实践征文,  本文所使用的 Trae 免费下载链接:  www.trae.ai/?utm_source…

本文为记录了通过Trae仅仅通过对话实现一个Shader静态编译分析服务过程

基础信息

想给两个命令行工具封装出一个API服务, 以便于分析Shader性能, 并且完全通过对话Trae实现

  1. AdrenoOfflineCompiler(只有Windows, MacOS/Linux可通过Wine运行)
  2. MaliOfflineCompiler

大概任务顺序如下

  1. 根据AdrenoOfflineCompiler使用说明 生成 分析结果的类型定义
  2. 生成DenoServer以及基础配置文件
  3. 根据AdrenoOfflineCompiler使用说明 生成 编译函数+入参类型定义
  4. 从AOC编译结果 生成 解析函数
  5. 根据所生成的compileAdreno 生成 API的单测
  6. 根据所生成的compileAdreno 给http-server 添加 compile api
  7. 根据http-server compile API定义 生成 表单网页
  8. 类比上面AOC的流程, 添加Mali的支持
    1. 根据MaliOC PDF 生成 compileMali 函数
    2. 因为MaliOC支持直接返回json所以无需第一步
    3. 然后同样生成单测
    4. 给http-server 添加 api
    5. 最后更新index.html

任务记录

  1. 根据AdrenoOfflineCompiler使用说明 生成 分析结果的类型定义

image.png

这里直接让Trae分析网页中ShaderStatistics即可生成完整且注释翻译为中文

image.png

  1. 生成DenoServer以及基础配置文件

image.png

  1. 根据AdrenoOfflineCompiler使用说明 生成 编译函数+入参类型定义

image.png

  1. 从AOC编译结果 生成 解析函数

image.png

  1. 根据所生成的compileAdreno 生成 API的单测

image.png

简单错误可以对话修复

image.png

可以接上单侧直接对话重构 这个体验太🐂了

image.png

并且调试单测时, 可以对话添加调试日志, 调试完成再删除

image.png

  1. 根据所生成的compileAdreno 给http-server 添加 compile api

image.png

  1. 根据http-server compile API定义 生成 表单网页

并且这个是一次生成网页就跑通了 效率提升可太高了

adreno1.png adreno2.png adreno3.png

  1. 后续在这基础上添加Mali的支持

生成编译函数compileMali

image.png

单测

image.png

重新生成index.html

image.png

但是这一步并不算太流畅对话了好几次, 都有问题 结果发现通过选取需要重新生成的区域 添加到提问 可以大大提高回复的准确率

image.png

最后产物

sc1.png sc2.png sc3.png

当然Trae也不是没有bug🐶, 比如回滚对话状态遇到diff删除部分固定没消失, 只能重启编辑器

trae-bug.jpeg

体验到Trea的震撼的同时, 也可预知未来很多基础简单的工作会被AI代替

后面感觉可以结合最热门的DeepSeek, 实现一个简单Shader分析助手, 结合Adreno和Arm Mali的最佳实践, 加上shader源代码, 提供更加准确的优化建议