Rust-GPU / Rust-GPU/rust-gpu

[Migrated] Malformed SPIR-V when compiling a simple loop

Offen
#81 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Rust
Sterne
3.4k
Forks
126
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/1076
Old labels: t: bug
Originally creatd by Patryk27 on 2023-06-16T15:19:59Z


Hi,

Compiling this code:

#[spirv(compute(threads(8, 8)))]
pub fn main(#[spirv(descriptor_set = 0, binding = 0)] out: TexRgba32f) {
    let mut value = vec3(0.1, 0.2, 0.3);
    let mut i = 0;

    loop {
        if i >= 32 {
            break;
        }

        i += 1;
    }

    unsafe {
        out.write(uvec2(0, 0), value.extend(1.0));
    }
}

... will work, but adding a seemingly no-op value = value into that loop:

loop {
    value = value;

    if i >= 32 {
        break;
    }

    i += 1;
}

... will panic the compiler, saying:

error: malformed SPIR-V (in OpCompositeExtract: undefined ID %4547)

Meta:

rustc 1.71.0-nightly (1a5f8bce7 2023-05-26)
SPIRV-Tools v2023.2 unknown hash, 1980-01-01T00:00:00

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den Rust-Reproducer mit und ohne das No-op value = value innerhalb der Schleife zu kompilieren; untersuche anschließend das generierte SPIR-V und die Diagnose von OpCompositeExtract. Als abgeschlossen gilt, wenn beide Versionen ohne einen Fehler wegen fehlerhaftem SPIR-V kompiliert werden und eine gültige Ausgabe erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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