VESA 2.0/3.0

Manuel Dom?uez Alvera
24 de Febrero del 2004
Me gustaría saber como optimizar para conseguir el maximo nº de frames prosibles. Actualmente he usado un frame buffer en modo protegido para no tener que usar los BANK cada 64K.

MOV EDX,500

BUCLE:
ROL EAX,8
XOR EDI,EDI
MOV ECX,800*600
STOSD
DEC EDX
OR EDX,EDX
JNZ BUCLE

Esta es la rutina que tengo para probar a rellenar pantallas de diferentes colores el determinado nº de veces que ponga en EDX. Pero la velocidad no llega ni a los 20FPS, alguien me podria ayudar.

Posibles soluciones: Double Buffering, Overload, MMX, VESA/AF...
Pero no tengo información de como se hace eso.
Gracias

Mariano Cerdeiro
24 de Febrero del 2004
Buenas, tenes que usar rep stosd, sino escribir en otra parte de memoria y hacer el movimiento de memoria con rep movsd, igualmente el problema es justamente el refresco... Osea si vos con tu programa estas intentando escribir en la memoria de video cuando el monitor la usa, tu programa queda en esperando a que termine de leer el video, lo que tenes que hacer es usar dos buffers de video =) esta en la parte de int 10h servicios 4fxx pero no se en que parte. MMX podrias usar para copiar de a 64 bits pero como perdes la potencia del rep movsd o rep stosd, la verdad no se que es más rapido, para copiar memoria creo que lo mejor es rep movsd... OJO si son mas varios bytes, si es poco intel recomienda hacerlo como vos hiciste, pero es mas de un mega de memoria...

Si queres más velocidad lo que hay que hacer es aprender a usar la placa de video, osea hacer las cosas por hard, pero ni bien encuentre algo documentado de alguna placa de video me la compro y nos ponemos a full, ya que nunca vi nada de documentacion por ejemplo de como aplicar OPENGL en una placa cualquiera por HARD... =(

Saludos.
Mariano.-