BigEd recommends unidirectional streams. In this case, make video display write only. Indeed, a write only display also improves security.
BigDumbDinosaur recommends a qualified write strobe. In this case, make address and data latches level triggered when clock HIGH, R/W LOW and negative logic address strobe LOW.
In the other clock domain, video RAM may continuously alternate between read and write. Reads are sent to screen. Writes are from the level triggered latches. This arrangement continuously hammers RAM with needless writes. Regardless, the intention is to continuously write stable data where the maximum frequency of writes from processor to latch is less than half of the frequency of writes from latch to RAM. Consider it as a one word deep, clock domain crossing, FIFO which never empties.
Ah, you may say, cases exist where random data may be scribbled to random locations! Well, we have the luxury of operating any number of cycles behind the processor. Therefore, in the video clock domain, we may have a conveyer of two or more sets of edge triggered latch. If contents differ then direct writes to the last byte of the video buffer or otherwise modulate writes.
If it looks wrong then you are doing it correctly. plasmo, responding to jds, notes "
The complexity of WRITING to video memory will rapidly overwhelm the simple VGA displaying logic."