Re: [AD] Direct3D bug

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


On 04/06/2014 08:33 PM, Trent Gamblin wrote:
Around January 25th Paul changed the D3D code so that it doesn't call
TestCooperativeLevel 1000 times per second. This breaks non-trivial games
that use D3D and can lose the display frequently such as fullscreen window
toggles. According to my reading of the documentation (this was a while
ago), you're supposed to call TestCooperativeLevel in a loop like the code
was doing before. As it was changed it's pointless to even call it at all. I
don't know if it needs to be 1000 times per second but I think that was what
seemed to work, and still does if put back. I'm going to revert the change
until something else that works can be done.

Thanks,
Trent

It's not clear to me why the check in al_flip_display is insufficient to detect lost displays in those games, as it was in my testing of that commit. Is there a test case for this? Neither Irrlicht or Ogre3D have a loop like that, and they created far more commercially successful games than Allegro ever has or will, with the correspondingly greater number of greater number of testers. Irrlicht calls that function in the equivalent of their flip display. Ogre3D calls it whenever there is a check for whether driver is lost (looks like most drawing commands trigger it).

The input lag generated by that function call makes the D3D driver unusable for some game types, and unless you're planning on fixing it in the near future, then we need to switch away from D3D as a default, as it is broken.

-SL




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/