package net.vulkanmod.render.texture;

import java.util.HashSet;
import java.util.Set;
import net.vulkanmod.vulkan.texture.VulkanImage;
import org.lwjgl.system.MemoryStack;
import org.lwjgl.vulkan.VkCommandBuffer;

public abstract class SpriteUpdateUtil {
   private static boolean doUpload = true;
   private static final Set<VulkanImage> transitionedLayouts = new HashSet();

   public static void setDoUpload(boolean b) {
      doUpload = b;
   }

   public static boolean doUploadFrame() {
      return doUpload;
   }

   public static void addTransitionedLayout(VulkanImage image) {
      transitionedLayouts.add(image);
   }

   public static void transitionLayouts() {
      if (!transitionedLayouts.isEmpty()) {
         VkCommandBuffer commandBuffer = ImageUploadHelper.INSTANCE.getOrStartCommandBuffer().handle;
         MemoryStack stack = MemoryStack.stackPush();

         try {
            transitionedLayouts.forEach((image) -> image.readOnlyLayout(stack, commandBuffer));
            transitionedLayouts.clear();
         } catch (Throwable var5) {
            if (stack != null) {
               try {
                  stack.close();
               } catch (Throwable var4) {
                  var5.addSuppressed(var4);
               }
            }

            throw var5;
         }

         if (stack != null) {
            stack.close();
         }

      }
   }
}
