VulkanShader_1.21.10-0.0.4-alpha.jar

Download file
    package net.vulkanmod.vulkan.util;

import java.lang.reflect.Field;
import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.Objects;
import java.util.stream.Stream;
import net.vulkanmod.vulkan.memory.buffer.Buffer;
import org.lwjgl.PointerBuffer;
import org.lwjgl.system.MemoryStack;
import org.lwjgl.system.MemoryUtil;
import sun.misc.Unsafe;

public class VUtil {
   public static final boolean CHECKS = true;
   public static final int UINT32_MAX = -1;
   public static final long UINT64_MAX = -1L;
   public static final Unsafe UNSAFE;

   public static PointerBuffer asPointerBuffer(Collection<String> collection) {
      MemoryStack stack = MemoryStack.stackGet();
      PointerBuffer buffer = stack.mallocPointer(collection.size());
      Stream var10000 = collection.stream();
      Objects.requireNonNull(stack);
      var10000 = var10000.map(stack::UTF8);
      Objects.requireNonNull(buffer);
      var10000.forEach(buffer::put);
      return (PointerBuffer)buffer.rewind();
   }

   public static void memcpy(ByteBuffer src, long dstPtr) {
      MemoryUtil.memCopy(MemoryUtil.memAddress0(src), dstPtr, (long)src.capacity());
   }

   public static void memcpy(ByteBuffer src, Buffer dst, long size) {
      if (size > dst.getBufferSize() - dst.getUsedBytes()) {
         throw new IllegalArgumentException("Upload size is greater than available dst buffer size");
      } else {
         long srcPtr = MemoryUtil.memAddress(src);
         long dstPtr = dst.getDataPtr() + dst.getUsedBytes();
         MemoryUtil.memCopy(srcPtr, dstPtr, size);
      }
   }

   public static void memcpy(Buffer src, ByteBuffer dst, long size) {
      if (size > (long)dst.remaining()) {
         throw new IllegalArgumentException("Upload size is greater than available dst buffer size");
      } else {
         long srcPtr = src.getDataPtr();
         long dstPtr = MemoryUtil.memAddress(dst);
         MemoryUtil.memCopy(srcPtr, dstPtr, size);
      }
   }

   public static void memcpy(ByteBuffer src, Buffer dst, long size, long srcOffset, long dstOffset) {
      if (size > dst.getBufferSize() - dstOffset) {
         throw new IllegalArgumentException("Upload size is greater than available dst buffer size");
      } else {
         long dstPtr = dst.getDataPtr() + dstOffset;
         long srcPtr = MemoryUtil.memAddress(src) + srcOffset;
         MemoryUtil.memCopy(srcPtr, dstPtr, size);
      }
   }

   public static int align(int x, int align) {
      int r = x % align;
      return r == 0 ? x : x + align - r;
   }

   static {
      Field f = null;

      try {
         f = Unsafe.class.getDeclaredField("theUnsafe");
         f.setAccessible(true);
         UNSAFE = (Unsafe)f.get((Object)null);
      } catch (IllegalAccessException | NoSuchFieldException e) {
         throw new RuntimeException(e);
      }
   }
}
    
Download file