Ps5-vulkan
Une API expérimentale de type Vulkan pour PlayStation 5 Accueilbrew, ciblant le gfx1013 GPU de la console. L'implémentation actuelle rend la géométrie 3D...
Choisir une liste...
ps5-vulkan
Une API expérimentale de type Vulkan pour PlayStation 5
homebrew, visant les consoles gfx1013 C'est bon.
L'implémentation actuelle rend la géométrie 3D animée, indexée et texturée à travers des pipelines graphiques matériels. Il prend en charge les tests de profondeur, soutenu par GPU images et tampons, transfert et mise en page explicites, et natif 1080p présentation avec la propriété de deux tampons. Calculer l'expédition utilise le même Vulkan modèle objet et chemin de soumission GPU natif.
La validation du matériel a été effectuée sur un firmware de fonctionnement PS5 appartenant 12.02. La scène démontrée soutient environ 59,94 images présentées par seconde, survit à une réutilisation répétée des ressources et peut être fermée et relancée proprement. Les contrôles déterministes de récupération GPU couvrent la texture et la profondeur sélectionnées résultats; la sortie visuelle n'est pas le seul signal correct.
Couverture API
- Instance de type Vulkan 1.0, dispositif physique, périphérique et objets de file d'attente
- tampons et images invisibles soutenus par la mémoire directe native
- Pools de commandes et tampons de commandes avec état d'enregistrement explicite
- Copies de tampons byte-granulaires ordonnées et commandes de mise à jour et de remplissage des tampons délimités
- Commandes indirectes mono-dispatch et mono-draw avec résolution d'argument temps d'exécution
- pipelines de calcul compilés avec jusqu'à quatre ensembles de ressources
- Les tampons de stockage, les tampons uniformes et les tampons texels uniformes R32
- Accès au tampon de stockage 8 bits et 16 bits négocié par extension
- Push constantes et constantes de spécialisation scalaire dans le calcul et l'exécution graphiques
- Objets Vulkan pipeline-cache avec une exportation d'en-tête normative (pas encore d'enregistrement de code compilé portable)
- Durée de vie de la requête-pool d'occlusion (récupération des résultats reportée) et requêtes d'image clairsemées vides
- Compilation Vertex/fragment pour triangles procéduraux avec un cache de paires délimité
- Vertex et tampons d'index, tirages de la liste triangulaire indexée et non indexée
- Une pièce de présentation BGRA8 ou une pièce de couleur RGBA8 hors écran, plus une fixation de profondeur D32 optionnelle
- textures échantillonnées RGBA8 à un seul niveau avec des transitions de téléchargement GPU
- Une paire de port de vue statique ou dynamique/ciseaux, test de profondeur et abattage du visage
- Prise en charge de l'enregistrement de tous les setters à état dynamique Vulkan 1.0; seulement dynamique viewport/ciseau participe actuellement aux tirages natifs
- Reprise de la pièce jointe Bounded RGBA8
vkCmdCopyImageToBuffer - Présentation autochtone à deux tampons 1920x1080
- Comptabilité explicite, retraite et ressources limitées
Le profil exact supporté est documenté dans API.md. Construire et tester les exigences sont en BÂTIMENT.md. Les résultats des tests graphiques et leurs limites sont résumés dans VALIDATION md. La provenance et les déficits actuels des limites des appareils physiques, mémoire, files d'attente et les formats sont suivis dans PHYSIQUE DEVICE REPORTATION.md.
Deux suites indépendantes sont intégrées à ce moteur : une sélection ciblée
des véritable Khronos en amont VK-GL-CTS code compilé dans une charge utile native
(UPSTREAM CTS.md), et un contract.* suite modélisée
après le CTS doit passer sélection. Ce sont des artefacts séparés avec des
les vérificateurs; ni une revendication de conformité Vulkan.
Limites importantes
Ce n'est pas un pilote Vulkan-conformant ou ICD, et il ne fournit pas encore WSI, swapchains, couverture grand format, transfert d'image général/éclair/resolve, files d'attente multiples, sémaphores chronologiques, mélange, MSAA, mipmaps, anisotropie ou shader arbitraire des programmes. Le profil Vulkan 1.0 monoque comprend des sémaphores binaires et host/device events; cela n'implique pas un support multi-queue ou de synchronisation2. Le calcul SPIR-V est compilé au moment de l'exécution via le PSBC/ACO GFX1013 backend et cache sous une politique limitée en mémoire. Vertex/fragment temps d'exécution compilation prend désormais en charge les triangles float32 procéduraux ou à un seul engagement adéquation des interfaces lisses, cibles BGRA8/RGBA8, constantes de poussée/spécialisation et pas de descripteurs graphiques. Paires compilées réutiliser le cache délimité. La scène texturée utilise toujours son audit hors ligne bibliothèque de programme; il n'implique pas le support texturé d'exécution-shader. La tranche de 8/16 bits couvre uniquement l'accès au tampon de stockage; entier/float étroit arithmétique et autres classes de stockage étroites restent non annoncés.
Développement
La validation de l'hôte nécessite Python 3, Make, un compilateur C11 et Git:
make vulkan-headers
make compiler-deps
make check
make check-sanitize
La compilation native nécessite également la charge utile PS5 SDK et le compagnon
ps5-agc-gears bibliothèque de soutien; voir BÂTIMENT.md.
Licence
ps5-vulkan est un logiciel libre sous licence publique générale GNU,
version 3 ou (à votre choix) toute version ultérieure (GPL-3.0-or-later). Voir
LICENCE pour les termes complets et LICENCES.md pour
droits d'auteur, contribution, dépendance et détails de la preuve de source.
Le SDK scénique contient un libps5vk.a. Distribution d'une application
links cette bibliothèque crée un travail de GPL combiné et nécessite
source correspondante sous des termes compatibles avec la GPL. Modules système Console et
leurs façades d'importation link-time ne sont pas distribuées dans ce dépôt.