Cómo funciona el cambio de página de video

0

Estoy trabajando con el cambio de página y la representación en mosaico (todo basado en hardware) pero no puedo entender un aspecto de la técnica de cambio de página.

Cuando estás en el fotograma 1, estás representando bank1 y trabajando en bank2 por ejemplo. Luego comienzas a renderizar el fotograma 2 y cambias a render 2 el banco en el que estabas trabajando. Hasta allí, todo está bien, pero cuando empiece a trabajar en bank1 nuevamente, todos los cambios que haya hecho en bank2 no estarán en bank1.

¿Cómo funciona el cambio de página sin copiar el contenido de bank2 a bank1, ya que hacer una copia completa (como Double Buffering) es imposible solo en tiempo vsync para mi aplicación?

    
pregunta h0m3

1 respuesta

1

Ese tipo de problema es para qué sirve DMA.

Cuando termine de renderizar el búfer 1, espere hasta que comience a leerse en la salida de video, luego inicie una transferencia de copia DMA al búfer 2, puede comenzar a hacer sus modificaciones para el búfer dos siempre que permanezca detrás de la línea. El núcleo de DMA está copiando, luego espere la interrupción de VBI y haga lo mismo en sentido inverso. Las transferencias de memoria a memoria DMA son generalmente rápidas y no atan el procesador.

Dependiendo del hardware, la lectura del video ram mientras se muestra rara vez es un problema, se trata de escrituras que desea evitar (e incluso allí, simplemente puede intentar escribir detrás de la línea de salida del hardware de video).

Incluso puedes hacer efectos jugando con las direcciones DMA de lectura de video entre cada línea, la gameboy, por ejemplo, hizo esto con gran efecto.

    
respondido por el Dan Mills

Lea otras preguntas en las etiquetas