source: GTP/trunk/App/Demos/Geom/Shark3D/src/drv_d3d9_inspect.h @ 2236

Revision 2236, 4.0 KB checked in by gumbau, 17 years ago (diff)
Line 
1///////////////////////////////////////////////////////////////////////////////
2//
3//      ##  ######
4//       ######  ###
5//  ## ###############        Shark 3D Engine (www.shark3d.com)
6//   ########## # # #
7//    ########                Copyright (c) 1996-2006 Spinor GmbH.
8//   ######### # # #          All rights reserved.
9//  ##   ##########
10//      ##
11//
12///////////////////////////////////////////////////////////////////////////////
13
14//@cpp
15#ifndef S3D_DRV_D3D9_INSPECT_H
16#define S3D_DRV_D3D9_INSPECT_H
17
18#include "drv_d3d9_types.h"
19#include "drv_d3d9_settings.h"
20#include "sys/win32api/sys_win32api_unicode.h"
21#include "util/mempool/util_mempool_strbuf.h"
22
23///////////////////////////////////////////////////////////////////////////////
24
25#define S3D_DRV_D3D9_PIX_INSPBATCH_COLOR D3DCOLOR_XRGB(0, 255, 255)
26#define S3D_DRV_D3D9_PIX_INSPCHARGE_COLOR D3DCOLOR_XRGB(255, 0, 0)
27#define S3D_DRV_D3D9_PIX_STD_COLOR D3DCOLOR_XRGB(255, 0, 255)
28
29///////////////////////////////////////////////////////////////////////////////
30
31class s3d_CDrvD3d9PixEvent
32{
33public:
34    s3d_CDrvD3d9PixEvent();
35    ~s3d_CDrvD3d9PixEvent();
36
37    void Assign(
38            const s3d_CSysChar *Name, const D3DCOLOR &Color);
39
40    static void SetMarker(
41            const s3d_CSysChar *Name, const D3DCOLOR &Color);
42
43    static void InfoStrOfCharge(
44            s3d_CUtilMemPool *MemPool,
45            const s3d_CSysChar *Prefix, const s3d_CSysChar *ObjDesc,
46            const s3d_CSysChar *MainInfo, const s3d_CSysChar *ObjInfo,
47            s3d_CUtilMemPoolStrBuf &Info);
48
49private:
50#ifdef S3D_DRV_D3D9_PIX_ENABLE
51    bool m_Enabled;
52#endif
53
54    s3d_CDrvD3d9PixEvent(const s3d_CDrvD3d9PixEvent&);
55
56    static const s3d_CSysChar *CutInfo(
57            const s3d_CSysChar *Info);
58};
59
60///////////////////////////////////////////////////////////////////////////////
61// Implementations
62///////////////////////////////////////////////////////////////////////////////
63
64S3D_SYS_INLINE
65s3d_CDrvD3d9PixEvent::s3d_CDrvD3d9PixEvent()
66{
67#ifdef S3D_DRV_D3D9_PIX_ENABLE
68    m_Enabled = false;
69#endif
70}
71
72S3D_SYS_INLINE
73s3d_CDrvD3d9PixEvent::~s3d_CDrvD3d9PixEvent()
74{
75#ifdef S3D_DRV_D3D9_PIX_ENABLE
76    if(m_Enabled)
77        D3DPERF_EndEvent();
78#endif
79}
80
81S3D_SYS_INLINE
82void s3d_CDrvD3d9PixEvent::Assign(
83        const s3d_CSysChar *Name, const D3DCOLOR &Color)
84{
85#ifdef S3D_DRV_D3D9_PIX_ENABLE
86    if(!m_Enabled)
87    {
88        m_Enabled = true;
89        if(!Name)
90            Name = "<Unkown event>";
91        S3D_SYS_WIN32API_ALLOCA_WCHAR_OF_SYSCHAR(
92                WinNameLen, WinName, Name);
93        D3DPERF_BeginEvent(Color, WinName);
94    }
95#endif
96}
97
98S3D_SYS_INLINE
99void s3d_CDrvD3d9PixEvent::SetMarker(
100        const s3d_CSysChar *Name, const D3DCOLOR &Color)
101{
102#ifdef S3D_DRV_D3D9_PIX_ENABLE
103    S3D_SYS_WIN32API_ALLOCA_WCHAR_OF_SYSCHAR(MarkerNameLen, MarkerName, Name);
104    if(!MarkerName)
105        MarkerName = L"<Unkown marker>";
106    D3DPERF_SetMarker(Color, MarkerName);
107#endif
108}
109
110S3D_SYS_INLINE
111void s3d_CDrvD3d9PixEvent::InfoStrOfCharge(
112        s3d_CUtilMemPool *MemPool,
113        const s3d_CSysChar *Prefix, const s3d_CSysChar *ObjDesc,
114        const s3d_CSysChar *MainInfo, const s3d_CSysChar *ObjInfo,
115        s3d_CUtilMemPoolStrBuf &Info)
116{
117    Info.Clear();
118#ifdef S3D_DRV_D3D9_PIX_ENABLE
119    if(!MemPool)
120        return;
121
122    Info.Append(MemPool, Prefix);
123    Info.Append(MemPool, CutInfo(ObjDesc));
124    Info.Append(MemPool, " - ");
125    Info.Append(MemPool, CutInfo(MainInfo));
126    Info.Append(MemPool, " - ");
127    Info.Append(MemPool, CutInfo(ObjInfo));
128#endif
129}
130
131S3D_SYS_INLINE
132const s3d_CSysChar *s3d_CDrvD3d9PixEvent::CutInfo(
133        const s3d_CSysChar *Info)
134{
135    if(!Info)
136        Info = "";
137    const s3d_CSysChar *Result = Info + s3d_SysStrlen(Info);
138    while(Result > Info && Result[-1] != '/')
139        Result--;
140    return Result;
141}
142
143///////////////////////////////////////////////////////////////////////////////
144
145#endif
Note: See TracBrowser for help on using the repository browser.