Files
Felipe Cardoso c596e38e9e Initial commit
2026-03-25 20:13:15 +01:00

84 lines
3.4 KiB
Bash

#!/usr/bin/env bash
# BIOS VRAM guidance + GTT verification
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../../lib/common.sh"
source "$SCRIPT_DIR/../../lib/detect.sh"
source "$SCRIPT_DIR/../../lib/format.sh"
log_header "VRAM / GTT Memory Optimization"
vram_total="$(detect_vram_total)"
gtt_total="$(detect_gtt_total)"
vram_gib=$(echo "scale=1; $vram_total / 1073741824" | bc)
gtt_gib=$(echo "scale=1; $gtt_total / 1073741824" | bc)
log_info "Current memory allocation:"
print_kv "VRAM (dedicated)" "${vram_gib} GiB"
print_kv "GTT (dynamic)" "${gtt_gib} GiB"
print_kv "System RAM (visible)" "$(echo "scale=1; $(detect_system_ram_kb) / 1048576" | bc) GiB"
echo ""
# ── Check if BIOS VRAM change is needed ──────────────────
# Optimal: VRAM <= 1 GiB (0.5 GiB ideal), rest dynamically via GTT
if (( vram_total > 1073741824 )); then
log_warn "VRAM is ${vram_gib} GiB — this permanently locks memory away from the OS."
log_info "AMD recommends 512 MB dedicated VRAM for Strix Halo."
log_info "The GPU accesses additional memory dynamically via GTT (kernel params)."
echo ""
printf "${BOLD}BIOS Configuration Steps (HP ZBook Ultra G1a):${RESET}\n"
echo ""
echo " 1. Reboot the laptop"
echo " 2. Press F10 repeatedly during boot to enter BIOS Setup"
echo " 3. Navigate to: Advanced > Built-in Device Options"
echo " (or Advanced > Display > UMA Frame Buffer Size)"
echo " 4. Set UMA Frame Buffer Size to: 512 MB (or smallest available)"
echo " 5. Save and Exit (F10)"
echo ""
echo " NOTE: The exact menu path may vary by BIOS version."
echo " Look for 'UMA', 'Frame Buffer', 'VRAM', or 'iGPU Memory'."
echo ""
log_info "After BIOS change + reboot with kernel params, expected state:"
echo " VRAM: ~512 MiB"
echo " GTT: ~$(human_mib "$(recommended_gttsize_mib)") (with kernel params)"
echo " System RAM: ~$(echo "scale=1; $(detect_total_physical_ram_kb) / 1048576 - 0.5" | bc) GiB visible"
echo ""
elif (( vram_total <= 1073741824 )); then
log_success "VRAM is ${vram_gib} GiB — already optimal!"
fi
# ── Check GTT ────────────────────────────────────────────
rec_gttsize="$(recommended_gttsize_mib)"
rec_gtt_bytes=$(( rec_gttsize * 1048576 ))
if (( gtt_total >= rec_gtt_bytes * 3 / 4 )); then
log_success "GTT is ${gtt_gib} GiB — good (recommended: ~$(human_mib "$rec_gttsize"))"
else
log_warn "GTT is ${gtt_gib} GiB — low (recommended: ~$(human_mib "$rec_gttsize"))"
log_info "This requires kernel boot parameters. Run: make optimize-kernel"
fi
# ── Optional: amd-debug-tools ────────────────────────────
echo ""
log_header "Optional: amd-debug-tools (amd-ttm)"
log_info "AMD provides 'amd-debug-tools' for runtime GTT/TTM inspection."
if is_cmd amd-ttm; then
log_success "amd-ttm is installed"
log_info "Current GTT settings:"
amd-ttm 2>/dev/null || true
elif is_cmd pipx; then
log_info "Install with: pipx install amd-debug-tools"
if confirm "Install amd-debug-tools via pipx?"; then
pipx install amd-debug-tools
log_success "Installed. Run 'amd-ttm' to inspect GTT allocation."
fi
else
log_info "Install pipx first: sudo dnf install pipx"
log_info "Then: pipx install amd-debug-tools"
fi