entry points with an enum of exactly two variants fails
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Rust
- Sterne
- 3.4k
- Forks
- 125
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Rust-gpu rejects entry points with an enum of exactly two variants and no values. rustc seems to convert those to bools, and we have explicit checks to fail emitting bools. Maybe we should even reconsider whether we actually want to block bools this way, and handle them as two variant enums?
// build-pass
use spirv_std::spirv;
use spirv_std::glam::Vec4;
pub enum MyEnum {
Variant1,
Variant2,
}
#[spirv(fragment)]
pub fn main(
#[spirv(storage_buffer, descriptor_set = 0, binding = 0)] value: &MyEnum,
out: &mut Vec4,
) {
*out = match value {
MyEnum::Variant1 => Vec4::new(1., 0., 0., 1.),
MyEnum::Variant2 => Vec4::new(0., 1., 1., 1.),
}
}
fails with:
error: entry-point parameter cannot contain `bool`s
--> $DIR/entry_point_enum_two_variants.rs:12:70
|
12 | #[spirv(storage_buffer, descriptor_set = 0, binding = 0)] value: &MyEnum,
| ^^^^^^^
error: aborting due to 1 previous error
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem im Fehler gezeigten build-pass-Fall entry_point_enum_two_variants.rs und reproduziere die Ablehnung eines Enums mit zwei Varianten, das an einen Entry-Point übergeben wird. Verfolge die Validierung der Entry-Point-Parameter, die bools als nicht unterstützt meldet. Die Aufgabe ist erledigt, wenn die vorgesehene Behandlung festgelegt und durch einen erfolgreichen Regressionstest abgedeckt ist.
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