Hi,
i’m write code, that work fine in Google Chrome 79.0.3945.79, but get error (linking program) after version 81.0.4044.138 and more.
OS: Windows 10 64 bit
GPU: NVIDIA GeForce GTX 760
Driver version: 27.21.14.5148 (date 21.06.2020)
my html file:
<html>
<head>
<style>
html, body {
margin:0px;
padding:0px;
width:100%;
height:100%;
}
body {
background-color: #404040;
}
canvas {
border:1px solid black
}
div {
display:flex;
width:100%;
height:100%;
align-items: center;
justify-content: center;
}
</style>
<script>
let gl, // gl context to make shaders
gVertCnt = 0, // Vertices count
uPointSizeLoc = -1, // VAO object setup
uAngle = 0, // angle
gRLoop; // global ref for our render loop
window.addEventListener('load', function() {
// gl = GLInstance("glcanvas").fSetSize(500, 500).fClear();
let canvas = document.getElementById('glcanvas'),
gl = canvas.getContext('webgl2-compute');
console.log('MAX_SHADER_STORAGE_BUFFER_BINDINGS', gl.getParameter(gl.MAX_SHADER_STORAGE_BUFFER_BINDINGS));
console.log('this.gl.MAX_COMPUTE_SHADER_STORAGE_BLOCKS', gl.getParameter(gl.MAX_COMPUTE_SHADER_STORAGE_BLOCKS));
console.log('this.gl.GL_MAX_COMPUTE_UNIFORM_BLOCKS', gl.getParameter(gl.MAX_COMPUTE_UNIFORM_BLOCKS));
console.log('this.gl.MAX_SHADER_STORAGE_BLOCK_SIZE', gl.getParameter(gl.MAX_SHADER_STORAGE_BLOCK_SIZE));
console.log('this.gl.MAX_COMBINED_SHADER_STORAGE_BLOCKS', gl.getParameter(gl.MAX_COMBINED_SHADER_STORAGE_BLOCKS));
console.log('this.gl.MAX_VERTEX_OUTPUT_COMPONENTS', gl.getParameter(gl.MAX_VERTEX_OUTPUT_COMPONENTS));
console.log('this.gl.MAX_COMPUTE_SHARED_MEMORY_SIZE', gl.getParameter(gl.MAX_COMPUTE_SHARED_MEMORY_SIZE));
console.log('this.gl.MAX_VARYING_VECTORS', gl.getParameter(gl.MAX_VARYING_VECTORS));
const shader = gl.createShader(gl.COMPUTE_SHADER);
const code = document.getElementById('compute_shader').text;
gl.shaderSource(shader, code);
gl.compileShader(shader);
if (gl.getShaderParameter(shader, gl.COMPILE_STATUS) != true) {
console.log('ERROR');
throw Error(gl.getShaderInfoLog(shader));
}
const prog = gl.createProgram();
gl.attachShader(prog, shader);
gl.linkProgram(prog);
if (gl.getProgramParameter(prog, gl.LINK_STATUS) != true) {
console.log('ERROR');
throw Error(gl.getProgramInfoLog(prog));
}
console.log('SUCCESS');
});
</script>
</head>
<body>
<div>
<canvas id='glcanvas'></canvas>
<script id='compute_shader' type='x-shader/x-vertex'>#version 310 es
layout( local_size_x = 1000, local_size_y = 1, local_size_z = 1 ) in;
layout (std430, binding = 0) buffer aBuffer
{
int aData[];
};
layout (std430, binding = 1) buffer bBuffer
{
int bData[];
};
layout (std430, binding = 2) buffer cBuffer
{
int cData[];
};
layout (std430, binding = 3) buffer dBuffer
{
int dData[];
};
layout (std430, binding = 4) buffer eBuffer
{
int eData[];
};
layout (std430, binding = 5) buffer fBuffer
{
int fData[];
};
layout (std430, binding = 6) buffer gBuffer
{
int gData[];
};
layout (std430, binding = 7) buffer hBuffer
{
int hData[];
};
layout (std430, binding = 8) buffer rBuffer
{
int rData[];
};
layout (std430, binding = 9) buffer jBuffer
{
int jData[];
};
layout (std430, binding = 10) buffer kBuffer
{
int kData[];
};
layout (std430, binding = 11) buffer lBuffer
{
int lData[];
};
layout (std430, binding = 12) buffer mBuffer
{
int mData[];
};
layout (std430, binding = 13) buffer nBuffer
{
float nData[];
};
layout (std430, binding = 14) buffer oBuffer
{
int oData[];
};
uniform float a;
uniform float b;
uniform int c;
uniform int d;
uniform float f;
uniform int g;
void main(void) {
uint index = gl_GlobalInvocationID.x;
aData[index] = bData[index];
bData[index] = cData[index];
cData[index] = dData[index];
dData[index] = eData[index];
eData[index] = fData[index];
fData[index] = gData[index];
gData[index] = hData[index];
hData[index] = rData[index];
rData[index] = jData[index];
jData[index] = kData[index];
kData[index] = lData[index];
lData[index] = mData[index];
mData[index] = oData[index];
nData[index] = f + a + b;
oData[index] = c + d + g;
}
</script>
</div>
</body>
</html>