package net.vulkanmod.mixin.render.shader;

import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import com.mojang.blaze3d.systems.GpuDevice;
import com.mojang.blaze3d.systems.RenderSystem;
import java.util.Objects;
import net.minecraft.class_10151;
import net.minecraft.class_3300;
import net.minecraft.class_3695;
import net.vulkanmod.render.shader.CustomRenderPipelines;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin({class_10151.class})
public class ShaderManagerM {
   @Inject(
      method = {"method_62945"},
      at = {@At(
   value = "INVOKE",
   target = "Ljava/util/List;isEmpty()Z"
)}
   )
   private void onApply(class_10151.class_10153 configs, class_3300 resourceManager, class_3695 profilerFiller, CallbackInfo ci, @Local class_10151.class_10170 compilationCache) {
      GpuDevice gpuDevice = RenderSystem.getDevice();

      for(RenderPipeline renderPipeline : CustomRenderPipelines.pipelines) {
         Objects.requireNonNull(compilationCache);
         gpuDevice.precompilePipeline(renderPipeline, compilationCache::method_68498);
      }

   }
}
