-
Notifications
You must be signed in to change notification settings - Fork 3
Labels
bugSomething isn't workingSomething isn't working
Description
Bug Description
Running Khronos/WebGL2 conformance test (active-built-in-attribs.html) in JSAR Runtime:
shouldBe('activeInfo.name', '"gl_VertexID"');
attribLoc = gl.getAttribLocation(prog, 'gl_VertexID');
wtu.glErrorShouldBe(gl, gl.NO_ERROR, "Should be able to request the location of a built-in.");
shouldBe('attribLoc', '-1');Test fails: attribLoc should be -1. Was 0.
Spec Reference
- WebGL 2.0 Spec §5.18 gl.getAttribLocation
- For built-in attributes (like gl_VertexID, gl_InstanceID, gl_Position, gl_PointSize):
"Applications may query the location of a built-in attribute by passing its name to getAttribLocation, but this will always return -1."
- For built-in attributes (like gl_VertexID, gl_InstanceID, gl_Position, gl_PointSize):
- MDN
- Chromium Implementation
Root Cause
- JSAR currently returns 0 for built-in attribute names instead of -1, violating spec compliance.
- Correct behavior: gl.getAttribLocation(program, 'gl_VertexID') MUST return -1, never a valid location.
Acceptance Criteria
- getAttribLocation on any built-in attribute ('gl_VertexID', 'gl_InstanceID', 'gl_Position', 'gl_PointSize') MUST always return -1
- The referenced conformance test passes
Implementation Guidance (C++)
- Fix the attribute location query in WebGLRenderingContext/WebGL2RenderingContext
- Check if the attribute name matches any of the built-in names, and always return -1
int WebGLRenderingContext::getAttribLocation(WebGLProgram* program, const std::string& name) {
static const std::set<std::string> kBuiltInAttribs = {
"gl_VertexID", "gl_InstanceID", "gl_Position", "gl_PointSize"
};
if (kBuiltInAttribs.count(name)) {
return -1;
}
// ... normal lookup logic
}- Update error handling and unit tests for built-in attribute query
Impact
- Strict compliance with WebGL2 specification
- Enables all Khronos/WebGL2 tests for built-in attrib queries to pass
Relevant test HTML:
- https://github.com/EndlessJour9527/WebGL/blob/894d3ba6239ec021a2b65d65d368324c1088aa15/sdk/tests/conformance2/programs/active-built-in-attribs.html
Spec: - https://registry.khronos.org/webgl/specs/latest/2.0/#5.18
Chromium ref: - https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc;l=3742
Copilot
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working