soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package com.mojang.blaze3d.platform;
import com.google.common.base.Charsets;
import com.mojang.blaze3d.DontObfuscate;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.jtracy.Plot;
import com.mojang.jtracy.TracyClient;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.util.function.Consumer;
import java.util.stream.IntStream;
import javax.annotation.Nullable;
import net.minecraft.Util;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.lwjgl.PointerBuffer;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL14;
import org.lwjgl.opengl.GL15;
import org.lwjgl.opengl.GL20;
import org.lwjgl.opengl.GL20C;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.GL32;
import org.lwjgl.opengl.GL32C;
import org.lwjgl.system.MemoryStack;
import org.lwjgl.system.MemoryUtil;
@OnlyIn(Dist.CLIENT)
@DontObfuscate
public class GlStateManager {
private static final boolean ON_LINUX = Util.getPlatform() == Util.OS.LINUX;
private static final Plot PLOT_TEXTURES = TracyClient.createPlot("GPU Textures");
private static int numTextures = 0;
private static final Plot PLOT_BUFFERS = TracyClient.createPlot("GPU Buffers");
private static int numBuffers = 0;
public static final int TEXTURE_COUNT = 12;
private static final GlStateManager.BlendState BLEND = new GlStateManager.BlendState();
private static final GlStateManager.DepthState DEPTH = new GlStateManager.DepthState();
private static final GlStateManager.CullState CULL = new GlStateManager.CullState();
private static final GlStateManager.PolygonOffsetState POLY_OFFSET = new GlStateManager.PolygonOffsetState();
private static final GlStateManager.ColorLogicState COLOR_LOGIC = new GlStateManager.ColorLogicState();
private static final GlStateManager.StencilState STENCIL = new GlStateManager.StencilState();
private static final GlStateManager.ScissorState SCISSOR = new GlStateManager.ScissorState();
private static final GlStateManager.FramebufferState READ_FRAMEBUFFER = new GlStateManager.FramebufferState();
private static final GlStateManager.FramebufferState DRAW_FRAMEBUFFER = new GlStateManager.FramebufferState();
private static int activeTexture;
private static final GlStateManager.TextureState[] TEXTURES = IntStream.range(0, 12)
.mapToObj(p_157120_ -> new GlStateManager.TextureState())
.toArray(GlStateManager.TextureState[]::new);
private static final GlStateManager.ColorMask COLOR_MASK = new GlStateManager.ColorMask();
public static void _disableScissorTest() {
RenderSystem.assertOnRenderThreadOrInit();
SCISSOR.mode.disable();
}
public static void _enableScissorTest() {
RenderSystem.assertOnRenderThreadOrInit();
SCISSOR.mode.enable();
}
public static void _scissorBox(int p_84169_, int p_84170_, int p_84171_, int p_84172_) {
RenderSystem.assertOnRenderThreadOrInit();
GL20.glScissor(p_84169_, p_84170_, p_84171_, p_84172_);
}
public static void _disableDepthTest() {
RenderSystem.assertOnRenderThreadOrInit();
DEPTH.mode.disable();
}
public static void _enableDepthTest() {
RenderSystem.assertOnRenderThreadOrInit();
DEPTH.mode.enable();
}
public static void _depthFunc(int p_84324_) {
RenderSystem.assertOnRenderThreadOrInit();
if (p_84324_ != DEPTH.func) {
DEPTH.func = p_84324_;
GL11.glDepthFunc(p_84324_);
}
}
public static void _depthMask(boolean p_84299_) {
RenderSystem.assertOnRenderThread();
if (p_84299_ != DEPTH.mask) {
DEPTH.mask = p_84299_;
GL11.glDepthMask(p_84299_);
}
}
public static void _disableBlend() {
RenderSystem.assertOnRenderThread();
BLEND.mode.disable();
}
public static void _enableBlend() {
RenderSystem.assertOnRenderThread();
BLEND.mode.enable();
}
public static void _blendFunc(int p_84329_, int p_84330_) {
RenderSystem.assertOnRenderThread();
if (p_84329_ != BLEND.srcRgb || p_84330_ != BLEND.dstRgb) {
BLEND.srcRgb = p_84329_;
BLEND.dstRgb = p_84330_;
GL11.glBlendFunc(p_84329_, p_84330_);
}
}
public static void _blendFuncSeparate(int p_84336_, int p_84337_, int p_84338_, int p_84339_) {
RenderSystem.assertOnRenderThread();
if (p_84336_ != BLEND.srcRgb || p_84337_ != BLEND.dstRgb || p_84338_ != BLEND.srcAlpha || p_84339_ != BLEND.dstAlpha) {
BLEND.srcRgb = p_84336_;
BLEND.dstRgb = p_84337_;
BLEND.srcAlpha = p_84338_;
BLEND.dstAlpha = p_84339_;
glBlendFuncSeparate(p_84336_, p_84337_, p_84338_, p_84339_);
}
}
public static void _blendEquation(int p_84380_) {
RenderSystem.assertOnRenderThread();
GL14.glBlendEquation(p_84380_);
}
public static int glGetProgrami(int p_84382_, int p_84383_) {
RenderSystem.assertOnRenderThread();
return GL20.glGetProgrami(p_84382_, p_84383_);
}
public static void glAttachShader(int p_84424_, int p_84425_) {
RenderSystem.assertOnRenderThread();
GL20.glAttachShader(p_84424_, p_84425_);
}
public static void glDeleteShader(int p_84422_) {
RenderSystem.assertOnRenderThread();
GL20.glDeleteShader(p_84422_);
}
public static int glCreateShader(int p_84448_) {
RenderSystem.assertOnRenderThread();
return GL20.glCreateShader(p_84448_);
}
public static void glShaderSource(int p_157117_, String p_364331_) {
RenderSystem.assertOnRenderThread();
byte[] abyte = p_364331_.getBytes(Charsets.UTF_8);
ByteBuffer bytebuffer = MemoryUtil.memAlloc(abyte.length + 1);
bytebuffer.put(abyte);
bytebuffer.put((byte)0);
bytebuffer.flip();
try (MemoryStack memorystack = MemoryStack.stackPush()) {
PointerBuffer pointerbuffer = memorystack.mallocPointer(1);
pointerbuffer.put(bytebuffer);
GL20C.nglShaderSource(p_157117_, 1, pointerbuffer.address0(), 0L);
} finally {
MemoryUtil.memFree(bytebuffer);
}
}
public static void glCompileShader(int p_84466_) {
RenderSystem.assertOnRenderThread();
GL20.glCompileShader(p_84466_);
}
public static int glGetShaderi(int p_84450_, int p_84451_) {
RenderSystem.assertOnRenderThread();
return GL20.glGetShaderi(p_84450_, p_84451_);
}
public static void _glUseProgram(int p_84479_) {
RenderSystem.assertOnRenderThread();
GL20.glUseProgram(p_84479_);
}
public static int glCreateProgram() {
RenderSystem.assertOnRenderThread();
return GL20.glCreateProgram();
}
public static void glDeleteProgram(int p_84485_) {
RenderSystem.assertOnRenderThread();
GL20.glDeleteProgram(p_84485_);
}
public static void glLinkProgram(int p_84491_) {
RenderSystem.assertOnRenderThread();
GL20.glLinkProgram(p_84491_);
}
public static int _glGetUniformLocation(int p_84346_, CharSequence p_84347_) {
RenderSystem.assertOnRenderThread();
return GL20.glGetUniformLocation(p_84346_, p_84347_);
}
public static void _glUniform1(int p_84264_, IntBuffer p_84265_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform1iv(p_84264_, p_84265_);
}
public static void _glUniform1i(int p_84468_, int p_84469_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform1i(p_84468_, p_84469_);
}
public static void _glUniform1(int p_84349_, FloatBuffer p_84350_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform1fv(p_84349_, p_84350_);
}
public static void _glUniform2(int p_84352_, IntBuffer p_84353_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform2iv(p_84352_, p_84353_);
}
public static void _glUniform2(int p_84402_, FloatBuffer p_84403_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform2fv(p_84402_, p_84403_);
}
public static void _glUniform3(int p_84405_, IntBuffer p_84406_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform3iv(p_84405_, p_84406_);
}
public static void _glUniform3(int p_84436_, FloatBuffer p_84437_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform3fv(p_84436_, p_84437_);
}
public static void _glUniform4(int p_84439_, IntBuffer p_84440_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform4iv(p_84439_, p_84440_);
}
public static void _glUniform4(int p_84462_, FloatBuffer p_84463_) {
RenderSystem.assertOnRenderThread();
GL20.glUniform4fv(p_84462_, p_84463_);
}
public static void _glUniformMatrix2(int p_84270_, boolean p_84271_, FloatBuffer p_84272_) {
RenderSystem.assertOnRenderThread();
GL20.glUniformMatrix2fv(p_84270_, p_84271_, p_84272_);
}
public static void _glUniformMatrix3(int p_84355_, boolean p_84356_, FloatBuffer p_84357_) {
RenderSystem.assertOnRenderThread();
GL20.glUniformMatrix3fv(p_84355_, p_84356_, p_84357_);
}
public static void _glUniformMatrix4(int p_84408_, boolean p_84409_, FloatBuffer p_84410_) {
RenderSystem.assertOnRenderThread();
GL20.glUniformMatrix4fv(p_84408_, p_84409_, p_84410_);
}
public static int _glGetAttribLocation(int p_84399_, CharSequence p_84400_) {
RenderSystem.assertOnRenderThread();
return GL20.glGetAttribLocation(p_84399_, p_84400_);
}
public static void _glBindAttribLocation(int p_157062_, int p_157063_, CharSequence p_157064_) {
RenderSystem.assertOnRenderThread();
GL20.glBindAttribLocation(p_157062_, p_157063_, p_157064_);
}
public static int _glGenBuffers() {
RenderSystem.assertOnRenderThreadOrInit();
numBuffers++;
PLOT_BUFFERS.setValue((double)numBuffers);
return GL15.glGenBuffers();
}
public static int _glGenVertexArrays() {
RenderSystem.assertOnRenderThreadOrInit();
return GL30.glGenVertexArrays();
}
public static void _glBindBuffer(int p_84481_, int p_84482_) {
RenderSystem.assertOnRenderThreadOrInit();
GL15.glBindBuffer(p_84481_, p_84482_);
}
public static void _glBindVertexArray(int p_157069_) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glBindVertexArray(p_157069_);
}
public static void _glBufferData(int p_84257_, ByteBuffer p_84258_, int p_84259_) {
RenderSystem.assertOnRenderThreadOrInit();
GL15.glBufferData(p_84257_, p_84258_, p_84259_);
}
public static void _glBufferSubData(int p_367454_, int p_365398_, ByteBuffer p_362528_) {
RenderSystem.assertOnRenderThreadOrInit();
GL15.glBufferSubData(p_367454_, (long)p_365398_, p_362528_);
}
public static void _glBufferData(int p_157071_, long p_157072_, int p_157073_) {
RenderSystem.assertOnRenderThreadOrInit();
GL15.glBufferData(p_157071_, p_157072_, p_157073_);
}
@Nullable
public static ByteBuffer _glMapBuffer(int p_157091_, int p_157092_) {
RenderSystem.assertOnRenderThreadOrInit();
return GL15.glMapBuffer(p_157091_, p_157092_);
}
@Nullable
public static ByteBuffer _glMapBufferRange(int p_366844_, int p_366335_, int p_369419_, int p_368346_) {
RenderSystem.assertOnRenderThreadOrInit();
return GL30.glMapBufferRange(p_366844_, (long)p_366335_, (long)p_369419_, p_368346_);
}
public static void _glUnmapBuffer(int p_157099_) {
RenderSystem.assertOnRenderThreadOrInit();
GL15.glUnmapBuffer(p_157099_);
}
public static void _glDeleteBuffers(int p_84497_) {
RenderSystem.assertOnRenderThread();
if (ON_LINUX) {
GL32C.glBindBuffer(34962, p_84497_);
GL32C.glBufferData(34962, 0L, 35048);
GL32C.glBindBuffer(34962, 0);
}
numBuffers--;
PLOT_BUFFERS.setValue((double)numBuffers);
GL15.glDeleteBuffers(p_84497_);
}
public static void _glCopyTexSubImage2D(int p_84180_, int p_84181_, int p_84182_, int p_84183_, int p_84184_, int p_84185_, int p_84186_, int p_84187_) {
RenderSystem.assertOnRenderThreadOrInit();
GL20.glCopyTexSubImage2D(p_84180_, p_84181_, p_84182_, p_84183_, p_84184_, p_84185_, p_84186_, p_84187_);
}
public static void _glDeleteVertexArrays(int p_157077_) {
RenderSystem.assertOnRenderThread();
GL30.glDeleteVertexArrays(p_157077_);
}
public static void _glBindFramebuffer(int p_84487_, int p_84488_) {
RenderSystem.assertOnRenderThreadOrInit();
boolean flag = switch (p_84487_) {
case 36008 -> READ_FRAMEBUFFER.update(p_84488_);
case 36009 -> DRAW_FRAMEBUFFER.update(p_84488_);
case 36160 -> READ_FRAMEBUFFER.update(p_84488_) | DRAW_FRAMEBUFFER.update(p_84488_);
default -> true;
};
if (flag) {
GL30.glBindFramebuffer(p_84487_, p_84488_);
}
}
public static void _glBlitFrameBuffer(
int p_84189_, int p_84190_, int p_84191_, int p_84192_, int p_84193_, int p_84194_, int p_84195_, int p_84196_, int p_84197_, int p_84198_
) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glBlitFramebuffer(p_84189_, p_84190_, p_84191_, p_84192_, p_84193_, p_84194_, p_84195_, p_84196_, p_84197_, p_84198_);
}
public static void _glBindRenderbuffer(int p_157066_, int p_157067_) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glBindRenderbuffer(p_157066_, p_157067_);
}
public static void _glDeleteRenderbuffers(int p_157075_) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glDeleteRenderbuffers(p_157075_);
}
public static void _glDeleteFramebuffers(int p_84503_) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glDeleteFramebuffers(p_84503_);
}
public static int glGenFramebuffers() {
RenderSystem.assertOnRenderThreadOrInit();
return GL30.glGenFramebuffers();
}
public static int glGenRenderbuffers() {
RenderSystem.assertOnRenderThreadOrInit();
return GL30.glGenRenderbuffers();
}
public static void _glRenderbufferStorage(int p_157094_, int p_157095_, int p_157096_, int p_157097_) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glRenderbufferStorage(p_157094_, p_157095_, p_157096_, p_157097_);
}
public static void _glFramebufferRenderbuffer(int p_157085_, int p_157086_, int p_157087_, int p_157088_) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glFramebufferRenderbuffer(p_157085_, p_157086_, p_157087_, p_157088_);
}
public static int glCheckFramebufferStatus(int p_84509_) {
RenderSystem.assertOnRenderThreadOrInit();
return GL30.glCheckFramebufferStatus(p_84509_);
}
public static void _glFramebufferTexture2D(int p_84174_, int p_84175_, int p_84176_, int p_84177_, int p_84178_) {
RenderSystem.assertOnRenderThreadOrInit();
GL30.glFramebufferTexture2D(p_84174_, p_84175_, p_84176_, p_84177_, p_84178_);
}
public static int getBoundFramebuffer() {
RenderSystem.assertOnRenderThread();
return _getInteger(36006);
}
public static void glActiveTexture(int p_84515_) {
RenderSystem.assertOnRenderThread();
GL13.glActiveTexture(p_84515_);
}
public static void glBlendFuncSeparate(int p_84389_, int p_84390_, int p_84391_, int p_84392_) {
RenderSystem.assertOnRenderThread();
GL14.glBlendFuncSeparate(p_84389_, p_84390_, p_84391_, p_84392_);
}
public static String glGetShaderInfoLog(int p_84493_, int p_84494_) {
RenderSystem.assertOnRenderThread();
return GL20.glGetShaderInfoLog(p_84493_, p_84494_);
}
public static String glGetProgramInfoLog(int p_84499_, int p_84500_) {
RenderSystem.assertOnRenderThread();
return GL20.glGetProgramInfoLog(p_84499_, p_84500_);
}
public static void setupLevelDiffuseLighting(Vector3f p_254343_, Vector3f p_254532_, Matrix4f p_254339_) {
RenderSystem.assertOnRenderThread();
RenderSystem.setShaderLights(p_254339_.transformDirection(p_254343_, new Vector3f()), p_254339_.transformDirection(p_254532_, new Vector3f()));
}
public static void setupGuiFlatDiffuseLighting(Vector3f p_254237_, Vector3f p_253658_) {
RenderSystem.assertOnRenderThread();
Matrix4f matrix4f = new Matrix4f().rotationY((float) (-Math.PI / 8)).rotateX((float) (Math.PI * 3.0 / 4.0));
setupLevelDiffuseLighting(p_254237_, p_253658_, matrix4f);
}
public static void setupGui3DDiffuseLighting(Vector3f p_254290_, Vector3f p_254528_) {
RenderSystem.assertOnRenderThread();
Matrix4f matrix4f = new Matrix4f()
.scaling(1.0F, -1.0F, 1.0F)
.rotateYXZ(1.0821041F, 3.2375858F, 0.0F)
.rotateYXZ((float) (-Math.PI / 8), (float) (Math.PI * 3.0 / 4.0), 0.0F);
setupLevelDiffuseLighting(p_254290_, p_254528_, matrix4f);
}
public static void _enableCull() {
RenderSystem.assertOnRenderThread();
CULL.enable.enable();
}
public static void _disableCull() {
RenderSystem.assertOnRenderThread();
CULL.enable.disable();
}
public static void _polygonMode(int p_84517_, int p_84518_) {
RenderSystem.assertOnRenderThread();
GL11.glPolygonMode(p_84517_, p_84518_);
}
public static void _enablePolygonOffset() {
RenderSystem.assertOnRenderThread();
POLY_OFFSET.fill.enable();
}
public static void _disablePolygonOffset() {
RenderSystem.assertOnRenderThread();
POLY_OFFSET.fill.disable();
}
public static void _polygonOffset(float p_84137_, float p_84138_) {
RenderSystem.assertOnRenderThread();
if (p_84137_ != POLY_OFFSET.factor || p_84138_ != POLY_OFFSET.units) {
POLY_OFFSET.factor = p_84137_;
POLY_OFFSET.units = p_84138_;
GL11.glPolygonOffset(p_84137_, p_84138_);
}
}
public static void _enableColorLogicOp() {
RenderSystem.assertOnRenderThread();
COLOR_LOGIC.enable.enable();
}
public static void _disableColorLogicOp() {
RenderSystem.assertOnRenderThread();
COLOR_LOGIC.enable.disable();
}
public static void _logicOp(int p_84533_) {
RenderSystem.assertOnRenderThread();
if (p_84533_ != COLOR_LOGIC.op) {
COLOR_LOGIC.op = p_84533_;
GL11.glLogicOp(p_84533_);
}
}
public static void _activeTexture(int p_84539_) {
RenderSystem.assertOnRenderThread();
if (activeTexture != p_84539_ - 33984) {
activeTexture = p_84539_ - 33984;
glActiveTexture(p_84539_);
}
}
public static void _texParameter(int p_84161_, int p_84162_, float p_84163_) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glTexParameterf(p_84161_, p_84162_, p_84163_);
}
public static void _texParameter(int p_84332_, int p_84333_, int p_84334_) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glTexParameteri(p_84332_, p_84333_, p_84334_);
}
public static int _getTexLevelParameter(int p_84385_, int p_84386_, int p_84387_) {
return GL11.glGetTexLevelParameteri(p_84385_, p_84386_, p_84387_);
}
public static int _genTexture() {
RenderSystem.assertOnRenderThreadOrInit();
numTextures++;
PLOT_TEXTURES.setValue((double)numTextures);
return GL11.glGenTextures();
}
public static void _genTextures(int[] p_84306_) {
RenderSystem.assertOnRenderThreadOrInit();
numTextures += p_84306_.length;
PLOT_TEXTURES.setValue((double)numTextures);
GL11.glGenTextures(p_84306_);
}
public static void _deleteTexture(int p_84542_) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glDeleteTextures(p_84542_);
for (GlStateManager.TextureState glstatemanager$texturestate : TEXTURES) {
if (glstatemanager$texturestate.binding == p_84542_) {
glstatemanager$texturestate.binding = -1;
}
}
numTextures--;
PLOT_TEXTURES.setValue((double)numTextures);
}
public static void _deleteTextures(int[] p_84366_) {
RenderSystem.assertOnRenderThreadOrInit();
for (GlStateManager.TextureState glstatemanager$texturestate : TEXTURES) {
for (int i : p_84366_) {
if (glstatemanager$texturestate.binding == i) {
glstatemanager$texturestate.binding = -1;
}
}
}
GL11.glDeleteTextures(p_84366_);
numTextures -= p_84366_.length;
PLOT_TEXTURES.setValue((double)numTextures);
}
public static void _bindTexture(int p_84545_) {
RenderSystem.assertOnRenderThreadOrInit();
if (p_84545_ != TEXTURES[activeTexture].binding) {
TEXTURES[activeTexture].binding = p_84545_;
GL11.glBindTexture(3553, p_84545_);
}
}
public static int _getActiveTexture() {
return activeTexture + 33984;
}
public static void _texImage2D(
int p_84210_, int p_84211_, int p_84212_, int p_84213_, int p_84214_, int p_84215_, int p_84216_, int p_84217_, @Nullable IntBuffer p_84218_
) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glTexImage2D(p_84210_, p_84211_, p_84212_, p_84213_, p_84214_, p_84215_, p_84216_, p_84217_, p_84218_);
}
public static void _texSubImage2D(
int p_84200_, int p_84201_, int p_84202_, int p_84203_, int p_84204_, int p_84205_, int p_84206_, int p_84207_, long p_84208_
) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glTexSubImage2D(p_84200_, p_84201_, p_84202_, p_84203_, p_84204_, p_84205_, p_84206_, p_84207_, p_84208_);
}
public static void upload(
int p_287776_,
int p_287602_,
int p_287633_,
int p_287778_,
int p_287752_,
NativeImage.Format p_287608_,
IntBuffer p_287753_,
Consumer<IntBuffer> p_287739_
) {
if (!RenderSystem.isOnRenderThreadOrInit()) {
RenderSystem.recordRenderCall(() -> _upload(p_287776_, p_287602_, p_287633_, p_287778_, p_287752_, p_287608_, p_287753_, p_287739_));
} else {
_upload(p_287776_, p_287602_, p_287633_, p_287778_, p_287752_, p_287608_, p_287753_, p_287739_);
}
}
private static void _upload(
int p_287672_,
int p_287577_,
int p_287618_,
int p_287777_,
int p_287707_,
NativeImage.Format p_287692_,
IntBuffer p_287674_,
Consumer<IntBuffer> p_287588_
) {
try {
RenderSystem.assertOnRenderThreadOrInit();
_pixelStore(3314, p_287777_);
_pixelStore(3316, 0);
_pixelStore(3315, 0);
p_287692_.setUnpackPixelStoreState();
GL11.glTexSubImage2D(3553, p_287672_, p_287577_, p_287618_, p_287777_, p_287707_, p_287692_.glFormat(), 5121, p_287674_);
} finally {
p_287588_.accept(p_287674_);
}
}
public static void _getTexImage(int p_84228_, int p_84229_, int p_84230_, int p_84231_, long p_84232_) {
RenderSystem.assertOnRenderThread();
GL11.glGetTexImage(p_84228_, p_84229_, p_84230_, p_84231_, p_84232_);
}
public static void _viewport(int p_84431_, int p_84432_, int p_84433_, int p_84434_) {
RenderSystem.assertOnRenderThreadOrInit();
GlStateManager.Viewport.INSTANCE.x = p_84431_;
GlStateManager.Viewport.INSTANCE.y = p_84432_;
GlStateManager.Viewport.INSTANCE.width = p_84433_;
GlStateManager.Viewport.INSTANCE.height = p_84434_;
GL11.glViewport(p_84431_, p_84432_, p_84433_, p_84434_);
}
public static void _colorMask(boolean p_84301_, boolean p_84302_, boolean p_84303_, boolean p_84304_) {
RenderSystem.assertOnRenderThread();
if (p_84301_ != COLOR_MASK.red || p_84302_ != COLOR_MASK.green || p_84303_ != COLOR_MASK.blue || p_84304_ != COLOR_MASK.alpha) {
COLOR_MASK.red = p_84301_;
COLOR_MASK.green = p_84302_;
COLOR_MASK.blue = p_84303_;
COLOR_MASK.alpha = p_84304_;
GL11.glColorMask(p_84301_, p_84302_, p_84303_, p_84304_);
}
}
public static void _stencilFunc(int p_84427_, int p_84428_, int p_84429_) {
RenderSystem.assertOnRenderThread();
if (p_84427_ != STENCIL.func.func || p_84427_ != STENCIL.func.ref || p_84427_ != STENCIL.func.mask) {
STENCIL.func.func = p_84427_;
STENCIL.func.ref = p_84428_;
STENCIL.func.mask = p_84429_;
GL11.glStencilFunc(p_84427_, p_84428_, p_84429_);
}
}
public static void _stencilMask(int p_84551_) {
RenderSystem.assertOnRenderThread();
if (p_84551_ != STENCIL.mask) {
STENCIL.mask = p_84551_;
GL11.glStencilMask(p_84551_);
}
}
public static void _stencilOp(int p_84453_, int p_84454_, int p_84455_) {
RenderSystem.assertOnRenderThread();
if (p_84453_ != STENCIL.fail || p_84454_ != STENCIL.zfail || p_84455_ != STENCIL.zpass) {
STENCIL.fail = p_84453_;
STENCIL.zfail = p_84454_;
STENCIL.zpass = p_84455_;
GL11.glStencilOp(p_84453_, p_84454_, p_84455_);
}
}
public static void _clearDepth(double p_84122_) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glClearDepth(p_84122_);
}
public static void _clearColor(float p_84319_, float p_84320_, float p_84321_, float p_84322_) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glClearColor(p_84319_, p_84320_, p_84321_, p_84322_);
}
public static void _clearStencil(int p_84554_) {
RenderSystem.assertOnRenderThread();
GL11.glClearStencil(p_84554_);
}
public static void _clear(int p_84267_) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glClear(p_84267_);
if (MacosUtil.IS_MACOS) {
_getError();
}
}
public static void _glDrawPixels(int p_157079_, int p_157080_, int p_157081_, int p_157082_, long p_157083_) {
RenderSystem.assertOnRenderThread();
GL11.glDrawPixels(p_157079_, p_157080_, p_157081_, p_157082_, p_157083_);
}
public static void _vertexAttribPointer(int p_84239_, int p_84240_, int p_84241_, boolean p_84242_, int p_84243_, long p_84244_) {
RenderSystem.assertOnRenderThread();
GL20.glVertexAttribPointer(p_84239_, p_84240_, p_84241_, p_84242_, p_84243_, p_84244_);
}
public static void _vertexAttribIPointer(int p_157109_, int p_157110_, int p_157111_, int p_157112_, long p_157113_) {
RenderSystem.assertOnRenderThread();
GL30.glVertexAttribIPointer(p_157109_, p_157110_, p_157111_, p_157112_, p_157113_);
}
public static void _enableVertexAttribArray(int p_84566_) {
RenderSystem.assertOnRenderThread();
GL20.glEnableVertexAttribArray(p_84566_);
}
public static void _disableVertexAttribArray(int p_84087_) {
RenderSystem.assertOnRenderThread();
GL20.glDisableVertexAttribArray(p_84087_);
}
public static void _drawElements(int p_157054_, int p_157055_, int p_157056_, long p_157057_) {
RenderSystem.assertOnRenderThread();
GL11.glDrawElements(p_157054_, p_157055_, p_157056_, p_157057_);
}
public static void _pixelStore(int p_84523_, int p_84524_) {
RenderSystem.assertOnRenderThreadOrInit();
GL11.glPixelStorei(p_84523_, p_84524_);
}
public static void _readPixels(int p_84220_, int p_84221_, int p_84222_, int p_84223_, int p_84224_, int p_84225_, ByteBuffer p_84226_) {
RenderSystem.assertOnRenderThread();
GL11.glReadPixels(p_84220_, p_84221_, p_84222_, p_84223_, p_84224_, p_84225_, p_84226_);
}
public static void _readPixels(int p_157101_, int p_157102_, int p_157103_, int p_157104_, int p_157105_, int p_157106_, long p_157107_) {
RenderSystem.assertOnRenderThread();
GL11.glReadPixels(p_157101_, p_157102_, p_157103_, p_157104_, p_157105_, p_157106_, p_157107_);
}
public static int _getError() {
RenderSystem.assertOnRenderThread();
return GL11.glGetError();
}
public static String _getString(int p_84090_) {
RenderSystem.assertOnRenderThread();
return GL11.glGetString(p_84090_);
}
public static int _getInteger(int p_84093_) {
RenderSystem.assertOnRenderThreadOrInit();
return GL11.glGetInteger(p_84093_);
}
public static long _glFenceSync(int p_365162_, int p_361698_) {
RenderSystem.assertOnRenderThreadOrInit();
return GL32.glFenceSync(p_365162_, p_361698_);
}
public static int _glClientWaitSync(long p_365466_, int p_363515_, long p_363957_) {
RenderSystem.assertOnRenderThreadOrInit();
return GL32.glClientWaitSync(p_365466_, p_363515_, p_363957_);
}
public static void _glDeleteSync(long p_368411_) {
RenderSystem.assertOnRenderThreadOrInit();
GL32.glDeleteSync(p_368411_);
}
@OnlyIn(Dist.CLIENT)
static class BlendState {
public final GlStateManager.BooleanState mode = new GlStateManager.BooleanState(3042);
public int srcRgb = 1;
public int dstRgb = 0;
public int srcAlpha = 1;
public int dstAlpha = 0;
}
@OnlyIn(Dist.CLIENT)
static class BooleanState {
private final int state;
private boolean enabled;
public BooleanState(int p_84588_) {
this.state = p_84588_;
}
public void disable() {
this.setEnabled(false);
}
public void enable() {
this.setEnabled(true);
}
public void setEnabled(boolean p_84591_) {
RenderSystem.assertOnRenderThreadOrInit();
if (p_84591_ != this.enabled) {
this.enabled = p_84591_;
if (p_84591_) {
GL11.glEnable(this.state);
} else {
GL11.glDisable(this.state);
}
}
}
}
@OnlyIn(Dist.CLIENT)
static class ColorLogicState {
public final GlStateManager.BooleanState enable = new GlStateManager.BooleanState(3058);
public int op = 5379;
}
@OnlyIn(Dist.CLIENT)
static class ColorMask {
public boolean red = true;
public boolean green = true;
public boolean blue = true;
public boolean alpha = true;
}
@OnlyIn(Dist.CLIENT)
static class CullState {
public final GlStateManager.BooleanState enable = new GlStateManager.BooleanState(2884);
public int mode = 1029;
}
@OnlyIn(Dist.CLIENT)
static class DepthState {
public final GlStateManager.BooleanState mode = new GlStateManager.BooleanState(2929);
public boolean mask = true;
public int func = 513;
}
@OnlyIn(Dist.CLIENT)
@DontObfuscate
public static enum DestFactor {
CONSTANT_ALPHA(32771),
CONSTANT_COLOR(32769),
DST_ALPHA(772),
DST_COLOR(774),
ONE(1),
ONE_MINUS_CONSTANT_ALPHA(32772),
ONE_MINUS_CONSTANT_COLOR(32770),
ONE_MINUS_DST_ALPHA(773),
ONE_MINUS_DST_COLOR(775),
ONE_MINUS_SRC_ALPHA(771),
ONE_MINUS_SRC_COLOR(769),
SRC_ALPHA(770),
SRC_COLOR(768),
ZERO(0);
public final int value;
private DestFactor(final int p_84652_) {
this.value = p_84652_;
}
}
@OnlyIn(Dist.CLIENT)
static class FramebufferState {
public int binding;
public boolean update(int p_364731_) {
if (p_364731_ != this.binding) {
this.binding = p_364731_;
return true;
} else {
return false;
}
}
}
@OnlyIn(Dist.CLIENT)
public static enum LogicOp {
AND(5377),
AND_INVERTED(5380),
AND_REVERSE(5378),
CLEAR(5376),
COPY(5379),
COPY_INVERTED(5388),
EQUIV(5385),
INVERT(5386),
NAND(5390),
NOOP(5381),
NOR(5384),
OR(5383),
OR_INVERTED(5389),
OR_REVERSE(5387),
SET(5391),
XOR(5382);
public final int value;
private LogicOp(final int p_84721_) {
this.value = p_84721_;
}
}
@OnlyIn(Dist.CLIENT)
static class PolygonOffsetState {
public final GlStateManager.BooleanState fill = new GlStateManager.BooleanState(32823);
public final GlStateManager.BooleanState line = new GlStateManager.BooleanState(10754);
public float factor;
public float units;
}
@OnlyIn(Dist.CLIENT)
static class ScissorState {
public final GlStateManager.BooleanState mode = new GlStateManager.BooleanState(3089);
}
@OnlyIn(Dist.CLIENT)
@DontObfuscate
public static enum SourceFactor {
CONSTANT_ALPHA(32771),
CONSTANT_COLOR(32769),
DST_ALPHA(772),
DST_COLOR(774),
ONE(1),
ONE_MINUS_CONSTANT_ALPHA(32772),
ONE_MINUS_CONSTANT_COLOR(32770),
ONE_MINUS_DST_ALPHA(773),
ONE_MINUS_DST_COLOR(775),
ONE_MINUS_SRC_ALPHA(771),
ONE_MINUS_SRC_COLOR(769),
SRC_ALPHA(770),
SRC_ALPHA_SATURATE(776),
SRC_COLOR(768),
ZERO(0);
public final int value;
private SourceFactor(final int p_84757_) {
this.value = p_84757_;
}
}
@OnlyIn(Dist.CLIENT)
static class StencilFunc {
public int func = 519;
public int ref;
public int mask = -1;
}
@OnlyIn(Dist.CLIENT)
static class StencilState {
public final GlStateManager.StencilFunc func = new GlStateManager.StencilFunc();
public int mask = -1;
public int fail = 7680;
public int zfail = 7680;
public int zpass = 7680;
}
@OnlyIn(Dist.CLIENT)
static class TextureState {
public int binding;
}
@OnlyIn(Dist.CLIENT)
public static enum Viewport {
INSTANCE;
protected int x;
protected int y;
protected int width;
protected int height;
public static int x() {
return INSTANCE.x;
}
public static int y() {
return INSTANCE.y;
}
public static int width() {
return INSTANCE.width;
}
public static int height() {
return INSTANCE.height;
}
}
}