2124f6be07
Cierra 0049b. El context de fn::run_app pide ahora GL 4.3 core con forward-compat global, habilitando compute shaders, SSBOs, image load/store y atomic counters — bloques esenciales del graph_renderer GPU del proyecto osint_graph (issues 0049f y 0049h). Cambios: - cpp/framework/app_base.cpp: 4.3 core + forward-compat. Comentario marcando que es backward-compatible con shaders #version 330. - cpp/apps/primitives_gallery/capture.cpp: deja explicitamente 3.3 core porque WSL Mesa no entrega 4.3 offscreen (GLXBadFBConfig); ImGui + ImPlot funcionan igual en 3.3 para los goldens. - primitives_gallery: nuevo demo Gfx > gl_info que muestra Vendor/Renderer/Version/GLSL en runtime + status 4.3 (verde) + limites (MAX_TEXTURE_SIZE, MAX_VERTEX_ATTRIBS, MAX_UNIFORM_BLOCK_SIZE y, si 4.3+, MAX_SHADER_STORAGE_BUFFER_BINDINGS y compute shared mem). Solo glGetString/glGetIntegerv — sin loader extra. - About bumped a 0.4.0 con la nota del nuevo demo y de GL 4.3. - cpp/tests/test_visual.cpp: usa LIBGL_ALWAYS_SOFTWARE=1 al lanzar el capture para alinear el driver con update_goldens.sh; sin esto las diferencias de strings (llvmpipe vs d3d12) hacen que gl_info supere el 1% de tolerancia. - cpp/tests/golden/gl_info.png: nuevo golden. Build verificado en Linux (cmake build OK) + Windows cross-compile (cmake build OK). Las 27 pruebas pasan (incluida test_visual con 42 demos comparadas).
79 lines
3.3 KiB
Markdown
79 lines
3.3 KiB
Markdown
# 0049b — Bump OpenGL 3.3 → 4.3 core en `cpp/framework`
|
|
|
|
## Metadata
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | 0049b |
|
|
| **Estado** | pendiente |
|
|
| **Prioridad** | alta |
|
|
| **Tipo** | infraestructura — parte de [#0049](0049-osint-graph-viewer.md) |
|
|
|
|
## Dependencias
|
|
|
|
**Bloqueada por:** ninguna (ortogonal a 0049a).
|
|
**Desbloquea:** [0049h](0049h-graph-force-layout-gpu.md) (compute shaders necesitan 4.3) y simplifica [0049f](0049f-graph-renderer-symbols.md).
|
|
|
|
---
|
|
|
|
## Objetivo
|
|
|
|
Subir el contexto OpenGL del framework de 3.3 core a 4.3 core para habilitar compute shaders, SSBOs, e image load/store. Verificar que las 4 apps C++ existentes siguen funcionando.
|
|
|
|
## Contexto
|
|
|
|
Hoy `cpp/framework/app_base.cpp` pide GL 3.3 core (`glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); MINOR, 3`). Limita el renderer GPU del grafo: sin compute, sin SSBO, sin atomic counters. Subir a 4.3 es un cambio de una sola linea en el shell pero requiere validar que ningun shader del registry usa caracteristicas removidas (no las hay — 4.3 core es superset compatible) y que ningun driver target falla.
|
|
|
|
## Arquitectura
|
|
|
|
```
|
|
cpp/framework/
|
|
└── app_base.cpp # MOD: GL_CONTEXT_VERSION_MAJOR/MINOR → 4/3
|
|
```
|
|
|
|
Posible adaptacion en `cpp/functions/gfx/gl_loader.cpp` si los punteros 4.3 no estan cargados (revisar).
|
|
|
|
## Tareas
|
|
|
|
### Fase 1 — Cambio
|
|
|
|
- [ ] **1.1** En `app_base.cpp`, cambiar:
|
|
```cpp
|
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
|
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
|
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
|
```
|
|
- [ ] **1.2** En `gl_loader.cpp`, anadir punteros 4.x usados por sub-issues posteriores (compute, SSBO, atomic counter). Solo declarar los que se vayan a usar — no inundar.
|
|
|
|
### Fase 2 — Verificacion en apps existentes
|
|
|
|
- [ ] **2.1** Linux native build: `cmake --build cpp/build/linux --target shaders_lab registry_dashboard primitives_gallery chart_demo -j$(nproc)`. Cero warnings nuevos.
|
|
- [ ] **2.2** Run de cada app y captura visual basica (shaders_lab abre canvas, dashboard carga datos, primitives_gallery navega demos, chart_demo renderiza).
|
|
- [ ] **2.3** Windows cross-compile: `cmake --build cpp/build/windows ...`. Mismas apps, mismo check.
|
|
|
|
### Fase 3 — Tests visuales
|
|
|
|
- [ ] **3.1** Regenerar goldens: `cpp/scripts/update_goldens.sh`.
|
|
- [ ] **3.2** `cpp/scripts/run_tests.sh` debe terminar verde — incluye `test_visual` con tolerancia 1%.
|
|
- [ ] **3.3** Revisar diffs en goldens: si cambia algo > tolerancia, investigar (deberia ser idempotente al subir version).
|
|
|
|
### Fase 4 — Cleanup
|
|
|
|
- [ ] Commit en master: `feat(framework): bump OpenGL 3.3 → 4.3 core context`.
|
|
- [ ] Verificar que `apps_tbd.md` se respeta (rama corta, merge --no-ff a master).
|
|
|
|
## Criterio de done
|
|
|
|
- [ ] Las 4 apps existentes compilan en Linux y Windows.
|
|
- [ ] `cpp/scripts/run_tests.sh` verde.
|
|
- [ ] `glGetString(GL_VERSION)` reporta 4.3+ en runtime.
|
|
|
|
## Riesgos
|
|
|
|
| Riesgo | Mitigacion |
|
|
|---|---|
|
|
| HW de pruebas no soporta 4.3 | Toda GPU ~2012+ lo soporta; WSL Mesa software soporta 4.3+ |
|
|
| Cambio de profile rompe alguna deprecation | 4.3 core ya excluye fixed-function igual que 3.3 core; no hay regresion esperable |
|
|
| Visual goldens cambian por driver | Aceptar regenerar; si diff es semantico, investigar shader |
|