Wow, thanks a lot for this report. Looking at it now.
Created attachment 644153 [details] Demonstration of retrieving attrib locations from the list of active attribs
So, this will be fun. Your testcase actually appears to be incorrect, though quite illustrative of the problem here. This eve example just so happens to work in ANGLE, but is not guaranteed to. Guaranteed: location == GetAttribLocation(program, GetActiveAttrib(program, activeAttribIndex).name) Allowed: location != activeAttribIndex Since 'active attribs' must be a dense array of size GetProgramParameter(program, ACTIVE_ATTRIBUTES). However, 'attribs' themselves can be a *sparse* list of capacity MAX_VERTEX_ATTRIBS. In the example page I attached above, I use BindAttribLocation to set the location of 'aPosition' to 0, but the location of 'aTexCoord' to 3. However, ACTIVE_ATTRIBUTES naturally tells us there are only two attribs in the program. info = GetActiveAttrib(program, 0) gives us info about the first active attrib. (which could actually be either 'aPosition' or 'aTexCoord'!) If we, however, call GetAttribLocation(program, info.name), we will see one of: 'aPosition' is at location 0 OR 'aTexCoord' is at location 3 (As an aside, on NV drivers, we will likely see 'aPosition' at active attrib index 0, because 'aPosition' is alphabetically before 'aTexCoord') So, appears to be a bug in the eve demo. It is tough to debug this demo, but it seems you already have a debug system working for this. Can you confirm that this is the case?
Yes, I think you are right. I just checked the eve webpage, looks like they have fixed the issue.
Marking as WORKSFORME based on comment #6 as well as my own personal verification of the site now working.