mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Allow logging of calls into display driver (disabled by default)
svn path=/trunk/; revision=15874
This commit is contained in:
parent
53a8f66404
commit
83804c9749
1 changed files with 199 additions and 5 deletions
|
@ -39,6 +39,9 @@
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
/* #define TRACE_DRV_CALLS to get a log of all calls into the display driver. */
|
||||||
|
#undef TRACE_DRV_CALLS
|
||||||
|
|
||||||
typedef struct _GRAPHICS_DRIVER
|
typedef struct _GRAPHICS_DRIVER
|
||||||
{
|
{
|
||||||
PWSTR Name;
|
PWSTR Name;
|
||||||
|
@ -164,11 +167,6 @@ PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name)
|
||||||
switch(DED->pdrvfn[i].iFunc) \
|
switch(DED->pdrvfn[i].iFunc) \
|
||||||
{
|
{
|
||||||
|
|
||||||
#define DRIVER_FUNCTION(function) \
|
|
||||||
case INDEX_Drv##function: \
|
|
||||||
*(PVOID*)&DF->function = DED->pdrvfn[i].pfn; \
|
|
||||||
break
|
|
||||||
|
|
||||||
#define END_FUNCTION_MAP() \
|
#define END_FUNCTION_MAP() \
|
||||||
default: \
|
default: \
|
||||||
DPRINT1("Unsupported DDI function 0x%x\n", DED->pdrvfn[i].iFunc); \
|
DPRINT1("Unsupported DDI function 0x%x\n", DED->pdrvfn[i].iFunc); \
|
||||||
|
@ -176,6 +174,202 @@ PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name)
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef TRACE_DRV_CALLS
|
||||||
|
|
||||||
|
typedef struct _TRACEDRVINFO
|
||||||
|
{
|
||||||
|
unsigned Index;
|
||||||
|
char *Name;
|
||||||
|
PVOID DrvRoutine;
|
||||||
|
}
|
||||||
|
TRACEDRVINFO, *PTRACEDRVINFO;
|
||||||
|
|
||||||
|
__asm__(
|
||||||
|
" .text\n"
|
||||||
|
"TraceDrv:\n"
|
||||||
|
" pushl %eax\n"
|
||||||
|
" call _FindTraceInfo\n"
|
||||||
|
" add $4,%esp\n"
|
||||||
|
" pushl %eax\n"
|
||||||
|
" pushl 4(%eax)\n"
|
||||||
|
" call _DbgPrint\n"
|
||||||
|
" addl $4,%esp\n"
|
||||||
|
" popl %eax\n"
|
||||||
|
" mov 8(%eax),%eax\n"
|
||||||
|
" jmp *%eax\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
#define TRACEDRV_ROUTINE(function) \
|
||||||
|
unsigned TraceDrvIndex##function = INDEX_Drv##function; \
|
||||||
|
__asm__ ( \
|
||||||
|
" .text\n" \
|
||||||
|
"_Trace" #function ":\n" \
|
||||||
|
" movl _TraceDrvIndex" #function ",%eax\n" \
|
||||||
|
" jmp TraceDrv\n" \
|
||||||
|
); \
|
||||||
|
extern PVOID Trace##function;
|
||||||
|
|
||||||
|
TRACEDRV_ROUTINE(EnablePDEV)
|
||||||
|
TRACEDRV_ROUTINE(CompletePDEV)
|
||||||
|
TRACEDRV_ROUTINE(DisablePDEV)
|
||||||
|
TRACEDRV_ROUTINE(EnableSurface)
|
||||||
|
TRACEDRV_ROUTINE(DisableSurface)
|
||||||
|
TRACEDRV_ROUTINE(AssertMode)
|
||||||
|
TRACEDRV_ROUTINE(Offset)
|
||||||
|
TRACEDRV_ROUTINE(ResetPDEV)
|
||||||
|
TRACEDRV_ROUTINE(DisableDriver)
|
||||||
|
TRACEDRV_ROUTINE(CreateDeviceBitmap)
|
||||||
|
TRACEDRV_ROUTINE(DeleteDeviceBitmap)
|
||||||
|
TRACEDRV_ROUTINE(RealizeBrush)
|
||||||
|
TRACEDRV_ROUTINE(DitherColor)
|
||||||
|
TRACEDRV_ROUTINE(StrokePath)
|
||||||
|
TRACEDRV_ROUTINE(FillPath)
|
||||||
|
TRACEDRV_ROUTINE(StrokeAndFillPath)
|
||||||
|
TRACEDRV_ROUTINE(Paint)
|
||||||
|
TRACEDRV_ROUTINE(BitBlt)
|
||||||
|
TRACEDRV_ROUTINE(TransparentBlt)
|
||||||
|
TRACEDRV_ROUTINE(CopyBits)
|
||||||
|
TRACEDRV_ROUTINE(StretchBlt)
|
||||||
|
TRACEDRV_ROUTINE(StretchBltROP)
|
||||||
|
TRACEDRV_ROUTINE(SetPalette)
|
||||||
|
TRACEDRV_ROUTINE(TextOut)
|
||||||
|
TRACEDRV_ROUTINE(Escape)
|
||||||
|
TRACEDRV_ROUTINE(DrawEscape)
|
||||||
|
TRACEDRV_ROUTINE(QueryFont)
|
||||||
|
TRACEDRV_ROUTINE(QueryFontTree)
|
||||||
|
TRACEDRV_ROUTINE(QueryFontData)
|
||||||
|
TRACEDRV_ROUTINE(SetPointerShape)
|
||||||
|
TRACEDRV_ROUTINE(MovePointer)
|
||||||
|
TRACEDRV_ROUTINE(LineTo)
|
||||||
|
TRACEDRV_ROUTINE(SendPage)
|
||||||
|
TRACEDRV_ROUTINE(StartPage)
|
||||||
|
TRACEDRV_ROUTINE(EndDoc)
|
||||||
|
TRACEDRV_ROUTINE(StartDoc)
|
||||||
|
TRACEDRV_ROUTINE(GetGlyphMode)
|
||||||
|
TRACEDRV_ROUTINE(Synchronize)
|
||||||
|
TRACEDRV_ROUTINE(SaveScreenBits)
|
||||||
|
TRACEDRV_ROUTINE(GetModes)
|
||||||
|
TRACEDRV_ROUTINE(Free)
|
||||||
|
TRACEDRV_ROUTINE(DestroyFont)
|
||||||
|
TRACEDRV_ROUTINE(QueryFontCaps)
|
||||||
|
TRACEDRV_ROUTINE(LoadFontFile)
|
||||||
|
TRACEDRV_ROUTINE(UnloadFontFile)
|
||||||
|
TRACEDRV_ROUTINE(FontManagement)
|
||||||
|
TRACEDRV_ROUTINE(QueryTrueTypeTable)
|
||||||
|
TRACEDRV_ROUTINE(QueryTrueTypeOutline)
|
||||||
|
TRACEDRV_ROUTINE(GetTrueTypeFile)
|
||||||
|
TRACEDRV_ROUTINE(QueryFontFile)
|
||||||
|
TRACEDRV_ROUTINE(QueryAdvanceWidths)
|
||||||
|
TRACEDRV_ROUTINE(SetPixelFormat)
|
||||||
|
TRACEDRV_ROUTINE(DescribePixelFormat)
|
||||||
|
TRACEDRV_ROUTINE(SwapBuffers)
|
||||||
|
TRACEDRV_ROUTINE(StartBanding)
|
||||||
|
TRACEDRV_ROUTINE(NextBand)
|
||||||
|
TRACEDRV_ROUTINE(GetDirectDrawInfo)
|
||||||
|
TRACEDRV_ROUTINE(EnableDirectDraw)
|
||||||
|
TRACEDRV_ROUTINE(DisableDirectDraw)
|
||||||
|
TRACEDRV_ROUTINE(QuerySpoolType)
|
||||||
|
TRACEDRV_ROUTINE(GradientFill)
|
||||||
|
TRACEDRV_ROUTINE(SynchronizeSurface)
|
||||||
|
TRACEDRV_ROUTINE(AlphaBlend)
|
||||||
|
|
||||||
|
#define TRACEDRVINFO_ENTRY(function) \
|
||||||
|
{ INDEX_Drv##function, "Drv" #function "\n", NULL }
|
||||||
|
static TRACEDRVINFO TraceDrvInfo[] =
|
||||||
|
{
|
||||||
|
TRACEDRVINFO_ENTRY(EnablePDEV),
|
||||||
|
TRACEDRVINFO_ENTRY(CompletePDEV),
|
||||||
|
TRACEDRVINFO_ENTRY(DisablePDEV),
|
||||||
|
TRACEDRVINFO_ENTRY(EnableSurface),
|
||||||
|
TRACEDRVINFO_ENTRY(DisableSurface),
|
||||||
|
TRACEDRVINFO_ENTRY(AssertMode),
|
||||||
|
TRACEDRVINFO_ENTRY(Offset),
|
||||||
|
TRACEDRVINFO_ENTRY(ResetPDEV),
|
||||||
|
TRACEDRVINFO_ENTRY(DisableDriver),
|
||||||
|
TRACEDRVINFO_ENTRY(CreateDeviceBitmap),
|
||||||
|
TRACEDRVINFO_ENTRY(DeleteDeviceBitmap),
|
||||||
|
TRACEDRVINFO_ENTRY(RealizeBrush),
|
||||||
|
TRACEDRVINFO_ENTRY(DitherColor),
|
||||||
|
TRACEDRVINFO_ENTRY(StrokePath),
|
||||||
|
TRACEDRVINFO_ENTRY(FillPath),
|
||||||
|
TRACEDRVINFO_ENTRY(StrokeAndFillPath),
|
||||||
|
TRACEDRVINFO_ENTRY(Paint),
|
||||||
|
TRACEDRVINFO_ENTRY(BitBlt),
|
||||||
|
TRACEDRVINFO_ENTRY(TransparentBlt),
|
||||||
|
TRACEDRVINFO_ENTRY(CopyBits),
|
||||||
|
TRACEDRVINFO_ENTRY(StretchBlt),
|
||||||
|
TRACEDRVINFO_ENTRY(StretchBltROP),
|
||||||
|
TRACEDRVINFO_ENTRY(SetPalette),
|
||||||
|
TRACEDRVINFO_ENTRY(TextOut),
|
||||||
|
TRACEDRVINFO_ENTRY(Escape),
|
||||||
|
TRACEDRVINFO_ENTRY(DrawEscape),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryFont),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryFontTree),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryFontData),
|
||||||
|
TRACEDRVINFO_ENTRY(SetPointerShape),
|
||||||
|
TRACEDRVINFO_ENTRY(MovePointer),
|
||||||
|
TRACEDRVINFO_ENTRY(LineTo),
|
||||||
|
TRACEDRVINFO_ENTRY(SendPage),
|
||||||
|
TRACEDRVINFO_ENTRY(StartPage),
|
||||||
|
TRACEDRVINFO_ENTRY(EndDoc),
|
||||||
|
TRACEDRVINFO_ENTRY(StartDoc),
|
||||||
|
TRACEDRVINFO_ENTRY(GetGlyphMode),
|
||||||
|
TRACEDRVINFO_ENTRY(Synchronize),
|
||||||
|
TRACEDRVINFO_ENTRY(SaveScreenBits),
|
||||||
|
TRACEDRVINFO_ENTRY(GetModes),
|
||||||
|
TRACEDRVINFO_ENTRY(Free),
|
||||||
|
TRACEDRVINFO_ENTRY(DestroyFont),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryFontCaps),
|
||||||
|
TRACEDRVINFO_ENTRY(LoadFontFile),
|
||||||
|
TRACEDRVINFO_ENTRY(UnloadFontFile),
|
||||||
|
TRACEDRVINFO_ENTRY(FontManagement),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryTrueTypeTable),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryTrueTypeOutline),
|
||||||
|
TRACEDRVINFO_ENTRY(GetTrueTypeFile),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryFontFile),
|
||||||
|
TRACEDRVINFO_ENTRY(QueryAdvanceWidths),
|
||||||
|
TRACEDRVINFO_ENTRY(SetPixelFormat),
|
||||||
|
TRACEDRVINFO_ENTRY(DescribePixelFormat),
|
||||||
|
TRACEDRVINFO_ENTRY(SwapBuffers),
|
||||||
|
TRACEDRVINFO_ENTRY(StartBanding),
|
||||||
|
TRACEDRVINFO_ENTRY(NextBand),
|
||||||
|
TRACEDRVINFO_ENTRY(GetDirectDrawInfo),
|
||||||
|
TRACEDRVINFO_ENTRY(EnableDirectDraw),
|
||||||
|
TRACEDRVINFO_ENTRY(DisableDirectDraw),
|
||||||
|
TRACEDRVINFO_ENTRY(QuerySpoolType),
|
||||||
|
TRACEDRVINFO_ENTRY(GradientFill),
|
||||||
|
TRACEDRVINFO_ENTRY(SynchronizeSurface),
|
||||||
|
TRACEDRVINFO_ENTRY(AlphaBlend)
|
||||||
|
};
|
||||||
|
|
||||||
|
PTRACEDRVINFO
|
||||||
|
FindTraceInfo(unsigned Index)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof(TraceDrvInfo) / sizeof(TRACEDRVINFO); i++)
|
||||||
|
{
|
||||||
|
if (TraceDrvInfo[i].Index == Index)
|
||||||
|
{
|
||||||
|
return TraceDrvInfo + i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DRIVER_FUNCTION(function) \
|
||||||
|
case INDEX_Drv##function: \
|
||||||
|
FindTraceInfo(INDEX_Drv##function)->DrvRoutine = DED->pdrvfn[i].pfn; \
|
||||||
|
*(PVOID*)&DF->function = &Trace##function; \
|
||||||
|
break
|
||||||
|
#else
|
||||||
|
#define DRIVER_FUNCTION(function) \
|
||||||
|
case INDEX_Drv##function: \
|
||||||
|
*(PVOID*)&DF->function = DED->pdrvfn[i].pfn; \
|
||||||
|
break
|
||||||
|
#endif
|
||||||
|
|
||||||
BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
|
BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
|
||||||
PDRIVER_FUNCTIONS DF)
|
PDRIVER_FUNCTIONS DF)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue