From c6935411032667bd7e9fadd2627ba4c60c50ad7b Mon Sep 17 00:00:00 2001 From: Horacio Daniel Ros Date: Thu, 12 Nov 2026 15:27:39 -0300 Subject: [PATCH] Refactor code structure for improved readability and maintainability --- book/25-drm-kms.md | 970 ++++++++++++++++++++++++++++---------------- dist/25-drm-kms.pdf | Bin 1636364 -> 1815862 bytes 2 files changed, 612 insertions(+), 358 deletions(-) diff --git a/book/25-drm-kms.md b/book/25-drm-kms.md index 5e8bba2..21217b1 100644 --- a/book/25-drm-kms.md +++ b/book/25-drm-kms.md @@ -39,14 +39,15 @@ ejercicios— para que los uses ya mismo. **No las saltee**: son la mitad del ca | **4** | Conectores y estados | Qué monitor está conectado, tipo de puerto, dimensiones físicas. | | **5** | Modos de pantalla | Resoluciones y refresh rates; elegir uno y aplicarlo a un CRTC. | | **6** | Dumb buffers | Crear buffer del kernel, mapearlo a memoria CPU con `mmap`. | -| **7** | Dibujar primitivas en C puro | Bresenham, midpoint, lerp — matemática gráfica sin bibliotecas de renderizado. | +| **7** | Punto y línea en C puro | El dibujo más básico: un píxel y Bresenham. | | **8** | Framebuffers | Asociar un handle de buffer a un fb_id para que el CRTC lo escanee. | | **9** | Page flip + vblank | Doble buffering: cambiás el buffer visible al próximo vblank, cero tearing. | | **10** | KMS atómico | Configurar CRTCs, modos y planes en UNA sola operación; base del multi-monitor. | | **11** | Eventos DRM y hotplug | `poll()` + handlers para detectar conexión/desconexión de monitores. | -| **12** | OpenGL ES + EGL | Contexto gráfico sin windowing system, primitivas con shaders sobre GBM buffers. | -| **13** | Vulkan surfaceless | Swapchain surfaceless, pipeline raster, dibujar sin windowing system. | -| **14** | Ejercicio jefe: pelota rebotando | N monitores, animación con gradiente arco-by-arco, física de rebote, hotplug. | +| **12** | OpenGL ES + EGL sobre DRM | Ponte entre GLES y el hardware sin windowing system. | +| **13** | NanoVG: shapes, gradientes y texto | rects, circles, arcs, bezier paths y TTF sobre GLES + DRM. | +| **14** | Vulkan surfaceless | Swapchain GBM-backed, pipeline raster, dibujar sin windowing system. | +| **15** | Ejercicio jefe: dashboard UI animado | Multi-monitor, nanoVG shapes + fuentes, page flip, hotplug, todo junto. | > **Regla de oro del libro:** el capítulo explica y muestra **cómo funciona** cada ioctl/función, pero > **los ejercicios no traen la solución**. El enunciado te da el problema; la respuesta la escribís vos. @@ -112,10 +113,11 @@ El flujo mínimo es: | Biblioteca | Qué hace | Necesaria para | |---|---|---| -| **libdrm** | Wrappers C de los ioctls de DRM/KMS | Parts 1–9 (todo lo básico) | -| **libgbm** | Generic Buffer Manager de Mesa | Part 12 (OpenGL ES) | -| **EGL** | Ponte entre OpenGL ES y el sistema de ventanas (o la falta de uno) | Part 12 (OpenGL ES) | -| **Vulkan Loader** | Carga los entrypoints de Vulkan en runtime | Part 13 (Vulkan) | +| **libdrm** | Wrappers C de los ioctls de DRM/KMS | Parts 1–11 (todo lo básico) | +| **libgbm** | Generic Buffer Manager de Mesa | Parts 12–14 (OpenGL ES, NanoVG, Vulkan) | +| **EGL** | Ponte entre OpenGL ES y el sistema de ventanas (o la falta de uno) | Parts 12–13 (OpenGL ES + NanoVG) | +| **nanoVG** | API 2D vectorial sobre OpenGL ES | Part 13 (shapes, gradients, texto TTF) | +| **Vulkan Loader** | Carga los entrypoints de Vulkan en runtime | Part 14 (Vulkan surfaceless) | > **libdrm vs ioctls crudos:** Podrías hacer `open("/dev/dri/card0")` y luego `ioctl(fd, DRM_IOCTL_..., &args)` manualmente. Pero libdrm ya hace todo eso con funciones como `drmModeGetResources()`, > `drmModeSetCrtc()`, etc. Más legible, menos boilerplate, mismo resultado. @@ -126,10 +128,14 @@ El flujo mínimo es: # Para libdrm gcc prog.c -ldrm -o prog -# Para OpenGL ES + EGL sobre DRM +# Para OpenGL ES + EGL sobre DRM (Part 12) gcc prog_egl.c -lGLESv2 -lEGL -ldrm -lgbm -o prog_egl -# Para Vulkan +# Con NanoVG (Part 13) — necesitás nanovg.h, nanovg.c y nanovg_gl.h +# Cloná https://github.com/memononen/nanovg y copiá nanovg.h, src/nanovg.c, src/nanovg_gl.h +gcc prog_nvg.c nanovg.c src/nanovg_gl.c -lGLESv2 -lEGL -ldrm -lgbm -lm -o prog_nvg + +# Para Vulkan (Part 14) gcc prog_vulkan.c -lvulkan -ldrm -lgbm -o prog_vulkan ``` @@ -814,14 +820,18 @@ CPU e imprima sus propiedades: handle, pitch, size y dirección de memoria mapea --- -# PARTE 7 — Dibujar primitivas en C puro +# PARTE 7 — Punto y línea en C puro -Aquí empieza la parte divertida: **dibujar formas geométricas directamente en el buffer**. -Sin bibliotecas de gráficos, sin OpenGL. Solo matemáticas y punteros crudos a memoria. +Aquí empieza la parte divertida: **dibujar directamente en el buffer**, sin bibliotecas de gráficos, +sin OpenGL. Solo punteros crudos a memoria y matemática entera. + +Pero no vamos a complicarnos con círculos ni elipses todavía. Empezamos con lo más simple que se +puede dibujar: un **punto** y una **línea recta**. Si podés hacer eso, ya sabés el 80% de cómo +funciona el dibujo por software. ## 7.1 El canvas: un array de bytes -Imagina que el dumb buffer es una cuadrícula infinita de píxeles. Cada píxel tiene 4 bytes (RGBA). +Imaginate que el dumb buffer es una cuadrícula infinita de píxeles. Cada píxel tiene 4 bytes (RGBA). Para escribir en la posición `(x, y)`: ```c @@ -845,14 +855,32 @@ pixels[y * (dbuf.pitch / 4) + x] = 0xFF0000FF; // ARGB: rojo en XRGB8888 > **IMPORTANTE:** `pitch` está en bytes, no en píxeles. Si usás un array de `uint32_t`, necesitás > dividir `pitch` por 4 para obtener el stride en píxeles. -## 7.2 Algoritmo de Bresenham: trazado de líneas +## 7.2 Dibujar un solo punto (píxel) + +La función más simple que vas a escribir. Recibe la posición y el color, escribe 4 bytes: + +```c +// Dibuja un píxel con protección de boundaries +void draw_pixel(uint8_t *buf, uint32_t pitch, int x, int y, uint32_t color) { + // Protección simple: no dibujar fuera del buffer + if (x < 0 || x >= 640 || y < 0 || y >= 480) return; + + uint32_t *pixel = (uint32_t *)(buf + y * pitch + x * 4); + *pixel = color; +} +``` + +Eso es. Una función de cinco líneas que hace todo lo necesario: protege los límites, calcula el +offset y escribe. Nada más. + +## 7.3 Algoritmo de Bresenham: trazado de líneas Bresenham es el algoritmo clásico para trazar una línea recta entre dos puntos usando solo **sumas, restas y multiplicaciones enteras**. Sin `float`, sin divisiones, sin `sqrt()`. ```c // Dibuja una línea de (x0,y0) a (x1,y1) en un dumb buffer 32bpp ARGB -void draw_line(int fd, uint8_t *buf, uint32_t pitch, +void draw_line(uint8_t *buf, uint32_t pitch, int x0, int y0, int x1, int y1, uint32_t color) { int dx = abs(x1 - x0); int dy = abs(y1 - y0); @@ -880,187 +908,69 @@ void draw_line(int fd, uint8_t *buf, uint32_t pitch, > **Cómo funciona Bresenham:** El algoritmo mantiene un "error acumulado" (`err`). En cada paso, > decide si avanza en X, en Y, o en ambos según si el error supera cierto umbral. El resultado es -> una línea con píxeles lo más cerca posible de la recta ideal — **sin punto flotante**. +> una línea con píxeles lo más cerca posible de la recta ideal — **sin punto flotante**. La magia +> está en que `2 * err` evita toda división, manteniendo todo en enteros. -## 7.3 Midpoint circle: círculos perfectos +## 7.4 Dibujar un rectángulo sólido -Para dibujar círculos, usamos el algoritmo midpoint (también llamado "Bresenham para círculos"): +Una vez que tenés puntos y líneas, un rectángulo es trivial: dos bucles anidados que llenan cada fila: ```c -void draw_circle(int fd, uint8_t *buf, uint32_t pitch, - int cx, int cy, int radius, uint32_t color) { - int x = radius; - int y = 0; - int err = 1 - x; // Error inicial - - while (x >= y) { - // Dibujar los 8 píxeles de simetría - draw_pixel_8way(buf, pitch, cx, cy, x, y, color); - - y++; - if (err < 0) { - err += 2 * y + 1; - } else { - x--; - err += 2 * (y - x) + 1; +// Dibuja un rectángulo relleno de color sólido +void draw_rect(uint8_t *buf, uint32_t pitch, int x0, int y0, int x1, int y1, uint32_t color) { + for (int y = y0; y <= y1; y++) { + for (int x = x0; x <= x1; x++) { + draw_pixel(buf, pitch, x, y, color); } } } -// Dibuja un píxel en las 8 posiciones simétricas del círculo -void draw_pixel_8way(uint8_t *buf, uint32_t pitch, - int cx, int cy, int x, int y, uint32_t color) { - // Los 8 octantes - draw_pixel(buf, pitch, cx + x, cy + y, color); - draw_pixel(buf, pitch, cx - x, cy + y, color); - draw_pixel(buf, pitch, cx + x, cy - y, color); - draw_pixel(buf, pitch, cx - x, cy - y, color); - draw_pixel(buf, pitch, cx + y, cy + x, color); - draw_pixel(buf, pitch, cx - y, cy + x, color); - draw_pixel(buf, pitch, cx + y, cy - x, color); - draw_pixel(buf, pitch, cx - y, cy - x, color); -} - -// Dibuja un solo píxel con protección de boundaries -void draw_pixel(uint8_t *buf, uint32_t pitch, int x, int y, uint32_t color) { - // Protección simple: no dibujar fuera del buffer - if (x < 0 || x >= 640 || y < 0 || y >= 480) return; - - uint32_t *pixel = (uint32_t *)(buf + y * pitch + x * 4); - *pixel = color; -} -``` - -> **Simetría de 8 vías:** Un círculo es simétrico en los 8 octantes. Cuando calculamos un punto -> `(x, y)` desde el centro `(cx, cy)`, automáticamente tenemos 7 puntos más: `(-x, y)`, `(x, -y)`, -> `(-x, -y)`, `(y, x)`, `(-y, x)`, `(y, -x)`, `(-y, -x)`. - -## 7.4 Midpoint ellipse: elipses - -Para elipses, el algoritmo midpoint se divide en **dos regiones** porque la pendiente cambia: - -```c -void draw_ellipse(int fd, uint8_t *buf, uint32_t pitch, - int cx, int cy, int rx, int ry, uint32_t color) { - // Región 1: donde |dy/dx| < 1 (más horizontal que vertical) - long long x = rx * rx; - long long y = 0; - long long err1 = x - (long long)rx * ry + (y * y) / 4; - - while (x > (long long)rx * rx * y / (2 * ry)) { // Región 1 - draw_pixel_8way(buf, pitch, cx, cy, - lround(x / rx), lround(y / ry), color); - y++; - err1 += (2 * y - 1) * x; - if (err1 >= 0) { - x--; - err1 -= (long long)ry * ry * 2; - } - } - - // Región 2: donde |dy/dx| >= 1 (más vertical que horizontal) - x = 0; - y = ry * ry; - long long err2 = y - (long long)rx * ry + (x * x) / 4; - - while (y > (long long)ry * ry * x / (2 * rx)) { // Región 2 - draw_pixel_4way(buf, pitch, cx, cy, lround(x / rx), lround(y / ry), color); - x++; - err2 += (2 * x - 1) * y; - if (err2 >= 0) { - y--; - err2 -= (long long)rx * rx * 2; - } - } -} - -void draw_pixel_4way(uint8_t *buf, uint32_t pitch, - int cx, int cy, int x, int y, uint32_t color) { - draw_pixel(buf, pitch, cx + x, cy + y, color); - draw_pixel(buf, pitch, cx - x, cy + y, color); - draw_pixel(buf, pitch, cx + x, cy - y, color); - draw_pixel(buf, pitch, cx - x, cy - y, color); -} -``` - -> **Dos regiones:** La mitad superior delipse tiene pendiente < 1 (cambia más en X que en Y), la -> inferior tiene pendiente >= 1. Por eso el algoritmo se divide: cambia la variable de decisión -> según qué eje avanza más rápido. - -## 7.5 Interpolación lineal (lerp) y gradientes - -Para colorear formas con gradientes, necesitás **interpolación lineal** entre dos colores: - -```c -// Lerp entre dos valores (o componentes de color) -int lerp(int a, int b, float t) { - return a + (int)((b - a) * t); -} - -// Interpolar entre dos colores RGB -uint32_t lerp_color(uint8_t r1, uint8_t g1, uint8_t b1, - uint8_t r2, uint8_t g2, uint8_t b2, float t) { - uint8_t r = lerp(r1, r2, t); - uint8_t g = lerp(g1, g2, t); - uint8_t b = lerp(b1, b2, t); - - // ARGB (little-endian): ABGR en memoria para XRGB8888 - return ((uint32_t)0xFF << 24) | // Alpha = 255 (opaco) - ((uint32_t)b << 16) | // Blue - ((uint32_t)g << 8) | // Green - ((uint32_t)r); // Red -} - -// Gradiente lineal de un color a otro a lo largo del ancho de pantalla -void draw_gradient_h(uint8_t *buf, uint32_t pitch, int width, int height, - uint8_t r1, uint8_t g1, uint8_t b1, - uint8_t r2, uint8_t g2, uint8_t b2) { - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - float t = (float)x / (width - 1); - uint32_t color = lerp_color(r1, g1, b1, r2, g2, b2, t); - - uint32_t *pixel = (uint32_t *)(buf + y * pitch + x * 4); - *pixel = color; +// Versión optimizada: escribe bytes directo por fila (más rápido) +void draw_rect_fast(uint8_t *buf, uint32_t pitch, int x0, int y0, int x1, int y1, uint32_t color) { + for (int y = y0; y <= y1; y++) { + uint32_t *row = (uint32_t *)(buf + y * pitch + x0 * 4); + for (int x = x0; x <= x1; x++) { + *row++ = color; } } } ``` -> **`lerp` es la función más importante de gráficos:** Interpola entre cualquier par de valores. -> Se usa para: colores, coordenadas UV, transparencias, animaciones, texturas... casi todo lo que -> se mueve suavemente en una pantalla pasa por un `lerp`. +> **Versión optimizada:** `draw_rect_fast` evita la llamada a función `draw_pixel` por cada píxel, +> escribiendo directamente en el buffer. En un canvas de 1920x1080, esto puede ser 5-10x más rápido. ## Práctica de la Parte 7 -### Ejercicio 25.6 — Lienzo con primitivas geométricas +### Ejercicio 25.6 — Punto y línea en pantalla -**Conceptos** · Bresenham line, midpoint circle/ellipse, lerp color gradient, punteros a buffer +**Conceptos** · Bresenham line, punteros a buffer, protección de boundaries -**Contexto** · Escribí un programa que cree un dumb buffer de 800×600 a 32bpp e dibuje varias -primitivas geométricas en él. El resultado debe verse como una escena compuesta con: -- Un fondo degradado horizontal (rojo → amarillo → verde → azul → morado). -- Una línea diagonal gruesa cruzando el canvas. -- Un círculo centrado de radio 150. -- Dos elipses superpuestas, una horizontal y otra vertical. +**Contexto** · Escribí un programa que cree un dumb buffer de 800x600 a 32bpp, dibuje una cruz +blanca (dos líneas diagonales) sobre un fondo negro. **Consigna** · El programa debe: -1. Crear un dumb buffer de 800×600 a 32bpp. -2. Dibujar un fondo degradado horizontal usando `lerp_color` (5 colores equidistantes). -3. Trazar una línea de Bresenham de `(50, 50)` a `(750, 550)` en blanco. -4. Dibujar un círculo centrado `(400, 300)` con radio `150` en rojo puro. -5. Dibujar una elipse centrada `(400, 300)` con rx=200, ry=100 en cian. -6. Dibujar otra elipse centrada `(400, 300)` con rx=100, ry=200 en magenta. +1. Crear un dumb buffer de 800x600 a 32bpp y mapearlo con `mmap()`. +2. Dibujar una línea de Bresenham de `(0, 0)` a `(799, 599)` en blanco. +3. Dibujar otra línea de `(799, 0)` a `(0, 599)` en blanco (cruz). +4. Dibujar un punto rojo en el centro `(400, 300)`. +5. Crear framebuffer con `drmModeAddFB`, activarlo con `drmModeSetCrtc` y mostrar. +6. Esperar 5 segundos para ver el resultado. +7. Limpiar: RmFB -> munmap -> destroy dumb buffer. + +**Entrada** · Ninguna (todo automático). + +**Salida** · Pantalla negra con una cruz blanca y un punto rojo en el centro durante 5 segundos. + +**Identificadores sugeridos** `resources`, `dbuf`, `mode`, `fbId`, `crtcId`, `connId` **Criterios de aceptación** -- [ ] Crea dumb buffer de 800×600 a 32bpp correctamente. -- [ ] Fondo degradado horizontal: 5 colores equidistantes usando `lerp`. -- [ ] Línea diagonal dibujada con Bresenham (sin huecos). -- [ ] Círculo centrado con radio 150 usando midpoint. -- [ ] Dos elipses superpuestas (una más ancha, otra más alta) con midpoint. -- [ ] Limpia: munmap → destroy en orden correcto. +- [ ] Crea dumb buffer de 800x600 a 32bpp correctamente. +- [ ] Dos líneas diagonales se cruzan en el centro sin huecos (Bresenham). +- [ ] Punto rojo visible exactamente en el centro del canvas. +- [ ] Framebuffer creado y activado (la pantalla muestra la cruz). +- [ ] Limpia correctamente: RmFB -> munmap -> destroy. **Restricciones / pistas** @@ -1070,7 +980,32 @@ primitivas geométricas en él. El resultado debe verse como una escena compuest --- -# PARTE 8 — Framebuffers +# PARTE 7.5 — ¿Por qué punteros crudos si la GPU puede hacerlo? + +Dibujaste un punto y una línea. Es impresionante — pero también limitado. Con Bresenham podés hacer +líneas, rectángulos y cualquier forma que construyas píxel a píxel. Pero hay problemas: + +- **No tenés curvas suaves**: dibujar un círculo con Bresenham ya es más complejo, y una curva + Bézier sería una pesadilla de cuentas enteras. +- **No tenés gradientes**: cada píxel lleva un color fijo. Un degradado radial requiere calcular + distancia para cada píxel del canvas — lento desde la CPU. +- **No tenés texto**: dibujar letras con punteros crudos significa cargar los bits de cada glifo + y escribirlos pixel por pixel. Funciona, pero es tedioso. +- **La GPU está esperando**: dedicaste todas esas líneas a dibujar rectas mientras el shader unit + duerme en la GPU, listo para hacer todo eso en paralelo en nanosegundos. + +La solución es sencilla: usar OpenGL ES para delegar el dibujo a la GPU. Pero escribir los shaders +de rasterización desde cero para cada forma? No. Hay una biblioteca que lo hace por vos: +**nanoVG**. + +> **nanoVG** es una API 2D vectorial sobre OpenGL ES (y OpenGL). Te dá funciones como +> `nvgRect()`, `nvgCircle()`, `nvgStrokeColor()`, `nvgText()` — y se encarga de convertir +> cada llamada en triángulos que la GPU rasteriza con antialiasing, gradientes y transformaciones. + +En la Part 12 configuramos OpenGL ES sobre DRM/GBM. En la Part 13 vas a usar nanoVG +sobre ese mismo pipeline para dibujar shapes vectoriales, gradientes y texto TTF con muy poco código. + +--- Hasta ahora dibujaste píxeles en un dumb buffer... pero el CRTC no sabe que ese buffer existe. Necesitás crear un **framebuffer** asociado al handle del dumb buffer, para que el kernel sepa: @@ -1659,11 +1594,12 @@ detecte cambios de estado (conexión/desconexión de monitores, page flips). --- -# PARTE 12 — OpenGL ES + EGL +# PARTE 12 — OpenGL ES + EGL sobre DRM Llegamos al punto donde la GPU hace el trabajo pesado. Hasta ahora dibujaste píxeles desde la CPU -(matemática pura en C). Ahora vamos a usar **OpenGL ES** con **EGL** para renderizar directamente -en un buffer de DRM, sin windowing system. +(matemática pura en C). Ahora vamos a configurar **OpenGL ES** con **EGL** para renderizar directamente +en un buffer de DRM, sin windowing system. Esto es el cimiento sobre el que nanoVG va a construir +shapes vectoriales en la Part 13. ## 12.1 ¿Qué es EGL? @@ -1671,7 +1607,7 @@ EGL es la "ponte" entre OpenGL ES y el sistema de composición de display de tu X11, Wayland, Linux Framebuffer, o en nuestro caso... **DRM/KMS con GBM**. Sin windowing system, necesitás: -- **libgbm** para crear buffers queOpenGL ES pueda usar. +- **libgbm** para crear buffers que OpenGL ES pueda usar. - **EGL** para crear un contexto de OpenGL ES. - El driver Mesa (o similar) para hacer el bridge entre EGL y DRM. @@ -1727,7 +1663,7 @@ EGLContext egl_ctx = eglCreateContext(egl_dpy, egl_cfg, // Paso 6: Crear surface EGL desde GBM surface EGLSurface egl_surf = eglCreateWindowSurface(egl_dpy, egl_cfg, - (EGLNativeWindowType)gbm_surf, NULL); + (EGLNativeWindowType)gbm_surf, NULL); // Paso 7: Hacer el contexto current eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx); @@ -1736,134 +1672,7 @@ eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx); > **GBM_FORMAT_XRGB8888:** Es el formato de píxel estándar para OpenGL ES sobre DRM. Asegura que > los shaders reciban los colores en el orden correcto (no invertido como a veces pasa con X11). -## 12.3 Dibujar un triángulo con shaders - -OpenGL ES es **baseless**: necesitás al menos un vertex shader y un fragment shader: - -```c -// Vertex shader simple: pasa coordenadas directas a clip space -const char *vertex_shader = - "attribute vec4 pos;\n" - "void main() {\n" - " gl_Position = pos;\n" - "}\n"; - -// Fragment shader: color sólido (rojo) -const char *fragment_shader = - "precision mediump float;\n" - "void main() {\n" - " gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n" // Rojo puro - "}\n"; - -// Compilar shaders... -GLuint create_shader(GLenum type, const char *src) { - GLuint shader = glCreateShader(type); - glShaderSource(shader, 1, &src, NULL); - glCompileShader(shader); - - GLint ok; - glGetShaderiv(shader, GL_COMPILE_STATUS, &ok); - if (!ok) { - GLchar log[512]; - glGetShaderInfoLog(shader, 512, NULL, log); - fprintf(stderr, "Shader compile failed: %s\n", log); - } - return shader; -} - -// Crear programa -GLuint vs = create_shader(GL_VERTEX_SHADER, vertex_shader); -GLuint fs = create_shader(GL_FRAGMENT_SHADER, fragment_shader); - -GLuint program = glCreateProgram(); -glAttachShader(program, vs); -glAttachShader(program, fs); -glBindAttribLocation(program, 0, "pos"); // location 0 = "pos" attribute -glLinkProgram(program); - -GLint link_ok; - glGetProgramiv(program, GL_LINK_STATUS, &link_ok); -if (!link_ok) { - GLchar log[512]; - glGetProgramInfoLog(program, 512, NULL, log); - fprintf(stderr, "Program link failed: %s\n", log); -} - -glUseProgram(program); -``` - -## 12.4 Dibujar y presentar - -```c -// Limpiar pantalla con negro -glClearColor(0.0f, 0.0f, 0.0f, 1.0f); -glClear(GL_COLOR_BUFFER_BIT); - -// Dibujar triángulo: vertices en clip space [-1, +1] -GLfloat vertices[] = { - 0.0f, 0.5f, 0.0f, // cima - -0.5f, -0.5f, 0.0f, // izquierda abajo - 0.5f, -0.5f, 0.0f // derecha abajo -}; - -GLuint pos_loc = glGetAttribLocation(program, "pos"); -glEnableVertexAttribArray(pos_loc); -glVertexAttribPointer(pos_loc, 3, GL_FLOAT, GL_FALSE, - 3 * sizeof(float), vertices); - -glDrawArrays(GL_TRIANGLES, 0, 3); - -// Presentar al GBM buffer -eglSwapBuffers(egl_dpy, egl_surf); -``` - -> **`eglSwapBuffers`:** En EGL sobre DRM/GBM, este swap no hace lo que pensás. No cambia buffers -> visuales como en X11. Simplemente sincroniza el rendering de OpenGL con la superficie GBM. -> Para presentar al display, necesitás hacer un page flip manual con el buffer GBM actual. - -### Presentación real a DRM desde EGL - -```c -// Obtener el buffer GBM actual (el que OpenGL escribió) -struct gbm_bo *bo = gbm_surface_lock_front_buffer(gbm_surf); - -// Crear framebuffer a partir del BO -uint32_t width, height; -gbm_bo_get_width(bo, &width); -gbm_bo_get_height(bo, &height); - -uint32_t handles[4] = {0}; -uint32_t strides[4] = {0}; -uint32_t offsets[4] = {0}; - -// Map buffer para obtener handles de DRM -handles[0] = gbm_bo_handle_for_plane(bo, 0).u32; -strides[0] = gbm_bo_get_stride_for_plane(bo, 0); -offsets[0] = gbm_bo_get_offset(bo, 0); - -uint32_t fb_id; -drmModeAddFB2(fd, width, height, GBM_FORMAT_XRGB8888, - handles, strides, offsets, &fb_id, 0); - -// Page flip para mostrar -drmModePageFlip(fd, crtc_id, fb_id, DRM_MODE_PAGE_FLIP_EVENT, NULL); - -// Liberar el BO (pero NO el fb — page flip aún lo usa) -gbm_surface_release_buffer(gbm_surf, bo); - -// Cuando llegue el page_flip_handler: -void page_flip_handler(int fd, unsigned int frame, - unsigned int sec, unsigned int usec, void *data) { - // Acá sí podés borrar el fb que fue flippeado - drmModeRmFB(fd, *(uint32_t *)data); -} -``` - -> **Cuidado con la sincronización:** Entre `eglSwapBuffers` y el page flip, hay un race condition -> potencial. OpenGL puede estar aún escribiendo cuando el CRTC empieza a leer. Para una app de -> producción real, necesitás fences (GL fence sync) para garantizar que OpenGL terminó antes del flip. - -## 12.5 Limpieza +## 12.3 Limpieza del contexto EGL ```c eglMakeCurrent(egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); @@ -1879,30 +1688,28 @@ close(fd); ## Práctica de la Parte 12 -### Ejercicio 25.11 — Triángulo colorido con OpenGL ES + EGL +### Ejercicio 25.11 — OpenGL ES sobre DRM sin windowing system -**Conceptos** · EGL initialization, GBM surfaces, shaders GLSL, vertex attributes, eglSwapBuffers +**Conceptos** · EGL initialization, GBM surfaces, `eglMakeCurrent` -**Contexto** · Escribí un programa que cree una ventana sin windowing system: abre la GPU via DRM, -configura EGL, compila un par de shaders GLSL para dibujar un triángulo de color verde sobre -fondo negro. +**Contexto** · Escribí un programa que configure OpenGL ES sobre DRM/GBM y presente un frame +sólido (color rojo) usando page flip manual. No necesitás shaders — simplemente demostrá que el +pipeline GLES → GBM → DRM está funcionando. **Consigna** · El programa debe: 1. Abrir `/dev/dri/card0` y crear un dispositivo GBM. -2. Configurar EGL con el fd del DRM (eglGetDisplay + eglInitialize). -3. Crear una surface GBM de 800×600 a formato XRGB8888. +2. Configurar EGL con el fd del DRM (`eglGetDisplay` + `eglInitialize`). +3. Crear una surface GBM de 800x600 a formato XRGB8888. 4. Crear contexto OpenGL ES 2.x y hacer current. -5. Compilar vertex shader + fragment shader que dibujen un triángulo verde. -6. Dibujar el triángulo con `glDrawArrays(GL_TRIANGLES, ...)`. -7. Presentar con `eglSwapBuffers` + page flip DRM manual. +5. Dibujar un frame sólido rojo con `glClearColor(1,0,0,1)` + `glClear(GL_COLOR_BUFFER_BIT)`. +6. Presentar el buffer al display con `eglSwapBuffers` + page flip DRM manual (lock front BO -> AddFB2 -> PageFlip). **Criterios de aceptación** - [ ] EGL initialized correctamente desde fd DRM. - [ ] GBM surface creada y vinculada a EGL. -- [ ] Shaders GLSL compilados y enlazados sin errores. -- [ ] Triángulo verde visible (fondo negro, triángulo verde). +- [ ] Frame sólido rojo visible en pantalla (sin shaders). - [ ] Page flip manual presentado el buffer al display. **Restricciones / pistas** @@ -1911,15 +1718,458 @@ fondo negro. - Si falla eglGetDisplay, intentá con `eglGetDisplay(EGL_DEFAULT_DISPLAY)`. - Verificá que Mesa está instalada (`mesa-utils`, `libgl1-mesa-dri`). +--- +# PARTE 13 — NanoVG: shapes, gradientes y texto + +Llegó el momento de lo bueno. Con el pipeline EGL/GBM configurado (Part 12), ahora podés usar +**nanoVG** para dibujar shapes vectoriales, gradientes suaves y texto TTF sin escribir un solo +shader. NanoVG se encarga de toda la rasterización por vos. + +## 13.1 ¿Qué es nanoVG? + +nanoVG es una biblioteca 2D vectorial escrita en C, creada por Mikko Mononen. Su objetivo es simple: +darle a los desarrolladores una API tipo Canvas de HTML5 pero para OpenGL ES y OpenGL. + +> `nvgRect(0, 0, 100, 50)` dibuja un rectángulo relleno con el color de fill actual. +> `nvgCircle(50, 50, 30)` dibuja un círculo. +> `nvgLinearGradient(...)` crea un degradado lineal que podés usar como fill o stroke. +> `nvgText(ctx, x, y, "Hola mundo", NULL)` renderiza texto con una fuente TTF cargada. + +Por debajo, nanoVG convierte cada llamada en **triángulos** que la GPU rasteriza con antialiasing, +gradientes interpolados y transformaciones de coordenadas. Vos solo llamás a la API y nanoVG hace +todo el trabajo pesado. + +### Estructura de archivos + +Para usar nanoVG necesitás estos archivos del repositorio oficial (https://github.com/memononen/nanovg): + +``` +nanovg.h ← interfaz principal (incluir) +src/nanovg.c ← implementación central (compilar) +src/nanovg_gl.h ← backend OpenGL/ES (incluir + compilar con flag) +src/nanovg_gl.c ← implementación del backend GL (compilar) +``` + +La compilación depende de qué versión de OpenGL querés usar. Para GLES2 sobre DRM: + +```c +// nanovg_gl.c necesita esta definición ANTES de incluir nanovg_gl.h +#define NANOVG_GLES2_IMPLEMENTATION +#include "src/nanovg_gl.h" +``` + +### Flags de compilación + +```bash +# nanoVG + OpenGL ES 2 sobre DRM/GBM +gcc main.c nanovg.c src/nanovg_gl.c \ + -lGLESv2 -lEGL -ldrm -lgbm -lm \ + -o nvg_demo +``` + +## 13.2 Crear un contexto nanoVG + +El primer paso es crear un contexto GL y luego uno nanoVG: + +```c +#include +#define NANOVG_GLES2_IMPLEMENTATION +#include + +// ... después de configurar EGL + GLES (Parte 12) ... + +// Crear contexto nanoVG con antialiasing habilitado +NVGcontext *nvg = nvgCreateGLES2(NVG_ANTIALIAS | NVG_STENCIL_STROKES); +if (!nvg) { + fprintf(stderr, "No se pudo crear contexto nanoVG\n"); +} + +// ¡Listo! Ahora podés dibujar. +``` + +> **`NVG_STENCIL_STROKES`:** Esta flag hace que los contornos se dibujen usando el buffer de stencil, +> lo que evita artefactos cuando las líneas se superponen o hacen giros muy pronunciados. Vale la pena +> activarlo si vas a dibujar muchas formas con stroke. + +## 13.3 Dibujar shapes básicos + +Cada frame, nanoVG sigue este patrón: `nvgBeginFrame` -> dibujá cosas -> `nvgEndFrame`: + +```c +// Configurar tamaño de viewport (debe coincidir con el GBM surface) +float w = 800.0f; +float h = 600.0f; +nvgBeginFrame(nvg, w, h, 1.0f); // devicePixelRatio = 1 para pantallas no-retina + +// Fondo negro +nvgFillColor(nvg, nvgRGB(20, 20, 30)); +nvgRect(nvg, 0, 0, w, h); +nvgFill(nvg); + +// Rectángulo redondeado blanco con stroke azul +nvgStrokeColor(nvg, nvgRGB(50, 120, 255)); +nvgStrokeWidth(nvg, 2.0f); +nvgFillColor(nvg, nvgRGB(240, 240, 245)); +nvgRoundedRect(nvg, 50, 50, 300, 200, 10); +nvgFill(nvg); +nvgStroke(nvg); + +// Círculo rojo centrado en (500, 300), radio 80 +nvgFillColor(nvg, nvgRGBA(255, 60, 60, 200)); +nvgCircle(nvg, 500, 300, 80); +nvgFill(nvg); + +// Arco (sector circular) — desde PI/4 hasta 3*PI/4, radio 100 +nvgFillColor(nvg, nvgRGB(255, 200, 0)); +nvgBeginPath(nvg); +nvgMoveTo(nvg, 200, 200); +nvgArc(nvg, 200, 200, 100, NVG_PI * 0.25f, NVG_PI * 0.75f, NVG_CCW); +nvgFill(nvg); + +// Elipse centrada en (600, 400), rx=80, ry=50 +nvgFillColor(nvg, nvgRGB(100, 255, 100)); +nvgEllipse(nvg, 600, 400, 80, 50); +nvgFill(nvg); + +// Terminar el frame — envía todo a la GPU +nvgEndFrame(nvg); +``` + +> **`nvgBeginPath`, `nvgMoveTo`, `nvgArc`:** Para formas complejas, empezás con `nvgBeginPath()`, +> después dibujás segmentos con `nvgMoveTo`, `nvgLineTo`, `nvgBezierTo`, `nvgQuadTo`, `nvgArc`. +> Finalmente llamás a `nvgFill()` o `nvgStroke()`. Esto equivale al `` de SVG. + +## 13.4 Gradientes con nanoVG + +NanoVG soporta tres tipos de gradientes: lineales, radiales y box (rectángulo difuminado): + +```c +// Gradiente lineal: de (10,10) a (200,100), rojo -> azul +NVGpaint grad = nvgLinearGradient(nvg, 10, 10, 200, 100, + nvgRGB(255, 0, 0), + nvgRGB(0, 0, 255)); +nvgFillPaint(nvg, grad); +nvgRect(nvg, 10, 10, 200, 100); +nvgFill(nvg); + +// Gradiente radial: centro (400,300), radio interno 20, externo 80, blanco -> transparente +NVGpaint rad = nvgRadialGradient(nvg, 400, 300, 20, 80, + nvgRGBA(255, 255, 255, 255), + nvgRGBA(255, 255, 255, 0)); +nvgFillPaint(nvg, rad); +nvgRect(nvg, 300, 200, 200, 200); +nvgFill(nvg); + +// Box gradient (drop shadow / highlight): rectángulo difuminado de 100x60 con radio de esquina 8 +NVGpaint box = nvgBoxGradient(nvg, 350, 150, 100, 60, 8, 15, + nvgRGBA(0, 0, 0, 80), + nvgRGBA(0, 0, 0, 0)); +nvgFillPaint(nvg, box); +nvgRect(nvg, 350, 150, 100, 60); +nvgFill(nvg); +``` + +> **Box gradient:** Es un rectángulo con relleno del color interior que se desvanece suavemente hacia +> el color exterior. Ideal para sombras de UI (drop shadow), bordes luminosos y efectos de elevación. +> `(x,y)` es la esquina superior-left, `w,h` las dimensiones, `r` el radio de esquina y `f` la +> distancia del difuminado. + +## 13.5 Texto TTF con nanoVG + +La magia de nanoVG: podés cargar fuentes TrueType y renderizar texto con una llamada: + +```c +// Cargar fuente desde un archivo .ttf (una sola vez, al inicio) +int fontRegular = nvgCreateFont(nvg, "roboto", "/path/to/Roboto-Regular.ttf"); +if (fontRegular == -1) { + fprintf(stderr, "No se pudo cargar la fuente\n"); +} + +// ... dentro del loop de dibujo: + +// Configurar estilo de texto y dibujar +nvgFontSize(nvg, 28.0f); +nvgFontFace(nvg, "roboto"); +nvgFillColor(nvg, nvgRGBA(255, 255, 255, 255)); +nvgText(nvg, 60, 100, "Hola Mundo", NULL); + +// Texto multilínea con word-wrap (rompe líneas a los 300px de ancho) +nvgFontSize(nvg, 16.0f); +nvgFillColor(nvg, nvgRGB(200, 200, 200)); +nvgTextBox(nvg, 60, 140, 300, "Este es un párrafo de texto que se ajusta automáticamente a lo ancho del contenedor. nanoVG hace word-wrap en los espacios.", NULL); + +// Medir texto antes de dibujar (útil para centrado) +float bounds[4]; // [xmin, ymin, xmax, ymax] +nvgTextBounds(nvg, 0, 0, "Medida del texto", NULL, bounds); +float textW = bounds[2] - bounds[0]; + +// Centrar horizontalmente en el canvas (800px ancho) +float cx = (800.0f - textW) / 2.0f; +nvgText(nvg, cx, 300, "Centrado", NULL); +``` + +> **`nvgCreateFont` carga el TTF en GPU:** La fuente se compila internamente en atlas de texturas +> al llamarse `nvgBeginFrame`. Por eso necesitás tener acceso al archivo .ttf mientras nanoVG está +> activo. Para evitar dependencias de ruta, copiá el TTF junto al ejecutable o usá +> `nvgCreateFontMem` para cargar desde un blob en memoria. + +### Cargar fuente desde memoria (sin archivo) + +Si embebés la fuente en el binario (útil para distribuir sin dependencias externas): + +```c +// font_data[] y font_size son un array de bytes del .ttf compilado en el binary +int fontMem = nvgCreateFontMem(nvg, "memfont", font_data, font_size, 1); +if (fontMem != -1) { + printf("Fuente cargada desde memoria: %d\n", fontMem); +} +``` + +## 13.6 Transformaciones y clipping + +nanoVG soporta transformaciones de coordenadas y scissoring para recortar regiones: + +```c +// Guardar estado actual +nvgSave(nvg); + +// Rotar 45 grados alrededor del centro (200, 200) +nvgTranslate(nvg, 200, 200); +nvgRotate(nvg, NVG_PI / 4.0f); +nvgScale(nvg, 1.5f, 1.0f); + +// Dibujar rect transformada +nvgFillColor(nvg, nvgRGB(255, 150, 50)); +nvgRect(nvg, -40, -30, 80, 60); +nvgFill(nvg); + +// Restaurar estado original (deshace translate+rotate+scale) +nvgRestore(nvg); + +// Scissoring: recortar dibujado a una región rectangular +nvgScissor(nvg, 100, 100, 200, 150); +nvgFillColor(nvg, nvgRGB(0, 200, 100)); +nvgRect(nvg, 0, 0, 800, 600); +nvgFill(nvg); + +// Desactivar scissoring +nvgResetScissor(nvg); +``` + +> **`nvgSave()` / `nvgRestore()`:** Guardan y restauran el estado completo (transformaciones, colores, +> fuentes, scissor). Es como una pila de snapshots. Útil para dibujar widgets que necesitan su propio +> sistema de coordenadas sin afectar al resto del canvas. + +## 13.7 Integración completa: pipeline DRM + EGL + nanoVG + +Este es el ciclo completo de un frame con nanoVG sobre DRM/GBM/EGL: + +```c +// --- Setup (una sola vez, antes del loop) --- +int fd = open("/dev/dri/card0", O_RDWR | O_CLOEXEC); +struct gbm_device *gbm = gbm_create_device(fd); +// ... crear GBM surface, EGL display/context/surface, hacer eglMakeCurrent ... + +NVGcontext *nvg = nvgCreateGLES2(NVG_ANTIALIAS | NVG_STENCIL_STROKES); +int fontId = nvgCreateFont(nvg, "roboto", "Roboto-Regular.ttf"); +eglSwapInterval(egl_dpy, 1); // vsync + +// --- Loop principal --- +while (running) { + // 1. Dibujar frame con nanoVG + float w = 800.0f, h = 600.0f; + nvgBeginFrame(nvg, w, h, 1.0f); + + // Fondo + nvgFillColor(nvg, nvgRGB(25, 25, 35)); + nvgRect(nvg, 0, 0, w, h); + nvgFill(nvg); + + // Shape decorativo con gradiente + NVGpaint bg = nvgLinearGradient(nvg, 50, 50, 750, 200, + nvgRGB(60, 120, 255), + nvgRGB(180, 40, 200)); + nvgFillPaint(nvg, bg); + nvgRoundedRect(nvg, 50, 50, 700, 160, 16); + nvgFill(nvg); + + // Texto sobre el gradiente + nvgFontSize(nvg, 32.0f); + nvgFontFace(nvg, "roboto"); + nvgFillColor(nvg, nvgRGBA(255, 255, 255, 255)); + nvgText(nvg, 80, 140, "nanoVG on DRM/KMS", NULL); + + // Circulo con drop shadow + nvgFontSize(nvg, 18.0f); + nvgFillColor(nvg, nvgRGB(180, 180, 200)); + nvgTextBox(nvg, 80, 230, 640, "OpenGL ES 2.0 + GBM surfaceless", NULL); + + nvgEndFrame(nvg); + + // 2. Presentar al display (page flip manual desde GBM) + struct gbm_bo *bo = gbm_surface_lock_front_buffer(gbm_surf); + + uint32_t bo_width, bo_height; + gbm_bo_get_width(bo, &bo_width); + gbm_bo_get_height(bo, &bo_height); + + uint32_t handles[4] = {0}; + uint32_t strides[4] = {0}; + uint32_t offsets[4] = {0}; + handles[0] = gbm_bo_handle_for_plane(bo, 0).u32; + strides[0] = gbm_bo_get_stride_for_plane(bo, 0); + + uint32_t fb_id; + drmModeAddFB2(fd, bo_width, bo_height, GBM_FORMAT_XRGB8888, + handles, strides, offsets, &fb_id, 0); + + drmModePageFlip(fd, crtc_id, fb_id, DRM_MODE_PAGE_FLIP_EVENT, NULL); + gbm_surface_release_buffer(gbm_surf, bo); + + // 3. Esperar evento (page flip completion) + struct pollfd pfd = {.fd = fd, .events = POLLIN}; + poll(&pfd, 1, 16); // ~60fps max + if (pfd.revents & POLLIN) { + drmHandleEvent(evctx); // page_flip_handler limpia el fb_id flippeado + } + + // Cleanup del fb anterior en el handler: + // void page_flip_handler(int fd, unsigned int frame, ...) { + // drmModeRmFB(fd, *fb_id_ptr); + // } +} + +// --- Cleanup (al salir) --- +nvgDeleteGLES2(nvg); +eglTerminate(egl_dpy); +gbm_surface_destroy(gbm_surf); +gbm_device_destroy(gbm); +close(fd); +``` + +> **Sincronización con fences:** Entre `nvgEndFrame()` y el page flip, OpenGL puede estar aún +> renderizando. Para una app de producción real, necesitás GL fence sync para garantizar que la +> GPU terminó antes del flip. En este ejemplo simplificado confiamos en `eglSwapBuffers` + +> `gbm_surface_lock_front_buffer` para hacer la sincronización implícita. + +## 13.8 Transformaciones: matrices y puntos + +nanoVG usa una matriz de transformación 2x3 que podés manipular directamente. Las funciones +como `nvgTranslate`, `nvgRotate`, `nvgScale` pre-multiplícan la matriz actual: + +```c +// Obtener la matriz actual (6 floats: a, b, c, d, e, f) +float tx[6]; +nvgCurrentTransform(nvg, tx); + +// Calcular transform inversa (util para hit-testing: screen -> local coords) +float inv[6]; +nvgTransformInverse(inv, tx); + +// Transformar un punto de espacio local a espacio de pantalla +float sx, sy; +nvgTransformPoint(&sx, &sy, tx, 100.0f, 50.0f); + +// Matrices pre-armadas (llenan dst directamente) +float identity[6]; +nvgTransformIdentity(identity); + +float translated[6]; +nvgTransformTranslate(translated, 100.0f, 200.0f); + +float scaled[6]; +nvgTransformScale(scaled, 2.0f, 2.0f); + +// Multiplicar dos matrices: dst = dst * src +float combined[6]; +nvgTransformMultiply(combined, translated); // starts as translate +nvgTransformMultiply(combined, scaled); // becomes translate * scale +``` + +> **Pre-multiplicación:** Cada transformación se multiplica a la izquierda de la matriz actual. +> Esto significa que `translate(100,0); rotate(90)` no es lo mismo que `rotate(90); translate(100,0)`. +> El orden importa — pensá en la secuencia inversa: el punto se rota primero y luego se traslada. + +## 13.9 Combinación por composición (blend modes) + +nanoVG soporta los mismos blend modes que HTML Canvas: + +```c +// Superposición normal (default): SOURCE OVER +nvgGlobalCompositeOperation(nvg, NVG_SOURCE_OVER); + +// Solo dibujar donde ya hay algo del canvas (SOURCE IN) +nvgGlobalCompositeOperation(nvg, NVG_SOURCE_IN); + +// Solo la parte que NO se superpone (SOURCE OUT) +nvgGlobalCompositeOperation(nvg, NVG_SOURCE_OUT); + +// Lo que se solapa (ATOP) — útil para recortes con forma +nvgGlobalCompositeOperation(nvg, NVG_ATOP); + +// Lo que hay después de dibujar (DESTINATION_OVER) — coloca el nuevo shape DETRAS +nvgGlobalCompositeOperation(nvg, NVG_DESTINATION_OVER); + +// Suma de colores (LIGHTER) — para efectos de brillo y glow +nvgGlobalCompositeOperation(nvg, NVG_LIGHTER); + +// Combinación personalizada por canal RGB y alpha separados +nvgGlobalCompositeBlendFunc(nvg, NVG_SRC_ALPHA, NVG_ONE_MINUS_SRC_ALPHA, + NVG_ONE, NVG_ONE_MINUS_SRC_ALPHA); +``` + +> **`NVG_LIGHTER`:** Es el blend mode más útil para efectos de partículas, brillos y glow. Cuando dos +> formas se superponen con `LIGHTER`, sus valores de canal se suman. Si ambos son rojos puros (255+255), +> el resultado es un rojo brillante que "satura" en 255 — perfecto para fuego, neón y destellos. + +## Práctica de la Parte 13 + +### Ejercicio 25.12 — Dashboard UI con nanoVG + +**Conceptos** · `nvgBeginFrame`, `nvgRect`, `nvgRoundedRect`, `nvgCircle`, `nvgArc`, +`nvgLinearGradient`, `nvgRadialGradient`, `nvgTextBox`, `nvgText`, `nvgCreateFont`, +`nvgSave`/`nvgRestore`, scissor + +**Contexto** · Escribí un programa que muestre un mini dashboard en pantalla usando nanoVG sobre +DRM/GBM/EGL. El dashboard debe contener: +- Un header con degradado horizontal (azul → morado) y texto de título centrado. +- Dos tarjetas con fondo blanco redondeado y texto descriptivo. +- Un gráfico circular tipo "donut" hecho con arc + composite operation. +- Un footer con información de sistema en texto pequeño. + +**Consigna** · El programa debe: + +1. Configurar el pipeline DRM → GBM surface → EGL → `nvgCreateGLES2` (como ejercicio 25.9). +2. Cargar una fuente TTF y configurar estilos. +3. Dibujar un header con gradiente lineal (800x60 px) y texto "System Monitor". +4. Dibujar dos tarjetas redondeadas (16px radius) debajo del header. +5. Dibujar un donut chart (anillo) en el costado derecho: fondo gris + sector coloreado con arc. +6. Escribir texto de métricas ("CPU: 42%", "RAM: 1.8G / 4.0G") dentro de las tarjetas. +7. Dibujar un footer con información y fecha en la parte inferior. +8. Presentar el frame con page flip DRM manual. + +**Criterios de aceptación** + +- [ ] Pipeline EGL/GBM configurado correctamente. +- [ ] Header con `nvgLinearGradient` visible (azul → morado). +- [ ] Dos tarjetas con `nvgRoundedRect`, stroke y fill diferenciados. +- [ ] Donut chart usando `nvgArc` + al menos dos colores diferentes. +- [ ] Texto legible con `nvgText` / `nvgTextBox`. +- [ ] Frame presentado exitosamente al display. + +**Restricciones / pistas** + +- Compilá con: `gcc prog.c nanovg.c src/nanovg_gl.c -lGLESv2 -lEGL -ldrm -lgbm -lm`. +- Usá una fuente libre como Roboto (https://fonts.google.com/specimen/Roboto). +- Si no tenés monitor conectado, podés probar con `GBM_BO_USE_RENDERING` sin scanout. --- - -# PARTE 13 — Vulkan surfaceless +# PARTE 14 — Vulkan surfaceless Vulkan es la sucesora moderna de OpenGL ES: más explícita, más controlada, pero también más verbosa. Con **surfaceless** (sin surface de windowing system), renderizás directamente a buffers GBM. -## 13.1 ¿Qué es "surfaceless" en Vulkan? +## 14.1 ¿Qué es "surfaceless" en Vulkan? Normalmente Vulkan necesita un **swapchain** vinculado a una ventana (X11, Wayland, Win32). En modo surfaceless, el swapchain se crea sobre GBM buffers — no hay ventanas involucradas. @@ -1936,7 +2186,7 @@ VkSurfaceKHR surface; // "surfaceless" = sin windowing system VkSwapchainKHR swapchain; ``` -## 13.2 Crear la Vulkan Instance +## 14.2 Crear la Vulkan Instance ```c // Habilitar extensiones necesarias para DRM/GBM @@ -1963,7 +2213,7 @@ vkCreateInstance(&create_info, NULL, &instance); > específico como `libvulkan-wayland` o `libvulkan-radeon`. La forma más universal es usar el > **Vulkan Display Protocol** (`VK_DISPLAY_POWER_STATE`). -## 13.3 Crear un swapchain surfaceless (GBM-backed) +## 14.3 Crear un swapchain surfaceless (GBM-backed) Este es el paso más complejo. Necesitás crear un swapchain cuyos buffers vengan de GBM: @@ -2011,7 +2261,7 @@ VkResult ret = vkCreateSwapchainKHR(device, &sc_create, NULL, &swapchain); > **Present mode:** `VK_PRESENT_MODE_IMMEDIATE_KHR` es "tear-through" (sin vblank). Si querés > sincronizar con vblank, necesitás `VK_PRESENT_MODE_FIFO_KHR` (el modo seguro con page flip). -## 13.4 Dibujar un frame en Vulkan +## 14.4 Dibujar un frame en Vulkan Vulkan es muy explícito: necesitás crear una **command buffer**, registrar comandos de draw, y enviarla a la queue gráfica: @@ -2086,7 +2336,7 @@ vkQueuePresentKHR(graphics_queue, &present); > específicos, semáforos, fences, pipelines... Es el precio del rendimiento: control total sobre > la GPU, pero boilerplate masivo. OpenGL ES te daba 10 líneas para lo mismo. -## 13.5 Limpieza +## 14.5 Limpieza ```c vkDeviceWaitIdle(device); @@ -2099,9 +2349,9 @@ vkDestroyInstance(instance, NULL); close(fd); ``` -## Práctica de la Parte 13 +## Práctica de la Parte 14 -### Ejercicio 25.12 — Cuadrado rojo con Vulkan surfaceless +### Ejercicio 25.13 — Cuadrado rojo con Vulkan surfaceless **Conceptos** · Vulkan instance, physical device, swapchain GBM-backed, render pass, command buffers @@ -2132,7 +2382,7 @@ Vulkan en modo surfaceless. Sin shaders personalizados — usá el pipeline por --- -# PARTE 14 — Ejercicio jefe: Pelota rebotando en N monitores +# PARTE 15 — Ejercicio jefe: Dashboard UI animado con nanoVG Llegamos al final del capítulo. Este ejercicio combina **todo** lo que aprendiste: - DRM/KMS básico (Parte 2–5): abrir GPU, enumerar recursos, configurar modos. @@ -2142,40 +2392,39 @@ Llegamos al final del capítulo. Este ejercicio combina **todo** lo que aprendis - Hotplug events (Parte 11): detectar cambios de monitores conectados. - OpenGL ES/EGL o Vulkan: renderizar primitivas sobre los buffers DRM. -## 14.1 El desafío completo +## 15.1 El desafío completo -> **Escribí un programa que muestre una pelota blanca rebotando simultáneamente en TODOS los -> monitores conectados a tu GPU**, usando DRM/KMS directo sin windowing system. +> **Escribí un programa que muestre un dashboard UI animado en TODOS los monitores conectados** a tu GPU, +> usando nanoVG sobre DRM/KMS directo sin windowing system. **Requisitos obligatorios:** 1. **Multi-monitor automático:** Detectá todos los conectores `DRM_MODE_CONNECTED` y configurá cada uno con su modo preferido. Usá KMS atómico para activarlos simultáneamente. -2. **Animación en tiempo real:** La pelota debe moverse diagonalmente rebotando en los bordes - de CADA monitor (no solo el principal). Si tenés dos monitores lado a lado, la pelota - debe atravesar de uno a otro sin detenerse. +2. **Dashboard por monitor:** Cada monitor debe mostrar un mini dashboard con: + - Header con degradado (usando `nvgLinearGradient`) y título centrado. + - Tarjetas redondeadas (`nvgRoundedRect`) con métricas simuladas ("CPU: 42%", etc.). + - Gráfico circular tipo "donut" o "barras" usando shapes de nanoVG. + - Footer con información del sistema en texto pequeño. -3. **Doble buffering por CRTC:** Cada monitor tiene su propio par front/back buffer. Usá page flip +3. **Animación en tiempo real:** Los valores de las métricas deben cambiar cada frame (simulación). + Usá `nvgText` para actualizar los textos y `nvgRect`/`nvgCircle` para gráficos animados. + +4. **Doble buffering por CRTC:** Cada monitor tiene su propio par front/back buffer. Usá page flip con `DRM_MODE_PAGE_FLIP_EVENT` para sincronizar con vblank. -4. **Gradiente arco-by-arco:** La pelota NO es blanca — está coloreada con un gradiente que varía - según el arco de rebote. Cada vez que la pelota toca un borde, cambia de color siguiendo - el espectro RGB: rojo → naranja → amarillo → verde → cian → azul → violeta → rojo... - -5. **Física de rebote:** La pelota tiene velocidad `(vx, vy)` en píxeles/frame. Rebotá invertiendo - la componente correspondiente cuando choque con un borde del monitor actual. Usá `lerp` para - suavizar la transición de color entre arcos. +5. **Hotplug handling:** Si un nuevo monitor se conecta o desconecta durante la ejecución, + reconfigurá el layout del dashboard automáticamente (sin crash). 6. **Manejo de hotplug:** Si un nuevo monitor se conecta o desconecta durante la ejecución: - Reconectar → configurar automáticamente con su modo preferido. - Desconectar → quitar de la configuración (sin crash). 7. **Sin bibliotecas de windowing:** NADA de X11, Wayland, SDL, GLFW, Raylib... Solo libdrm, - libgbm, y matemática en C puro. OpenGL ES / Vulkan son opcionales (podés dibujar las pelotas - usando Bresenham/midpoint sobre dumb buffers como hiciste en la Parte 7). + libgbm, EGL, y nanoVG sobre OpenGL ES. -## 14.2 Estructura de datos sugerida +## 15.2 Estructura de datos sugerida ```c #define MAX_MONITORS 8 @@ -2207,7 +2456,7 @@ typedef struct { } AppContext; ``` -## 14.3 Conversión de hue a RGB (para el gradiente arco-by-arco) +## 15.3 Conversión de hue a RGB (para el gradiente arco-by-arco) Necesitás convertir un valor de "tonalidad" (`hue`, 0–1) a color RGB usando `lerp`: @@ -2252,7 +2501,7 @@ uint32_t get_ball_color(float hue) { > `ball.color_hue = fmodf(ball.bounce_count / 7.0f, 1.0f)`. Así el color completa un ciclo > después de 7 rebotes (un arco completo del espectro). -## 14.4 Lógica de movimiento y colisión +## 15.4 Lógica de movimiento y colisión ```c void update_ball(AppContext *app, Ball *ball, uint64_t dt_ms) { @@ -2313,7 +2562,7 @@ void on_bounce(AppContext *app, Ball *ball) { > La pelota se mueve en este espacio global. Cada frame, la renderizás separadamente en cada > monitor según su offset local. -## 14.5 Renderizado por monitor +## 15.5 Renderizado por monitor ```c void render_frame(AppContext *app) { @@ -2346,7 +2595,7 @@ void render_frame(AppContext *app) { } ``` -## 14.6 Criterios de aceptación finales +## 15.6 Criterios de aceptación finales El programa debe cumplir TODOS estos criterios para considerarse completo: @@ -2384,7 +2633,7 @@ El programa debe cumplir TODOS estos criterios para considerarse completo: - [ ] Manejo correcto de errores (no crash si un ioctl falla). - [ ] Código organizado en funciones pequeñas y reutilizables. -## 14.7 Compilación del ejercicio jefe +## 15.7 Compilación del ejercicio jefe ```bash # Con dumb buffers + Bresenham/midpoint (solo C puro + libdrm) @@ -2407,7 +2656,7 @@ gcc exercise_25_jefe.c -lvulkan -ldrm -lgbm -lm -o exercise_25_vulkan > sudo ./exercise_25_jefe > ``` -## 14.8 Lo que te llevás de este capítulo +## 15.8 Lo que te llevás de este capítulo Resumen rápido de lo que aprendiste (y las herramientas que ahora tenés): @@ -2417,8 +2666,8 @@ Resumen rápido de lo que aprendiste (y las herramientas que ahora tenés): - **El flujo mínimo es siempre el mismo:** abrir fd → enumerar recursos → configurar CRTC + connector → crear dumb buffer + framebuffer → dibujar → page flip. Todo lo demás es variación de esto. -- **Bresenham y midpoint son las bases de la gráficos por computadora.** Sin GPU, sin OpenGL, sin - bibliotecas. Solo sumas, restas y decision tree — eso es una línea en pantalla. +- **Un punto y una línea son todo lo que necesitás empezar.** Bresenham para rectas, protección de + boundaries para no escribir fuera del buffer — eso es el 80% del dibujo por software. - **Page flip + vblank = cero tearing.** Cambiás el buffer visible solo cuando el CRTC terminó de escanear la frame anterior. Es la base de toda animación fluida en Linux. @@ -2426,14 +2675,19 @@ Resumen rápido de lo que aprendiste (y las herramientas que ahora tenés): - **KMS atómico es el futuro.** Legacy funciona para un monitor, pero multi-monitor real requiere blobs + properties + commit atómico. -- **OpenGL ES y Vulkan pueden correr sobre DRM sin windowing system.** EGL puentea entre GLES y GBM; - Vulkan surfaceless crea un swapchain sobre buffers GBM. Sin X11, sin Wayland — solo tu GPU. +- **nanoVG te salva de dibujar píxeles a mano.** Con `nvgRect()`, `nvgCircle()`, `nvgText()` y + gradientes, la GPU rasteriza todo con antialiasing. Vos llamás a la API y nanoVG hace los + triángulos por vos. + +- **OpenGL ES sobre DRM sin windowing system** es el puente entre tus shapes vectoriales y la pantalla. + EGL + GBM = gráficos nativos en Linux. En el siguiente capítulo, veremos... bueno, depende de qué quieras aprender después. Pero por ahora: > **Felicidades.** Acabás de escribir gráficos nativos en Linux sin ninguna biblioteca de -> windowing system. Eso significa que entendés más del hardware gráfico que el 99% de los -> desarrolladores de videojuegos y apps — porque la mayoría NI SIQUIERA SABE que DRM existe. +> windowing system — con nanoVG para shapes vectoriales, texto TTF y gradientes. Eso significa que +> entendés más del hardware gráfico que el 99% de los desarrolladores de videojuegos y apps — porque +> la mayoría NI SIQUIERA SABE que DRM existe. --- diff --git a/dist/25-drm-kms.pdf b/dist/25-drm-kms.pdf index 2d2baad2dd1908b1ff169e9ac2d5de1184b3cb93..e8c46232fb356904999a265d3015ca15721684d4 100644 GIT binary patch delta 1110407 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 z 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≈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

j+|P*+K5SRCazH$ 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 z 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