emscripten-core / emscripten-core/emscripten

glGetActiveUniformBlockiv returns invalid value if GL_UNIFORM_BLOCK_BINDING is 0

Offen
#13,701 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
wontfix
Vorherrschende Sprache
C++
Sterne
27.6k
Forks
3.6k
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
125

Beschreibung

glGetActiveUniformBlockiv, in https://github.com/emscripten-core/emscripten/blob/main/src/library_webgl2.js, is defined as:

```
var result = GLctx['getActiveUniformBlockParameter'](program, uniformBlockIndex, pname);
if (!result) return; // If an error occurs, nothing will be written to params.
if (typeof result == 'number') {
{{{ makeSetValue('params', '0', 'result', 'i32') }}};
} else {
for (var i = 0; i < result.length; i++) {
{{{ makeSetValue('params', 'i*4', 'result[i]', 'i32') }}};
}
}
```
When querying GL_UNIFORM_BLOCK_BINDING, if it returns 0, the `if (!result)` check returns without setting the return value.

The "error" check should only be done for the array condition. The `typeof result == 'number' check will already validate that it's a number.

```
var result = GLctx['getActiveUniformBlockParameter'](program, uniformBlockIndex, pname);
if (typeof result == 'number') {
{{{ makeSetValue('params', '0', 'result', 'i32') }}};
} else {
if (!result) return; // If an error occurs, nothing will be written to params.
for (var i = 0; i < result.length; i++) {
{{{ makeSetValue('params', 'i*4', 'result[i]', 'i32') }}};
}
}
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne in src/library_webgl2.js bei der Implementierung von glGetActiveUniformBlockiv und untersuche, wie die Ergebnisse von getActiveUniformBlockParameter in params geschrieben werden. Reproduziere eine GL_UNIFORM_BLOCK_BINDING-Abfrage, die 0 zurückgibt, und überprüfe anschließend, dass der zurückgegebene Wert korrekt geschrieben wird und die Fehlerbehandlung für Array-Ergebnisse unverändert bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, wasm
Bereich
computer-graphics, web-dev
Issue-Typ
Bug
Schwierigkeit
1/5
Geschätzter Aufwand
Unter einer Stunde
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.