71 lines
2.8 KiB
Markdown
71 lines
2.8 KiB
Markdown
|
|
# 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`.
|