80 lines
2.6 KiB
Markdown
80 lines
2.6 KiB
Markdown
---
|
|
id: AGD-0009
|
|
ticket: perf-host-desktop-frame-pacing-and-presentation
|
|
title: Agenda - [PERF] Host Desktop Frame Pacing and Presentation
|
|
status: open
|
|
created: 2026-03-27
|
|
resolved:
|
|
decision:
|
|
tags: []
|
|
---
|
|
|
|
# Agenda - [PERF] Host Desktop Frame Pacing and Presentation
|
|
|
|
## Problema
|
|
|
|
O host desktop ainda roda em modo agressivo de polling e apresentacao continua.
|
|
|
|
Hoje o loop usa `ControlFlow::Poll`, pede redraw incondicionalmente e converte o framebuffer inteiro de RGB565 para RGBA8 a cada `RedrawRequested`, mesmo quando nao ha novo frame logico.
|
|
|
|
## Dor
|
|
|
|
- CPU fica ocupada sem ganho visual.
|
|
- port de referencia no desktop mascara problemas de pacing em hardware barato.
|
|
- a conta de energia/temperatura piora mesmo quando a VM esta ociosa.
|
|
|
|
## Hotspots Atuais
|
|
|
|
- [runner.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/host/prometeu-host-desktop-winit/src/runner.rs#L252)
|
|
- [runner.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/host/prometeu-host-desktop-winit/src/runner.rs#L270)
|
|
- [runner.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/host/prometeu-host-desktop-winit/src/runner.rs#L390)
|
|
|
|
## Alvo da Discussao
|
|
|
|
Fechar uma politica de pacing/apresentacao host-driven que nao desperdice CPU quando nao existe frame novo.
|
|
|
|
## O Que Precisa Ser Definido
|
|
|
|
1. Gatilho de redraw.
|
|
Decidir se redraw acontece:
|
|
- apenas com logical frame pronto;
|
|
- por deadline de vsync;
|
|
- por dirty flag do front buffer;
|
|
- por evento externo relevante.
|
|
|
|
2. Politica do event loop.
|
|
Decidir entre:
|
|
- `Wait`;
|
|
- `WaitUntil`;
|
|
- `Poll` apenas em modo debug/profiling.
|
|
|
|
3. Conversao de framebuffer.
|
|
Definir se a conversao RGB565 -> RGBA8:
|
|
- continua full-frame;
|
|
- passa a ser dirty-region;
|
|
- sai da CPU e vai para shader/path especifico do host.
|
|
|
|
4. Modo ocioso.
|
|
Delimitar comportamento quando VM esta pausada, em breakpoint ou sem cart.
|
|
|
|
## Open Questions de Arquitetura
|
|
|
|
1. O host desktop deve ser referencia conservadora de energia ou apenas shell de desenvolvimento?
|
|
2. O runtime precisa expor um sinal explicito de "novo frame disponivel" para o host?
|
|
3. Existe necessidade real de redraw continuo quando o overlay esta desligado?
|
|
|
|
## Dependencias
|
|
|
|
- `../specs/01-time-model-and-cycles.md`
|
|
- `../specs/10-debug-inspection-and-profiling.md`
|
|
- `../specs/11-portability-and-cross-platform-execution.md`
|
|
|
|
## Criterio de Saida Desta Agenda
|
|
|
|
Pode virar PR quando houver decisao escrita sobre:
|
|
|
|
- politica de control flow do host;
|
|
- criterio canonico de redraw;
|
|
- estrategia de conversao/apresentacao de framebuffer;
|
|
- comportamento de idle/pause/debug.
|