2024.09.27

  • 工作内容

    Shader 编译相关

    • 上午

    看了一下项目实现,应该是 java + spring 开发

    本机装了一个java环境,javac用来编译 .java -> .class,java用来运行编译好的文件

    装了个 IntelliJ IDEA,发现 gradle 和 java 版本不匹配,重装了 jdk-17 之后,用 IDEA 打开它成功完成了依赖同步

    • 下午

    初看 Agent 项目

    调试看代码,先看的 Agent 项目,只有个 ShaderCompileTester 可以调试运行,正经八百的主入口,只有个 类塞到Spring里面,啥也没有,怀疑是Spring内部有一套循环逻辑,进去细看之后,调试终止在了 listener startup,listen了主入口类。项目里还有一些散落的task。

    初看 distributed-compilation 项目

    Agent 项目没看到 redis 相关的信息,开始转另一个项目看。

    了解 package、import的一些spring包作用、以及类型注解。

    发现了很多@RequestMapping 方法,那这个项目应该是通过外部发送网络请求触发逻辑的。

    经过了一些尝试,终于成功地和这个程序完成了交互,返回了设定的代码:

    二看 Agent 项目

    交互成功了之后,日常怎么触发呢,日常要怎么触发。。。。Agent。。!?

    看AgentApplication发现有个 @EnableScheduling 注解,嗷,定时触发!

    摸索到了一个方法

    1
    2
    @Scheduled(cron = "*/2 * * * * ?")
    public void FetchTask() {...}

    也就是说,这里会每2s上传云端编译数据,且从云端拉取待编译二进制

    拉取待编译文件,TaskWorker会执行编译,将编译数据返回Manager,等待上传。

    • 晚上

    重新梳理了一下逻辑,整理流程图如下:

    疑问:

    • Agent.TaskManager 是否实例化运行,没有发现对应的controller

      • Spring Boot 自动注入
    • 是否可以用SDC中的ClearCache请求执行清理任务

      • 本地正常
      • 云服务器待支持
    • fetch 的task来自于compile,compile怎么驱动

      • unity shader compiler请求

Knowledge

  • java