A crappy way and quick way to fix this is simply to not draw the discs in gl_draw.c.
1. Open gl_draw.c
A better way is to detect Intel display adapters in gl_vidnt.c,Code: Select all
/* ================ Draw_BeginDisc Draws the little blue disc in the corner of the screen. Call before beginning any disc IO. ================ */ void Draw_BeginDisc (void) { #if 0 //Baker: Intel display adapter fix if (!draw_disc) return; glDrawBuffer (GL_FRONT); Draw_Pic (vid.width - 24, 0, draw_disc); glDrawBuffer (GL_BACK); #endif }
create a variable, and modify gl_draw.c to not draw the discs if it is Intel display adapter.
Engines with this issue fixed that I know of:
ezQuake, FTEQW, Qrack, ProQuake 3.99 (and DarkPlaces does not have the problem).
Engines known to have this problem in the current version:
JoeQuake, FitzQuake, aguirRe GLQuake, likely every other GLQuake engine.
Related URL:
http://www.intel.com/cd/ids/developer/a ... htm?page=7
Comments in the ezQuake source:
// Intel cards, most notably Intel 915GM/910GML has problems with
// writing directly to the front buffer and then flipping the back buffer,
// so don't draw the I/O disc on those cards, it will cause the console
// to flicker.
//
// From Intels dev network:
// "Using two dimensional data within a 3D scene is sometimes used to render
// objects like scoreboards and road signs. When that blit request is sent
// to or from a buffer, the data contained within must be updated, causing
// a pipeline flush and disabling Zone Rendering. One easy way to generate
// the same effect is to use a quad or a billboard that is aligned to the
// view frustrum. Similarly, a flip operation while rendering to a back buffer
// will cause serialization. Be sure you are done altering the back buffer
// before you flip.