emscripten-core / emscripten-core/emscripten

glGetActiveUniformBlockiv returns invalid value if GL_UNIFORM_BLOCK_BINDING is 0

Aperta
#13,701 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
wontfix
Lingua principale
C++
Stelle
27.6k
Fork
3.6k
Merge medio
1g 14h
PR unite (30g)
125

Descrizione

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') }}};
}
}
```

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia in src/library_webgl2.js, nell’implementazione di glGetActiveUniformBlockiv, e verifica come i risultati di getActiveUniformBlockParameter vengono scritti in params. Riproduci una query GL_UNIFORM_BLOCK_BINDING che restituisca 0, quindi verifica che il valore restituito venga scritto correttamente e che la gestione degli errori per i risultati degli array rimanga invariata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript, wasm
Ambito
computer-graphics, web-dev
Tipo di issue
Bug
Difficoltà
1/5
Tempo stimato
Meno di un'ora
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.