Rust-GPU / Rust-GPU/rust-gpu

"No OpEntryPoint instruction was found" for public function

Aperta
#293 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Rust
Stelle
3.4k
Fork
125
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il problema con una funzione shader in un sottomodulo non pubblico, usando la macro #[spirv(..)] indicata e confrontandola con il workaround #[unsafe(no_mangle)]. Esamina la gestione delle funzioni pubbliche da parte della macro e gli entry point SPIR-V generati; il lavoro è completato quando il caso del sottomodulo non pubblico viene validato senza richiedere l'attributo manuale.

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

Valutazione

Stack tecnologico
rust
Ambito
compilers, computer-graphics
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Da chiarire
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.