Handle Voodoo 3dfx card. [rsc] --rw-rw-r-- M 374841 glenda sys 3833 Nov 28 17:52 sys/src/9/pc/vga3dfx.c [rsc] --rw-rw-r-- M 374841 glenda sys 13797 Nov 28 17:52 sys/src/9/pc/screen.c /n/sourcesdump/2005/1128/plan9/sys/src/9/pc/screen.c:454,459 - /n/sourcesdump/2005/1129/plan9/sys/src/9/pc/screen.c:454,465 * Scan for largest memory region on card. * Some S3 cards (e.g. Savage) have enormous * mmio regions (but even larger frame buffers). + * Some 3dfx cards (e.g., Voodoo3) have mmio + * buffers the same size as the frame buffer, + * but only the frame buffer is marked as + * prefetchable (bar&8). If a card doesn't fit + * into these heuristics, its driver will have to + * call vgalinearaddr directly. */ best = -1; for(i=0; imem); i++){ /n/sourcesdump/2005/1128/plan9/sys/src/9/pc/screen.c:461,467 - /n/sourcesdump/2005/1129/plan9/sys/src/9/pc/screen.c:467,475 continue; if(p->mem[i].size < 640*480) /* not big enough */ continue; - if(best==-1 || p->mem[i].size > p->mem[best].size) + if(best==-1 + || p->mem[i].size > p->mem[best].size + || (p->mem[i].size == p->mem[best].size && (p->mem[i].bar&8))) best = i; } if(best >= 0){ [rsc] --rw-rw-r-- M 374841 glenda sys 3833 Nov 28 17:52 sys/src/9/pc/vga3dfx.c