LifePlay-Revival/Docs/Migration/etat/VQ/VQ3/VQ3-IMPL-H.md

71 lines
2.8 KiB
Markdown
Raw Normal View History

# 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`.