First post, by Dege
Debug layer is about
1) giving feedback to the user about what currently happening, potential error conditions and, how dgVoodoo is driven by the application at all
2) helping debugging a given application/game by the (extensive) feedback and opening the possibility to break into the debugger
dgVoodoo currently has 2 main levels for debug feedback
a) Simple messages with 3 subtypes which can be disabled or associated with a debugger break
INFO: harmless message about various events like creating/releasing an API object, reading a config file, loading a module, etc.
WARNING: a message about a potential error condition
ERROR: a message about an API driving error or an internal error of dgVoodoo. The latter is fatal, while the prior one may be normal.
b) Tracing
Tracing means the full logging of API calls made to dgVoodoo and some additional information of dgVoodoo internals.
Level 0 - Tracing disabled
Level 1 - Logging of API calls
Level 2 - Logging of API calls + some additional info
Messages and tracing are independent on each other. Tracing is mainly for devs, for quick and average usage only the messages are recommended.
All of them are written to the debug output, logging to file is not yet implemented.
So, I recommend you to use DebugView. It's a very cool application for cases when no any debugger is available. Also, if you have more than one monitors then you can watch the log in realtime: put DebugView on one display and run the game on another.
https://docs.microsoft.com/en-us/sysinternals … loads/debugview
All of the output messages have a '[dgVoodoo]' prefix so the best way to check out a game with dgVoodoo's debug layer is enabling filtering to the 'dgVoodoo' substring in DebugView (Crtl-L). Every single log output appear in new lines in DebugView - this is nice, except for some tracing messages written to the output part by part, like D3D8 disassembled shaders. Unfortunately they appear nastily because of that.
It's not really a big problem however because I cannot recommend you to enable tracing. Feedback is so tremendous that DebugView
won't be able to keep up with it and make your game/app crawl at speed near zero. For tracing, a debugger with asynchronous debug output window is much better, like Visual Studio 2015.
I must emphasize:
1) do not look for a miracle when using the debug layer! If some game doesn't work for you then it can give you some useful feedback
on what's going on, or you can see if dgVoodoo is utilized at all but won't tell you why the game crashes, for example.
Also, if you see an ERROR entry in the log then it doesn't necessarily mean you did something wrong or there is a problem with your game.
Many games rely on error codes got back from an API. So, for example if you see such a log like the following snippet
...
[15500] [dgVoodoo] INFO: Direct3DDevice (0D3967D8)::EnumTextureFormats: Format XRGB8888 is enumerated to the application.
[15500] [dgVoodoo] INFO: Direct3DDevice (0D3967D8)::EnumTextureFormats: Format ARGB8888 is enumerated to the application.
[15500] [dgVoodoo] INFO: Direct3DDevice (0D3967D8) is released.
[15500] [dgVoodoo] ERROR: DirectDrawSurface (0D2380C8)::DeleteAttachedSurface: Failed, HRESULT: 887601CC
[15500] [dgVoodoo] INFO: DirectDrawSurface (0D2380C8) Plain offscreen rendertarget is released.
[15500] [dgVoodoo] INFO: Direct3D (0ABC87B0)::EnumDevices: Device enumerated, Name: "Direct3D HAL", Description: "dgVoodoo Hardware Accelerated Device", ClassID: IID_IDirect3DHALDevice, hardware accelerated device, ClassID GUID = {84e63de0-46aa-11cf-816f-0000c020156e}
...
Then the error entry about failed 'DeleteAttachedSurface' is not really an error. The application tried to delete a potential attached surface, just to make sure, and doesn't care about the result.
dgVoodoo however treat it as an error because it caused an error in an API method. It's really impossible to make a decision about classifying some conditions as an error or just a plain warning.
2) Use the spec release only for trying to solve an extant problem with an applicaiton. Spec release does some extra checking and validation compared to normal dgVoodoo releases and it can bite off from the speed or cause stuttering.