# VQ3-IMPL-H — Bouton Recommended (VRAM) **Fiche :** VQ3-T1 **Rôle :** A-IMPL-H **Date :** 07 octobre 2026 **Entrée :** `VQ2-IMPL-H.md` (stub), `VQ2-VAL.md` ## Modèle | | Modèle | |---|---| | Attendu (consigne) | `claude-sonnet-5-5-high` (repli M3) | | **Réel** | `claude-sonnet-5-5-high` (Claude Sonnet 5.5) | ## Fichiers | Fichier | Action | |---|---| | `Source/LifePlay/LPVideoQualitySubsystem.cpp` | `OnRecommendedClicked` : calcul VRAM à la place du stub ; includes `DynamicRHI.h`, `RHI.h`, `RHIStats.h` ; helpers `LPVideoQuality::QueryDedicatedVideoMemoryBytes` et `LevelFromVramGB` ; constante `RecommendedStubLevel` remplacée par `RecommendedUnknownLevel` (2) | | `Source/LifePlay/LifePlay.Build.cs` | `PrivateDependencyModuleNames.Add("RHI")` (déjà fourni en transitif par `Engine`, rendu explicite) | `LPVideoQualitySubsystem.h` inchangé (signature de `OnRecommendedClicked` identique). ## API choisie Vérifiée dans les sources UE 5.5 : - `RHIGetTextureMemoryStats(FTextureMemoryStats&)` : `DynamicRHI.h` l.1316 (appelle `GDynamicRHI`). - `FTextureMemoryStats::DedicatedVideoMemory` : `RHIStats.h` l.15, `int64` en octets, **-1 si inconnu**. - D3D12 : `FD3D12DynamicRHI::RHIGetTextureMemoryStats` (`D3D12Texture.cpp` l.394) renseigne `DedicatedVideoMemory` avec `GDedicatedVideoMemory` (hardware, fixé à la création du device). Garde : `GDynamicRHI` nul → 0 ; valeur négative → `FMath::Max(.., 0)` → 0. ## Seuils | VRAM dédiée | Niveau | Libellé | |---|---|---| | inconnue (0) | 2 | High (défaut) | | < 4 Go | 0 | Low | | < 6 Go | 1 | Med | | < 10 Go | 2 | High | | ≥ 10 Go | 3 | Epic | Go = octets / 1024³. ## Application `SetLevels(FLPVideoLevels::FromOverall(Level), true)` — `SetLevels` vérifié (l.~280) : - `bFromOverall && Overall >= 0` → `FromOverall` : les 4 groupes alignés sur le niveau, Overall = niveau ; - sinon (curseur individuel) → `Normalize()` : Overall = niveau commun ou -1 (Custom) ; - puis `bConfigured = true`, `ApplyToScalability()`, `RefreshWidgets()`, `Save()`. Journal (Display) : - `Video : Recommended = High (niveau 2), VRAM dediee detectee 8.0 Go` - `Video : Recommended = High (niveau 2), VRAM dediee inconnue (0 Go), defaut High` ## Build ``` Build.bat LifePlayEditor Win64 Development -Project="D:\Game\LifePlay-master 5.5\LifePlay.uproject" ``` Résultat : **compile OK** (UHT sans erreur, `Module.LifePlay.cpp` compilé, `UnrealEditor-LifePlay.dll` relié, exit code 0, aucun warning sur les fichiers VQ3). ## Limites - GPU intégré : la VRAM dédiée est petite (mémoire partagée avec la RAM) → Low ou Med. Choix assumé (seuil simple demandé) ; `SharedSystemMemory` non utilisé. - Non vérifié en exécution avec un vrai RHI (le bouton exige le menu Settings) : voir `VQ3-VAL.md`.