Fix mesa due to glClearBufferData bug
This commit is contained in:
@@ -31,6 +31,7 @@ import static org.lwjgl.opengl.GL43.*;
|
||||
import static org.lwjgl.opengl.GL43.GL_SHADER_STORAGE_BUFFER;
|
||||
import static org.lwjgl.opengl.GL45.glBindTextureUnit;
|
||||
import static org.lwjgl.opengl.GL45.glClearNamedBufferData;
|
||||
import static org.lwjgl.opengl.GL45C.nglClearNamedBufferData;
|
||||
|
||||
public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer<Gl46Viewport> {
|
||||
private final Shader commandGen = Shader.make()
|
||||
@@ -56,7 +57,7 @@ public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer<Gl46Viewport>
|
||||
super(geometryBuffer, maxSections);
|
||||
this.glCommandBuffer = new GlBuffer(maxSections*5L*4 * 6);
|
||||
this.glCommandCountBuffer = new GlBuffer(4*2);
|
||||
glClearNamedBufferData(this.glCommandBuffer.id, GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE, new int[1]);
|
||||
nglClearNamedBufferData(this.glCommandBuffer.id, GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, 0);
|
||||
}
|
||||
|
||||
protected void bindResources(Gl46Viewport viewport) {
|
||||
@@ -131,7 +132,7 @@ public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer<Gl46Viewport>
|
||||
UploadStream.INSTANCE.commit();
|
||||
glBindVertexArray(AbstractFarWorldRenderer.STATIC_VAO);
|
||||
|
||||
glClearNamedBufferData(this.glCommandCountBuffer.id, GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, new int[1]);
|
||||
nglClearNamedBufferData(this.glCommandCountBuffer.id, GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, 0);
|
||||
this.commandGen.bind();
|
||||
this.bindResources(viewport);
|
||||
glDispatchCompute((this.geometry.getSectionCount()+127)/128, 1, 1);
|
||||
|
||||
@@ -7,13 +7,14 @@ import static org.lwjgl.opengl.GL30C.GL_R8UI;
|
||||
import static org.lwjgl.opengl.GL30C.GL_RED_INTEGER;
|
||||
import static org.lwjgl.opengl.GL42.GL_UNSIGNED_BYTE;
|
||||
import static org.lwjgl.opengl.GL45C.glClearNamedBufferData;
|
||||
import static org.lwjgl.opengl.GL45C.nglClearNamedBufferData;
|
||||
|
||||
public class Gl46Viewport extends Viewport<Gl46Viewport, Gl46FarWorldRenderer> {
|
||||
GlBuffer visibilityBuffer;
|
||||
public Gl46Viewport(Gl46FarWorldRenderer renderer) {
|
||||
super(renderer);
|
||||
this.visibilityBuffer = new GlBuffer(renderer.maxSections*4L);
|
||||
glClearNamedBufferData(this.visibilityBuffer.id, GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE, new int[1]);
|
||||
nglClearNamedBufferData(this.visibilityBuffer.id, GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE, 0);
|
||||
}
|
||||
|
||||
protected void delete0() {
|
||||
|
||||
@@ -8,7 +8,7 @@ public class QuadEncoder {
|
||||
|
||||
//Note: the encodedMeshedData is from the Mesher2D
|
||||
public static int encodePosition(int face, int otherAxis, int encodedMeshedData) {
|
||||
if (Mesher2D.getW(encodedMeshedData) > 16 || Mesher2D.getH(encodedMeshedData) > 16) {
|
||||
if (false&&(Mesher2D.getW(encodedMeshedData) > 16 || Mesher2D.getH(encodedMeshedData) > 16)) {
|
||||
throw new IllegalStateException("Width or height > 16");
|
||||
}
|
||||
int dat = face;
|
||||
|
||||
@@ -28,7 +28,7 @@ public final class Mesher2D {
|
||||
|
||||
private int getIdx(int x, int z) {
|
||||
int M = (1<<this.size)-1;
|
||||
if (x>M || z>M) {
|
||||
if (false&&(x>M || z>M)) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
return ((z&M)<<this.size)|(x&M);
|
||||
|
||||
Reference in New Issue
Block a user