Rust-GPU / Rust-GPU/rust-gpu

"No OpEntryPoint instruction was found" for public function

Offen
#293 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Expected Behaviour

Non-public submodules should be supported, but instead I'm getting this:

     Compiling ab-proof-of-space-gpu v0.1.0 (ab-proof-of-space-gpu)
  warning: function `main_cs` is never used
    --> src/shaders.rs:10:8
     |
  10 | pub fn main_cs(
     |        ^^^^^^^
     |
     = note: `#[warn(dead_code)]` on by default

  error: No OpEntryPoint instruction was found. This is only allowed if the Linkage capability is being used.
    |
    = note: module `target/debug/build/ab-proof-of-space-gpu-dc89fe269d0c81ad/out/spirv-unknown-vulkan1.1/release/deps/ab_proof_of_space_gpu.spv`

  warning: an unknown error occurred
    |
    = note: spirv-opt failed, leaving as unoptimized
    = note: module `target/debug/build/ab-proof-of-space-gpu-dc89fe269d0c81ad/out/spirv-unknown-vulkan1.1/release/deps/ab_proof_of_space_gpu.spv`

  error: error:0:0 - No OpEntryPoint instruction was found. This is only allowed if the Linkage capability is being used.
    |
    = note: spirv-val failed
    = note: module `target/debug/build/ab-proof-of-space-gpu-dc89fe269d0c81ad/out/spirv-unknown-vulkan1.1/release/deps/ab_proof_of_space_gpu.spv`

Slapping #[unsafe(no_mangle)] is sufficient to bypass this error, making submodule publicly reachable too.

I think #[spirv(..)] macro should be able to do something about it automatically to ensure it is exposed properly.

Kind of related to https://github.com/Rust-GPU/rust-gpu/issues/156

Example & Steps To Reproduce
  1. Have a shader in submodule that is not publicly reachable

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

Reproduziere den Fehler mit einer Shader-Funktion in einem nicht öffentlichen Submodul, unter Verwendung des gemeldeten #[spirv(..)]-Makros und im Vergleich mit dem #[unsafe(no_mangle)]-Workaround. Untersuche die Verarbeitung öffentlicher Funktionen durch das Makro und die generierten SPIR-V-Einstiegspunkte; abgeschlossen ist die Aufgabe, wenn der Fall mit dem nicht öffentlichen Submodul ohne erforderliches manuelles Attribut validiert wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
compilers, computer-graphics
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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