Does the problem really happen at random? Could it be related to the recently ack’d 48MB problem? Are you 100% sure it’s the vertex call and not the end call?
Anyway, I’d suggest to at least use arrays; if possible VBO’s.
(one thing I just remembered biting me once: If you’re on Win32, you’re not using two or more threads, where the render thread has different priority than the window (HWND) managing thread?)
Regarding he 48MB problem, I searched the board but couldn’t find it. Perhaps it wasn’t 48MB? As I remember it, it was a problem with some kind of buffers that created “hickups” and (IIRC) some nvidia guy acknowleged the problem and wrote it’d be fixed in the next version. If anyone remembers the thread, please pitch in.
muvee: The multithreading problem that bit me was that ATI’s user-mode driver part assumed the window managing thread was running at the same priority as the rendering thread, and in an attempt to reduce latency when waiting for the rendering to complete (as there is no hardware interrupt to signal this) they looped basically
while (card_not_finished_work) { Sleep(0); }
Well, as Sleep(0) only releases the time slice for threads of the same (or higher) priority, the rendering thread never got to write this memory while the main thread busy-waited like crazy, and it took (IIRC) around 2 seconds for this to sort out (whether it was due to thread priority inversions or something else I don’t know).