Rust-GPU / Rust-GPU/rust-gpu

Expose more information on compiled entry points

Ouverte
#374 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement
Langage dominant
Rust
Étoiles
3.4k
Forks
126
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Problem

Right now the entry_points in CompileResult contains names only. This limits limits our/the users ability to generate code.

Proposal

Exposing some additional information on them could help with generating code, without prior knowledge of how each entry point works (like having a dictionary of graphics and compute shaders).

Expose SpirV representation

Right now I am thinking of putting a version of the generated EntryPoint spirv lang struct into rustc_codegen_spirv_types because of how easy it is to implement.

pub struct EntryPoint {
    pub execution_model: spirv::ExecutionModel,
    pub entry_point: spirv::Word,
    pub name: String,
    pub interface: Vec<spirv::Word>,
}
Use naga

Another idea I had was using naga::ir::EntryPoint

pub struct EntryPoint {
    pub name: String,
    pub stage: ShaderStage,
    pub early_depth_test: Option<EarlyDepthTest>,
    pub workgroup_size: [u32; 3],
    pub workgroup_size_overrides: Option<[Option<Handle<Expression>>; 3]>,
    pub function: Function,
}

but this is a bit detached from the underlying spirv (harder to parse from spirv code + less shader stages etc)

Unique struct

The best version would probably be a combination of the 2.

Even if it doesn't end up getting merged, I'll do it for my own project. All insights are welcome.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par CompileResult.entry_points et examinez l’EntryPoint proposé dans rustc_codegen_spirv_types en regard de naga::ir::EntryPoint. Déterminez d’abord quelle représentation et quelles métadonnées le projet devrait exposer ; la tâche est terminée lorsque CompileResult fournit des informations convenues suffisantes sur les points d’entrée pour la génération de code sans connaissance préalable du shader.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
rust
Domaine
backend-api-design, compilers
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.