[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] More DirectX related problems



hi,

Many older opengl calls have been broken.  Many opengl calls are
broken on all sorts of different drivers.  Some calls are broken in a
BSOD way, and others fail silently.  This is why engines use so many
work arounds and different opengl paths and avoid all sorts of
different opengl calls that are known to crash.  Opengl programs will
fail on many, many more computers than the SDL directx driver -- I can
point you at stats where some games have recorded the number of
crashes.

This particular instance of directx crashing is because it's most
likely overwriting memory somewhere.  Normal use will *not* cause this
crash.  Developing to this API may cause this crash -- like developing
to all other APIs on all other platforms.  Using pygame should not be
able to cause memory overwrites... however Lenard

Using directx as default on older computers makes sense because they
are using the older drivers.

Making a real time application like a game go too slow is breaking the
game.  This will happen on older computers by making the windib driver
the default on older versions of windows.

The SDL directx driver is tested by video driver companies.  Even the
intel drivers fixed their problem they were having with SDL programs,
so newer drivers (as in < 2 years) have fixed the crashes.


Note: the windib driver is chosen as default for most new computers.





Some OpenGL failure stats for you.


Some stats to give you more of an idea:
http://www.catnapgames.com/blog/181
http://www.steampowered.com/status/survey.html  (note only directx +
other stats)

Here's some stats from one mature game by an opengl expert, that
doesn't include linux/bsd/etc installs.  It's a java games that works
on at least win/mac/linux.
ref: http://forums.indiegamer.com/showpost.php?p=139044&postcount=8

O/S    Version    Successes     Failures     Total     Failure Rate %

Mac      10.3         1631           232      1863             12.5
Mac      10.4         8199           815      9014              9.0
Win       5.1         9357          2526     11883             21.3

                     19394          3666     23060             15.9

O/S            GL Version  Installs

Mac OS 10.3          1.1       517
Mac OS 10.3          1.3       601
Mac OS 10.3          1.5       512
Mac OS 10.4          1.1       733
Mac OS 10.4          1.2      1415
Mac OS 10.4          1.3      1162
Mac OS 10.4          1.5      2833
Mac OS 10.4          2.0      2058
Windows XP           1.2       364
Windows XP           1.3      2088
Windows XP           1.4      2305
Windows XP           1.5      1061
Windows XP           2.0      3305



On Wed, Feb 4, 2009 at 11:02 AM, Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx> wrote:
> What you say is true, but a little more nuanced than that.
>
> Yes windows stuff is sometimes bad, and sometimes it's not pygame/SDL's
> fault at all...
>
> The issue with SDL's use of DirectX though, is largely that it has not been
> maintained in a very long time, and is now using legacy calls (5 or 7 or
> something) that go through directx call translation gymnastics that are
> poorly supported and barely tested (if at all) by driver manufacturers who
> put all their energy into the latest versions (directx 10 and all that)
>
> (Py)OpenGL on the other hand, does not have that problem, because while
> microsoft has been reving and redesigning the DirectX API's in major ways,
> OpenGL has not - the OpenGL 1.1 and 1.2 calls are all still part of the spec
> that 2.x implementations must support to be compliant
>
> On Tue, Feb 3, 2009 at 3:53 PM, René Dudfield <renesd@xxxxxxxxx> wrote:
>>
>> hey,
>>
>> sure, windows sometimes corrupts itself.  Nothing new there.
>> Especially if the code you are working on passes in incorrect values,
>> and is overwriting memory it shouldn't.
>>
>> It is easy to crash many machines with a few well crafted opengl,
>> directx (or other video API) calls.
>>
>>
>> If using non-buggy code, that doesn't do buffer overwrites and such I
>> think you wouldn't have as many problems with directx.
>>
>>
>>
>> cheers,
>>
>>
>>
>> On Wed, Feb 4, 2009 at 10:34 AM, Lenard Lindstrom <len-l@xxxxxxxxx> wrote:
>> > I just had personal confirmation that SDL, maybe with the help of
>> > Pygame,
>> > does have DirectX issues. After repeated runs of surfarray_test.py and
>> > related programs my antiquated system(*) reached the point that a simple
>> > pygame.init() call would segfault. I confirmed it was DirectX by
>> > changing
>> > the video driver to windib. That worked. And to further confirm it was a
>> > corrupted DirectX and not Python I tried the dxdiag.exe video tests.
>> > They
>> > failed. Only a system reboot cleared the problem. At that point I also
>> > confirmed that non of the other programs I was using depended on
>> > DirectX.
>> > Only Python/Pygame caused ddraw.dll and dsound.dll to be loaded and kept
>> > alive by that suspicious ddhelp.exe character. Apparently DirectX has a
>> > memory.
>> >
>> > So what to do. Maybe it is time to defer to the judgment of the SDL
>> > developers and just let windib be the default Windows video driver. The
>> > documentation can suggest that anyone experiencing performance problems
>> > try
>> > directx.
>> >
>> > Lenard
>> >
>> >
>> > (*) Windows 98, DirectX 8.0 (And no, I don't want to see what DX 9 or
>> > higher
>> > will do for me. It would probably break something).
>> >
>> > --
>> > Lenard Lindstrom
>> > <len-l@xxxxxxxxx>
>> >
>> >
>
>