Index: ddraw/glExtensions.cpp |
— | — | @@ -1,168 +0,0 @@ |
2 | | -// DXGL
|
3 | | -// Copyright (C) 2011-2014 William Feely
|
4 | | -
|
5 | | -// This library is free software; you can redistribute it and/or
|
6 | | -// modify it under the terms of the GNU Lesser General Public
|
7 | | -// License as published by the Free Software Foundation; either
|
8 | | -// version 2.1 of the License, or (at your option) any later version.
|
9 | | -
|
10 | | -// This library is distributed in the hope that it will be useful,
|
11 | | -// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 | | -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13 | | -// Lesser General Public License for more details.
|
14 | | -
|
15 | | -// You should have received a copy of the GNU Lesser General Public
|
16 | | -// License along with this library; if not, write to the Free Software
|
17 | | -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
18 | | -
|
19 | | -#include "common.h"
|
20 | | -#include "glExtensions.h"
|
21 | | -
|
22 | | -
|
23 | | -glExtensions::glExtensions()
|
24 | | -{
|
25 | | - atimem = false;
|
26 | | - const GLubyte *glversion = glGetString(GL_VERSION);
|
27 | | - glver_minor = 0;
|
28 | | - if(!sscanf((char*)glversion,"%d.%d",&glver_major,&glver_minor)) glver_major = 0;
|
29 | | - if((glver_major >= 2) || ((glver_major >= 1) && (glver_minor >= 2)))
|
30 | | - glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)wglGetProcAddress("glDrawRangeElements");
|
31 | | - if((glver_major >= 2) || ((glver_major >= 1) && (glver_minor >= 3)))
|
32 | | - {
|
33 | | - glActiveTexture = (PFNGLACTIVETEXTUREPROC)wglGetProcAddress("glActiveTexture");
|
34 | | - glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)wglGetProcAddress("glClientActiveTexture");
|
35 | | - }
|
36 | | - if((glver_major >= 2) || ((glver_major >= 1) && (glver_minor >= 5)))
|
37 | | - {
|
38 | | - glGenBuffers = (PFNGLGENBUFFERSPROC)wglGetProcAddress("glGenBuffers");
|
39 | | - glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)wglGetProcAddress("glDeleteBuffers");
|
40 | | - glBindBuffer = (PFNGLBINDBUFFERPROC)wglGetProcAddress("glBindBuffer");
|
41 | | - glBufferData = (PFNGLBUFFERDATAPROC)wglGetProcAddress("glBufferData");
|
42 | | - glMapBuffer = (PFNGLMAPBUFFERPROC)wglGetProcAddress("glMapBuffer");
|
43 | | - glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)wglGetProcAddress("glUnmapBuffer");
|
44 | | - }
|
45 | | - if(glver_major >= 2)
|
46 | | - {
|
47 | | - glCreateShader = (PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader");
|
48 | | - glShaderSource = (PFNGLSHADERSOURCEPROC)wglGetProcAddress("glShaderSource");
|
49 | | - glCompileShader = (PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader");
|
50 | | - glDeleteShader = (PFNGLDELETESHADERPROC)wglGetProcAddress("glDeleteShader");
|
51 | | - glCreateProgram = (PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");
|
52 | | - glDeleteProgram = (PFNGLDELETEPROGRAMPROC)wglGetProcAddress("glDeleteProgram");
|
53 | | - glGetProgramiv = (PFNGLGETPROGRAMIVPROC)wglGetProcAddress("glGetProgramiv");
|
54 | | - glAttachShader = (PFNGLATTACHSHADERPROC)wglGetProcAddress("glAttachShader");
|
55 | | - glDetachShader = (PFNGLDETACHSHADERPROC)wglGetProcAddress("glDetachShader");
|
56 | | - glLinkProgram = (PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram");
|
57 | | - glUseProgram = (PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram");
|
58 | | - glGetShaderiv = (PFNGLGETSHADERIVPROC)wglGetProcAddress("glGetShaderiv");
|
59 | | - glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)wglGetProcAddress("glGetShaderInfoLog");
|
60 | | - glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)wglGetProcAddress("glGetProgramInfoLog");
|
61 | | - glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)wglGetProcAddress("glGetUniformLocation");
|
62 | | - glUniform1i = (PFNGLUNIFORM1IPROC)wglGetProcAddress("glUniform1i");
|
63 | | - glUniform2i = (PFNGLUNIFORM2IPROC)wglGetProcAddress("glUniform2i");
|
64 | | - glUniform3i = (PFNGLUNIFORM3IPROC)wglGetProcAddress("glUniform3i");
|
65 | | - glUniform4i = (PFNGLUNIFORM4IPROC)wglGetProcAddress("glUniform4i");
|
66 | | - glUniform4iv = (PFNGLUNIFORM4IVPROC)wglGetProcAddress("glUniform4iv");
|
67 | | - glUniform1f = (PFNGLUNIFORM1FPROC)wglGetProcAddress("glUniform1f");
|
68 | | - glUniform2f = (PFNGLUNIFORM2FPROC)wglGetProcAddress("glUniform2f");
|
69 | | - glUniform3f = (PFNGLUNIFORM3FPROC)wglGetProcAddress("glUniform3f");
|
70 | | - glUniform4f = (PFNGLUNIFORM4FPROC)wglGetProcAddress("glUniform4f");
|
71 | | - glUniform3fv = (PFNGLUNIFORM3FVPROC)wglGetProcAddress("glUniform3fv");
|
72 | | - glUniform4fv = (PFNGLUNIFORM4FVPROC)wglGetProcAddress("glUniform4fv");
|
73 | | - glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)wglGetProcAddress("glUniformMatrix3fv");
|
74 | | - glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)wglGetProcAddress("glUniformMatrix4fv");
|
75 | | - glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)wglGetProcAddress("glGetAttribLocation");
|
76 | | - glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)wglGetProcAddress("glVertexAttribPointer");
|
77 | | - glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)wglGetProcAddress("glEnableVertexAttribArray");
|
78 | | - glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)wglGetProcAddress("glDisableVertexAttribArray");
|
79 | | - }
|
80 | | - else
|
81 | | - {
|
82 | | - MessageBox(NULL,_T("DXGL requires an OpenGL 2.0 or higher compatible graphics card to function. \
|
83 | | -Please contact your graphics card manufacturer for an updated driver. This program will now exit."),_T("Fatal error"),
|
84 | | - MB_OK|MB_ICONERROR);
|
85 | | - ExitProcess(-1);
|
86 | | - }
|
87 | | - const GLubyte *glextensions = glGetString(GL_EXTENSIONS);
|
88 | | - if(strstr((char*)glextensions,"GL_ARB_framebuffer_object") || (glver_major >= 3)) GLEXT_ARB_framebuffer_object = 1;
|
89 | | - else GLEXT_ARB_framebuffer_object = 0;
|
90 | | - if(strstr((char*)glextensions,"GL_EXT_framebuffer_object")) GLEXT_EXT_framebuffer_object = 1;
|
91 | | - else GLEXT_EXT_framebuffer_object = 0;
|
92 | | - if(strstr((char*)glextensions,"GL_NV_packed_depth_stencil")) GLEXT_NV_packed_depth_stencil = 1;
|
93 | | - else GLEXT_NV_packed_depth_stencil = 0;
|
94 | | - if(strstr((char*)glextensions,"GL_EXT_packed_depth_stencil")) GLEXT_EXT_packed_depth_stencil = 1;
|
95 | | - else GLEXT_EXT_packed_depth_stencil = 0;
|
96 | | - if(strstr((char*)glextensions,"GL_ARB_depth_buffer_float") || (glver_major >= 3)) GLEXT_ARB_depth_buffer_float = 1;
|
97 | | - else GLEXT_ARB_depth_buffer_float = 0;
|
98 | | - if(strstr((char*)glextensions,"GL_ARB_depth_texture") || (glver_major >= 2)
|
99 | | - || ((glver_major >= 1) && (glver_minor >= 4))) GLEXT_ARB_depth_texture = 1;
|
100 | | - else GLEXT_ARB_depth_texture = 0;
|
101 | | - if(strstr((char*)glextensions,"GL_NVX_gpu_memory_info")) GLEXT_NVX_gpu_memory_info = 1;
|
102 | | - else GLEXT_NVX_gpu_memory_info = 0;
|
103 | | - if(strstr((char*)glextensions,"GL_ATI_meminfo")) GLEXT_ATI_meminfo = 1;
|
104 | | - else GLEXT_ATI_meminfo = 0;
|
105 | | - if(strstr((char*)glextensions,"GL_ARB_ES2_compatibility") || (glver_major >= 5)
|
106 | | - || ((glver_major >= 4) && (glver_minor >= 1))) GLEXT_ARB_ES2_compatibility = 1;
|
107 | | - else GLEXT_ARB_ES2_compatibility = 0;
|
108 | | - if(strstr((char*)glextensions,"GL_EXT_direct_state_access")) GLEXT_EXT_direct_state_access = 1;
|
109 | | - else GLEXT_EXT_direct_state_access = 0;
|
110 | | - if(strstr((char*)glextensions,"GL_ARB_sampler_objects") || (glver_major >= 4)
|
111 | | - || ((glver_major >= 3) && (glver_minor >= 3))) GLEXT_ARB_sampler_objects = 1;
|
112 | | - else GLEXT_ARB_sampler_objects = 0;
|
113 | | - bool broken_fbo = true;
|
114 | | - if(GLEXT_ARB_framebuffer_object)
|
115 | | - {
|
116 | | - glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)wglGetProcAddress("glGenFramebuffers");
|
117 | | - if(!glGenFramebuffers) GLEXT_ARB_framebuffer_object = 0;
|
118 | | - glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)wglGetProcAddress("glBindFramebuffer");
|
119 | | - glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)wglGetProcAddress("glGenRenderbuffers");
|
120 | | - glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)wglGetProcAddress("glBindRenderbuffer");
|
121 | | - glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)wglGetProcAddress("glFramebufferTexture2D");
|
122 | | - glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)wglGetProcAddress("glCheckFramebufferStatus");
|
123 | | - glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)wglGetProcAddress("glDeleteFramebuffers");
|
124 | | - broken_fbo = false;
|
125 | | - }
|
126 | | - if(GLEXT_EXT_framebuffer_object)
|
127 | | - {
|
128 | | - glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)wglGetProcAddress("glGenFramebuffersEXT");
|
129 | | - if(!glGenFramebuffersEXT) GLEXT_EXT_framebuffer_object = 0;
|
130 | | - glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)wglGetProcAddress("glBindFramebufferEXT");
|
131 | | - glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)wglGetProcAddress("glGenRenderbuffersEXT");
|
132 | | - glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)wglGetProcAddress("glBindRenderbufferEXT");
|
133 | | - glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)wglGetProcAddress("glFramebufferTexture2DEXT");
|
134 | | - glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)wglGetProcAddress("glCheckFramebufferStatusEXT");
|
135 | | - glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)wglGetProcAddress("glDeleteFramebuffersEXT");
|
136 | | - broken_fbo = false;
|
137 | | - }
|
138 | | - if(GLEXT_EXT_direct_state_access)
|
139 | | - {
|
140 | | - glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)wglGetProcAddress("glTextureParameterfEXT");
|
141 | | - glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)wglGetProcAddress("glTextureParameterfvEXT");
|
142 | | - glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)wglGetProcAddress("glTextureParameteriEXT");
|
143 | | - glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)wglGetProcAddress("glTextureParameterivEXT");
|
144 | | - glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)wglGetProcAddress("glTextureImage2DEXT");
|
145 | | - glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)wglGetProcAddress("glTextureSubImage2DEXT");
|
146 | | - glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)wglGetProcAddress("glGetTextureImageEXT");
|
147 | | - glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)wglGetProcAddress("glMatrixLoadfEXT");
|
148 | | - glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)wglGetProcAddress("glMatrixMultfEXT");
|
149 | | - }
|
150 | | - if(GLEXT_ARB_sampler_objects)
|
151 | | - {
|
152 | | - glBindSampler = (PFNGLBINDSAMPLERPROC)wglGetProcAddress("glBindSampler");
|
153 | | - glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)wglGetProcAddress("glDeleteSamplers");
|
154 | | - glGenSamplers = (PFNGLGENSAMPLERSPROC)wglGetProcAddress("glGenSamplers");
|
155 | | - glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)wglGetProcAddress("glSamplerParameterf");
|
156 | | - glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)wglGetProcAddress("glSamplerParameteri");
|
157 | | - glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)wglGetProcAddress("glSamplerParameterfv");
|
158 | | - glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)wglGetProcAddress("glSamplerParameteriv");
|
159 | | - }
|
160 | | - if(broken_fbo)
|
161 | | - {
|
162 | | - MessageBox(NULL,_T("DXGL requires support for OpenGL Framebuffer Objects to function. \
|
163 | | -Please contact your graphics card manufacturer for an updated driver. This program will now exit."),_T("Fatal error"),
|
164 | | - MB_OK|MB_ICONERROR);
|
165 | | - ExitProcess(-1);
|
166 | | - }
|
167 | | - wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT");
|
168 | | - wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)wglGetProcAddress("wglGetSwapIntervalEXT");
|
169 | | -}
|
Index: ddraw/trace.cpp |
— | — | @@ -1,1210 +0,0 @@ |
2 | | -// DXGL
|
3 | | -// Copyright (C) 2013 William Feely
|
4 | | -
|
5 | | -// This library is free software; you can redistribute it and/or
|
6 | | -// modify it under the terms of the GNU Lesser General Public
|
7 | | -// License as published by the Free Software Foundation; either
|
8 | | -// version 2.1 of the License, or (at your option) any later version.
|
9 | | -
|
10 | | -// This library is distributed in the hope that it will be useful,
|
11 | | -// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 | | -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13 | | -// Lesser General Public License for more details.
|
14 | | -
|
15 | | -// You should have received a copy of the GNU Lesser General Public
|
16 | | -// License along with this library; if not, write to the Free Software
|
17 | | -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
18 | | -
|
19 | | -#include "common.h"
|
20 | | -#include "trace.h"
|
21 | | -
|
22 | | -/* Data types:
|
23 | | --1 - C++ constructor/destructor
|
24 | | -0 - void
|
25 | | -1 - 8-bit signed
|
26 | | -2 - 8-bit unsigned
|
27 | | -3 - 8-bit hex
|
28 | | -4 - 16 bit signed
|
29 | | -5 - 16 bit unsigned
|
30 | | -6 - 16 bit hex
|
31 | | -7 - 32 bit signed
|
32 | | -8 - 32 bit unsigned
|
33 | | -9 - 32 bit hex
|
34 | | -10 - pointer to 64 bit hex
|
35 | | -11 - native signed
|
36 | | -12 - native unsigned
|
37 | | -13 - native hex
|
38 | | -14 - generic pointer
|
39 | | -15 - ASCII string
|
40 | | -16 - Unicode string
|
41 | | -17 - TCHAR string
|
42 | | -18 - ASCII character
|
43 | | -19 - pointer to 32 bit float
|
44 | | -20 - pointer to 64 bit float
|
45 | | -21 - c++ bool
|
46 | | -22 - int BOOL
|
47 | | -23 - HRESULT
|
48 | | -24 - GUID pointer
|
49 | | -25 - SIZE or POINT pointer
|
50 | | -26 - RECT pointer
|
51 | | -27 - D3DRENDERSTATETYPE
|
52 | | -28 - D3DTEXTURESTAGESTATETYPE
|
53 | | -29 - D3DTRANSFORMSTATETYPE
|
54 | | -30 - D3DLIGHTSTATETYPE
|
55 | | -*/
|
56 | | -
|
57 | | -#ifdef _TRACE
|
58 | | -static CRITICAL_SECTION trace_cs;
|
59 | | -static bool trace_ready = false;
|
60 | | -static bool trace_fail = false;
|
61 | | -bool trace_end = false;
|
62 | | -static HANDLE outfile = INVALID_HANDLE_VALUE;
|
63 | | -unsigned int trace_depth = 0;
|
64 | | -static void trace_decode_hresult(HRESULT hr)
|
65 | | -{
|
66 | | - DWORD byteswritten;
|
67 | | - char str[64];
|
68 | | - switch(hr)
|
69 | | - {
|
70 | | - case DD_OK:
|
71 | | - strcpy(str,"DD_OK");
|
72 | | - break;
|
73 | | - case DD_FALSE:
|
74 | | - strcpy(str,"DD_FALSE");
|
75 | | - break;
|
76 | | - case DDERR_ALREADYINITIALIZED:
|
77 | | - strcpy(str,"DDERR_ALREADYINITIALIZED");
|
78 | | - break;
|
79 | | - case DDERR_CANNOTATTACHSURFACE:
|
80 | | - strcpy(str,"DDERR_CANNOTATTACHSURFACE");
|
81 | | - break;
|
82 | | - case DDERR_CANNOTDETACHSURFACE:
|
83 | | - strcpy(str,"DDERR_CANNOTDETACHSURFACE");
|
84 | | - break;
|
85 | | - case DDERR_CURRENTLYNOTAVAIL:
|
86 | | - strcpy(str,"DDERR_CURRENTLYNOTAVAIL");
|
87 | | - break;
|
88 | | - case DDERR_EXCEPTION:
|
89 | | - strcpy(str,"DDERR_EXCEPTION");
|
90 | | - break;
|
91 | | - case DDERR_GENERIC:
|
92 | | - strcpy(str,"DDERR_GENERIC");
|
93 | | - break;
|
94 | | - case DDERR_INCOMPATIBLEPRIMARY:
|
95 | | - strcpy(str,"DDERR_INCOMPATIBLEPRIMARY");
|
96 | | - break;
|
97 | | - case DDERR_INVALIDCAPS:
|
98 | | - strcpy(str,"DDERR_INVALIDCAPS");
|
99 | | - break;
|
100 | | - case DDERR_INVALIDCLIPLIST:
|
101 | | - strcpy(str,"DDERR_INVALIDCLIPLIST");
|
102 | | - break;
|
103 | | - case DDERR_INVALIDMODE:
|
104 | | - strcpy(str,"DDERR_INVALIDMODE");
|
105 | | - break;
|
106 | | - case DDERR_INVALIDPARAMS:
|
107 | | - strcpy(str,"DDERR_INVALIDPARAMS");
|
108 | | - break;
|
109 | | - case DDERR_INVALIDPIXELFORMAT:
|
110 | | - strcpy(str,"DDERR_INVALIDPIXELFORMAT");
|
111 | | - break;
|
112 | | - case DDERR_INVALIDRECT:
|
113 | | - strcpy(str,"DDERR_INVALIDRECT");
|
114 | | - break;
|
115 | | - case DDERR_NOTFOUND:
|
116 | | - strcpy(str,"DDERR_NOTFOUND");
|
117 | | - break;
|
118 | | - case DDERR_OUTOFMEMORY:
|
119 | | - strcpy(str,"DDERR_OUTOFMEMORY");
|
120 | | - break;
|
121 | | - case DDERR_OUTOFVIDEOMEMORY:
|
122 | | - strcpy(str,"DDERR_OUTOFVIDEOMEMORY");
|
123 | | - break;
|
124 | | - case DDERR_SURFACEALREADYATTACHED:
|
125 | | - strcpy(str,"DDERR_SURFACEALREADYATTACHED");
|
126 | | - break;
|
127 | | - case DDERR_SURFACEBUSY:
|
128 | | - strcpy(str,"DDERR_SURFACEBUSY");
|
129 | | - break;
|
130 | | - case DDERR_CANTLOCKSURFACE:
|
131 | | - strcpy(str,"DDERR_CANTLOCKSURFACE");
|
132 | | - break;
|
133 | | - case DDERR_SURFACELOST:
|
134 | | - strcpy(str,"DDERR_SURFACELOST");
|
135 | | - break;
|
136 | | - case DDERR_SURFACENOTATTACHED:
|
137 | | - strcpy(str,"DDERR_SURFACENOTATTACHED");
|
138 | | - break;
|
139 | | - case DDERR_UNSUPPORTED:
|
140 | | - strcpy(str,"DDERR_UNSUPPORTED");
|
141 | | - break;
|
142 | | - case DDERR_UNSUPPORTEDFORMAT:
|
143 | | - strcpy(str,"DDERR_UNSUPPORTEDFORMAT");
|
144 | | - break;
|
145 | | - case DDERR_UNSUPPORTEDMASK:
|
146 | | - strcpy(str,"DDERR_UNSUPPORTEDMASK");
|
147 | | - break;
|
148 | | - case DDERR_WASSTILLDRAWING:
|
149 | | - strcpy(str,"DDERR_WASSTILLDRAWING");
|
150 | | - break;
|
151 | | - case DDERR_INVALIDDIRECTDRAWGUID:
|
152 | | - strcpy(str,"DDERR_INVALIDDIRECTDRAWGUID");
|
153 | | - break;
|
154 | | - case DDERR_DIRECTDRAWALREADYCREATED:
|
155 | | - strcpy(str,"DDERR_DIRECTDRAWALREADYCREATED");
|
156 | | - break;
|
157 | | - case DDERR_NODIRECTDRAWHW:
|
158 | | - strcpy(str,"DDERR_NODIRECTDRAWHW");
|
159 | | - break;
|
160 | | - case DDERR_PRIMARYSURFACEALREADYEXISTS:
|
161 | | - strcpy(str,"DDERR_PRIMARYSURFACEALREADYEXISTS");
|
162 | | - break;
|
163 | | - case DDERR_CLIPPERISUSINGHWND:
|
164 | | - strcpy(str,"DDERR_CLIPPERISUSINGHWND");
|
165 | | - break;
|
166 | | - case DDERR_NOCLIPPERATTACHED:
|
167 | | - strcpy(str,"DDERR_NOCLIPPERATTACHED");
|
168 | | - break;
|
169 | | - case DDERR_NOHWND:
|
170 | | - strcpy(str,"DDERR_NOHWND");
|
171 | | - break;
|
172 | | - case DDERR_HWNDSUBCLASSED:
|
173 | | - strcpy(str,"DDERR_HWNDSUBCLASSED");
|
174 | | - break;
|
175 | | - case DDERR_HWNDALREADYSET:
|
176 | | - strcpy(str,"DDERR_HWNDALREADYSET");
|
177 | | - break;
|
178 | | - case DDERR_NOPALETTEATTACHED:
|
179 | | - strcpy(str,"DDERR_NOPALETTEATTACHED");
|
180 | | - break;
|
181 | | - case DDERR_NOPALETTEHW:
|
182 | | - strcpy(str,"DDERR_NOPALETTEHW");
|
183 | | - break;
|
184 | | - case DDERR_BLTFASTCANTCLIP:
|
185 | | - strcpy(str,"DDERR_BLTFASTCANTCLIP");
|
186 | | - break;
|
187 | | - case DDERR_OVERLAYNOTVISIBLE:
|
188 | | - strcpy(str,"DDERR_OVERLAYNOTVISIBLE");
|
189 | | - break;
|
190 | | - case DDERR_NOOVERLAYDEST:
|
191 | | - strcpy(str,"DDERR_NOOVERLAYDEST");
|
192 | | - break;
|
193 | | - case DDERR_EXCLUSIVEMODEALREADYSET:
|
194 | | - strcpy(str,"DDERR_EXCLUSIVEMODEALREADYSET");
|
195 | | - break;
|
196 | | - case DDERR_NOTFLIPPABLE:
|
197 | | - strcpy(str,"DDERR_NOTFLIPPABLE");
|
198 | | - break;
|
199 | | - case DDERR_CANTDUPLICATE:
|
200 | | - strcpy(str,"DDERR_CANTDUPLICATE");
|
201 | | - break;
|
202 | | - case DDERR_NOTLOCKED:
|
203 | | - strcpy(str,"DDERR_NOTLOCKED");
|
204 | | - break;
|
205 | | - case DDERR_CANTCREATEDC:
|
206 | | - strcpy(str,"DDERR_CANTCREATEDC");
|
207 | | - break;
|
208 | | - case DDERR_NODC:
|
209 | | - strcpy(str,"DDERR_NODC");
|
210 | | - break;
|
211 | | - case DDERR_WRONGMODE:
|
212 | | - strcpy(str,"DDERR_WRONGMODE");
|
213 | | - break;
|
214 | | - case DDERR_IMPLICITLYCREATED:
|
215 | | - strcpy(str,"DDERR_IMPLICITLYCREATED");
|
216 | | - break;
|
217 | | - case DDERR_NOTPALETTIZED:
|
218 | | - strcpy(str,"DDERR_NOTPALETTIZED");
|
219 | | - break;
|
220 | | - case DDERR_UNSUPPORTEDMODE:
|
221 | | - strcpy(str,"DDERR_UNSUPPORTEDMODE");
|
222 | | - break;
|
223 | | - case DDERR_INVALIDSURFACETYPE:
|
224 | | - strcpy(str,"DDERR_INVALIDSURFACETYPE");
|
225 | | - break;
|
226 | | - case DDERR_NOTONMIPMAPSUBLEVEL:
|
227 | | - strcpy(str,"DDERR_NOTONMIPMAPSUBLEVEL");
|
228 | | - break;
|
229 | | - case DDERR_DCALREADYCREATED:
|
230 | | - strcpy(str,"DDERR_DCALREADYCREATED");
|
231 | | - break;
|
232 | | - case DDERR_CANTPAGELOCK:
|
233 | | - strcpy(str,"DDERR_CANTPAGELOCK");
|
234 | | - break;
|
235 | | - case DDERR_CANTPAGEUNLOCK:
|
236 | | - strcpy(str,"DDERR_CANTPAGEUNLOCK");
|
237 | | - break;
|
238 | | - case DDERR_NOTPAGELOCKED:
|
239 | | - strcpy(str,"DDERR_NOTPAGELOCKED");
|
240 | | - break;
|
241 | | - case DDERR_MOREDATA:
|
242 | | - strcpy(str,"DDERR_MOREDATA");
|
243 | | - break;
|
244 | | - case DDERR_NOTINITIALIZED:
|
245 | | - strcpy(str,"DDERR_NOTINITIALIZED");
|
246 | | - break;
|
247 | | - case E_NOINTERFACE:
|
248 | | - strcpy(str,"E_NOINTERFACE");
|
249 | | - break;
|
250 | | - case CLASS_E_NOAGGREGATION:
|
251 | | - strcpy(str,"CLASS_E_NOAGGREGATION");
|
252 | | - break;
|
253 | | - default:
|
254 | | - sprintf(str,"(HRESULT)0x%08X",hr);
|
255 | | - break;
|
256 | | - }
|
257 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
258 | | -}
|
259 | | -
|
260 | | -static void trace_decode_d3drenderstate(DWORD rs)
|
261 | | -{
|
262 | | - DWORD byteswritten;
|
263 | | - char str[64];
|
264 | | - switch(rs)
|
265 | | - {
|
266 | | - case D3DRENDERSTATE_TEXTUREHANDLE:
|
267 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREHANDLE");
|
268 | | - break;
|
269 | | - case D3DRENDERSTATE_ANTIALIAS:
|
270 | | - strcpy(str,"D3DRENDERSTATE_ANTIALIAS");
|
271 | | - break;
|
272 | | - case D3DRENDERSTATE_TEXTUREADDRESS:
|
273 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREADDRESS");
|
274 | | - break;
|
275 | | - case D3DRENDERSTATE_TEXTUREPERSPECTIVE:
|
276 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREPERSPECTIVE");
|
277 | | - break;
|
278 | | - case D3DRENDERSTATE_WRAPU:
|
279 | | - strcpy(str,"D3DRENDERSTATE_WRAPU");
|
280 | | - break;
|
281 | | - case D3DRENDERSTATE_WRAPV:
|
282 | | - strcpy(str,"D3DRENDERSTATE_WRAPV");
|
283 | | - break;
|
284 | | - case D3DRENDERSTATE_ZENABLE:
|
285 | | - strcpy(str,"D3DRENDERSTATE_ZENABLE");
|
286 | | - break;
|
287 | | - case D3DRENDERSTATE_FILLMODE:
|
288 | | - strcpy(str,"D3DRENDERSTATE_FILLMODE");
|
289 | | - break;
|
290 | | - case D3DRENDERSTATE_SHADEMODE:
|
291 | | - strcpy(str,"D3DRENDERSTATE_SHADEMODE");
|
292 | | - break;
|
293 | | - case D3DRENDERSTATE_LINEPATTERN:
|
294 | | - strcpy(str,"D3DRENDERSTATE_LINEPATTERN");
|
295 | | - break;
|
296 | | - case D3DRENDERSTATE_MONOENABLE:
|
297 | | - strcpy(str,"D3DRENDERSTATE_MONOENABLE");
|
298 | | - break;
|
299 | | - case D3DRENDERSTATE_ROP2:
|
300 | | - strcpy(str,"D3DRENDERSTATE_ROP2");
|
301 | | - break;
|
302 | | - case D3DRENDERSTATE_PLANEMASK:
|
303 | | - strcpy(str,"D3DRENDERSTATE_PLANEMASK");
|
304 | | - break;
|
305 | | - case D3DRENDERSTATE_ZWRITEENABLE:
|
306 | | - strcpy(str,"D3DRENDERSTATE_ZWRITEENABLE");
|
307 | | - break;
|
308 | | - case D3DRENDERSTATE_ALPHATESTENABLE:
|
309 | | - strcpy(str,"D3DRENDERSTATE_ALPHATESTENABLE");
|
310 | | - break;
|
311 | | - case D3DRENDERSTATE_LASTPIXEL:
|
312 | | - strcpy(str,"D3DRENDERSTATE_LASTPIXEL");
|
313 | | - break;
|
314 | | - case D3DRENDERSTATE_TEXTUREMAG:
|
315 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREMAG");
|
316 | | - break;
|
317 | | - case D3DRENDERSTATE_TEXTUREMIN:
|
318 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREMIN");
|
319 | | - break;
|
320 | | - case D3DRENDERSTATE_SRCBLEND:
|
321 | | - strcpy(str,"D3DRENDERSTATE_SRCBLEND");
|
322 | | - break;
|
323 | | - case D3DRENDERSTATE_DESTBLEND:
|
324 | | - strcpy(str,"D3DRENDERSTATE_DESTBLEND");
|
325 | | - break;
|
326 | | - case D3DRENDERSTATE_TEXTUREMAPBLEND:
|
327 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREMAPBLEND");
|
328 | | - break;
|
329 | | - case D3DRENDERSTATE_CULLMODE:
|
330 | | - strcpy(str,"D3DRENDERSTATE_CULLMODE");
|
331 | | - break;
|
332 | | - case D3DRENDERSTATE_ZFUNC:
|
333 | | - strcpy(str,"D3DRENDERSTATE_ZFUNC");
|
334 | | - break;
|
335 | | - case D3DRENDERSTATE_ALPHAREF:
|
336 | | - strcpy(str,"D3DRENDERSTATE_ALPHAREF");
|
337 | | - break;
|
338 | | - case D3DRENDERSTATE_ALPHAFUNC:
|
339 | | - strcpy(str,"D3DRENDERSTATE_ALPHAFUNC");
|
340 | | - break;
|
341 | | - case D3DRENDERSTATE_DITHERENABLE:
|
342 | | - strcpy(str,"D3DRENDERSTATE_DITHERENABLE");
|
343 | | - break;
|
344 | | - case D3DRENDERSTATE_ALPHABLENDENABLE:
|
345 | | - strcpy(str,"D3DRENDERSTATE_ALPHABLENDENABLE");
|
346 | | - break;
|
347 | | - case D3DRENDERSTATE_FOGENABLE:
|
348 | | - strcpy(str,"D3DRENDERSTATE_FOGENABLE");
|
349 | | - break;
|
350 | | - case D3DRENDERSTATE_SPECULARENABLE:
|
351 | | - strcpy(str,"D3DRENDERSTATE_SPECULARENABLE");
|
352 | | - break;
|
353 | | - case D3DRENDERSTATE_ZVISIBLE:
|
354 | | - strcpy(str,"D3DRENDERSTATE_ZVISIBLE");
|
355 | | - break;
|
356 | | - case D3DRENDERSTATE_SUBPIXEL:
|
357 | | - strcpy(str,"D3DRENDERSTATE_SUBPIXEL");
|
358 | | - break;
|
359 | | - case D3DRENDERSTATE_SUBPIXELX:
|
360 | | - strcpy(str,"D3DRENDERSTATE_SUBPIXELX");
|
361 | | - break;
|
362 | | - case D3DRENDERSTATE_STIPPLEDALPHA:
|
363 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEDALPHA");
|
364 | | - break;
|
365 | | - case D3DRENDERSTATE_FOGCOLOR:
|
366 | | - strcpy(str,"D3DRENDERSTATE_FOGCOLOR");
|
367 | | - break;
|
368 | | - case D3DRENDERSTATE_FOGTABLEMODE:
|
369 | | - strcpy(str,"D3DRENDERSTATE_FOGTABLEMODE");
|
370 | | - break;
|
371 | | - case D3DRENDERSTATE_FOGSTART:
|
372 | | - strcpy(str,"D3DRENDERSTATE_FOGSTART");
|
373 | | - break;
|
374 | | - case D3DRENDERSTATE_FOGEND:
|
375 | | - strcpy(str,"D3DRENDERSTATE_FOGEND");
|
376 | | - break;
|
377 | | - case D3DRENDERSTATE_FOGDENSITY:
|
378 | | - strcpy(str,"D3DRENDERSTATE_FOGDENSITY");
|
379 | | - break;
|
380 | | - case D3DRENDERSTATE_STIPPLEENABLE:
|
381 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEENABLE");
|
382 | | - break;
|
383 | | - case D3DRENDERSTATE_EDGEANTIALIAS:
|
384 | | - strcpy(str,"D3DRENDERSTATE_EDGEANTIALIAS");
|
385 | | - break;
|
386 | | - case D3DRENDERSTATE_COLORKEYENABLE:
|
387 | | - strcpy(str,"D3DRENDERSTATE_COLORKEYENABLE");
|
388 | | - break;
|
389 | | - case 42: // DX5 D3DRENDERSTATE_ALPHABLENDENABLE
|
390 | | - strcpy(str,"D3DRENDERSTATE_ALPHABLENDENABLE(DX5)");
|
391 | | - break;
|
392 | | - case D3DRENDERSTATE_BORDERCOLOR:
|
393 | | - strcpy(str,"D3DRENDERSTATE_BORDERCOLOR");
|
394 | | - break;
|
395 | | - case D3DRENDERSTATE_TEXTUREADDRESSU:
|
396 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREADDRESSU");
|
397 | | - break;
|
398 | | - case D3DRENDERSTATE_TEXTUREADDRESSV:
|
399 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREADDRESSV");
|
400 | | - break;
|
401 | | - case D3DRENDERSTATE_MIPMAPLODBIAS:
|
402 | | - strcpy(str,"D3DRENDERSTATE_MIPMAPLODBIAS");
|
403 | | - break;
|
404 | | - case D3DRENDERSTATE_ZBIAS:
|
405 | | - strcpy(str,"D3DRENDERSTATE_ZBIAS");
|
406 | | - break;
|
407 | | - case D3DRENDERSTATE_RANGEFOGENABLE:
|
408 | | - strcpy(str,"D3DRENDERSTATE_RANGEFOGENABLE");
|
409 | | - break;
|
410 | | - case D3DRENDERSTATE_ANISOTROPY:
|
411 | | - strcpy(str,"D3DRENDERSTATE_ANISOTROPY");
|
412 | | - break;
|
413 | | - case D3DRENDERSTATE_FLUSHBATCH:
|
414 | | - strcpy(str,"D3DRENDERSTATE_FLUSHBATCH");
|
415 | | - break;
|
416 | | - case D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT:
|
417 | | - strcpy(str,"D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT");
|
418 | | - break;
|
419 | | - case D3DRENDERSTATE_STENCILENABLE:
|
420 | | - strcpy(str,"D3DRENDERSTATE_STENCILENABLE");
|
421 | | - break;
|
422 | | - case D3DRENDERSTATE_STENCILFAIL:
|
423 | | - strcpy(str,"D3DRENDERSTATE_STENCILFAIL");
|
424 | | - break;
|
425 | | - case D3DRENDERSTATE_STENCILZFAIL:
|
426 | | - strcpy(str,"D3DRENDERSTATE_STENCILZFAIL");
|
427 | | - break;
|
428 | | - case D3DRENDERSTATE_STENCILPASS:
|
429 | | - strcpy(str,"D3DRENDERSTATE_STENCILPASS");
|
430 | | - break;
|
431 | | - case D3DRENDERSTATE_STENCILFUNC:
|
432 | | - strcpy(str,"D3DRENDERSTATE_STENCILFUNC");
|
433 | | - break;
|
434 | | - case D3DRENDERSTATE_STENCILREF:
|
435 | | - strcpy(str,"D3DRENDERSTATE_STENCILREF");
|
436 | | - break;
|
437 | | - case D3DRENDERSTATE_STENCILMASK:
|
438 | | - strcpy(str,"D3DRENDERSTATE_STENCILMASK");
|
439 | | - break;
|
440 | | - case D3DRENDERSTATE_STENCILWRITEMASK:
|
441 | | - strcpy(str,"D3DRENDERSTATE_STENCILWRITEMASK");
|
442 | | - break;
|
443 | | - case D3DRENDERSTATE_TEXTUREFACTOR:
|
444 | | - strcpy(str,"D3DRENDERSTATE_TEXTUREFACTOR");
|
445 | | - break;
|
446 | | - case D3DRENDERSTATE_STIPPLEPATTERN00:
|
447 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN00");
|
448 | | - break;
|
449 | | - case D3DRENDERSTATE_STIPPLEPATTERN01:
|
450 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN01");
|
451 | | - break;
|
452 | | - case D3DRENDERSTATE_STIPPLEPATTERN02:
|
453 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN02");
|
454 | | - break;
|
455 | | - case D3DRENDERSTATE_STIPPLEPATTERN03:
|
456 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN03");
|
457 | | - break;
|
458 | | - case D3DRENDERSTATE_STIPPLEPATTERN04:
|
459 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN04");
|
460 | | - break;
|
461 | | - case D3DRENDERSTATE_STIPPLEPATTERN05:
|
462 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN05");
|
463 | | - break;
|
464 | | - case D3DRENDERSTATE_STIPPLEPATTERN06:
|
465 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN06");
|
466 | | - break;
|
467 | | - case D3DRENDERSTATE_STIPPLEPATTERN07:
|
468 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN07");
|
469 | | - break;
|
470 | | - case D3DRENDERSTATE_STIPPLEPATTERN08:
|
471 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN08");
|
472 | | - break;
|
473 | | - case D3DRENDERSTATE_STIPPLEPATTERN09:
|
474 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN09");
|
475 | | - break;
|
476 | | - case D3DRENDERSTATE_STIPPLEPATTERN10:
|
477 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN10");
|
478 | | - break;
|
479 | | - case D3DRENDERSTATE_STIPPLEPATTERN11:
|
480 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN11");
|
481 | | - break;
|
482 | | - case D3DRENDERSTATE_STIPPLEPATTERN12:
|
483 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN12");
|
484 | | - break;
|
485 | | - case D3DRENDERSTATE_STIPPLEPATTERN13:
|
486 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN13");
|
487 | | - break;
|
488 | | - case D3DRENDERSTATE_STIPPLEPATTERN14:
|
489 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN14");
|
490 | | - break;
|
491 | | - case D3DRENDERSTATE_STIPPLEPATTERN15:
|
492 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN15");
|
493 | | - break;
|
494 | | - case D3DRENDERSTATE_STIPPLEPATTERN16:
|
495 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN16");
|
496 | | - break;
|
497 | | - case D3DRENDERSTATE_STIPPLEPATTERN17:
|
498 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN17");
|
499 | | - break;
|
500 | | - case D3DRENDERSTATE_STIPPLEPATTERN18:
|
501 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN18");
|
502 | | - break;
|
503 | | - case D3DRENDERSTATE_STIPPLEPATTERN19:
|
504 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN19");
|
505 | | - break;
|
506 | | - case D3DRENDERSTATE_STIPPLEPATTERN20:
|
507 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN20");
|
508 | | - break;
|
509 | | - case D3DRENDERSTATE_STIPPLEPATTERN21:
|
510 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN21");
|
511 | | - break;
|
512 | | - case D3DRENDERSTATE_STIPPLEPATTERN22:
|
513 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN22");
|
514 | | - break;
|
515 | | - case D3DRENDERSTATE_STIPPLEPATTERN23:
|
516 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN23");
|
517 | | - break;
|
518 | | - case D3DRENDERSTATE_STIPPLEPATTERN24:
|
519 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN24");
|
520 | | - break;
|
521 | | - case D3DRENDERSTATE_STIPPLEPATTERN25:
|
522 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN25");
|
523 | | - break;
|
524 | | - case D3DRENDERSTATE_STIPPLEPATTERN26:
|
525 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN26");
|
526 | | - break;
|
527 | | - case D3DRENDERSTATE_STIPPLEPATTERN27:
|
528 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN27");
|
529 | | - break;
|
530 | | - case D3DRENDERSTATE_STIPPLEPATTERN28:
|
531 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN28");
|
532 | | - break;
|
533 | | - case D3DRENDERSTATE_STIPPLEPATTERN29:
|
534 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN29");
|
535 | | - break;
|
536 | | - case D3DRENDERSTATE_STIPPLEPATTERN30:
|
537 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN30");
|
538 | | - break;
|
539 | | - case D3DRENDERSTATE_STIPPLEPATTERN31:
|
540 | | - strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN31");
|
541 | | - break;
|
542 | | - case D3DRENDERSTATE_WRAP0:
|
543 | | - strcpy(str,"D3DRENDERSTATE_WRAP0");
|
544 | | - break;
|
545 | | - case D3DRENDERSTATE_WRAP1:
|
546 | | - strcpy(str,"D3DRENDERSTATE_WRAP1");
|
547 | | - break;
|
548 | | - case D3DRENDERSTATE_WRAP2:
|
549 | | - strcpy(str,"D3DRENDERSTATE_WRAP2");
|
550 | | - break;
|
551 | | - case D3DRENDERSTATE_WRAP3:
|
552 | | - strcpy(str,"D3DRENDERSTATE_WRAP3");
|
553 | | - break;
|
554 | | - case D3DRENDERSTATE_WRAP4:
|
555 | | - strcpy(str,"D3DRENDERSTATE_WRAP4");
|
556 | | - break;
|
557 | | - case D3DRENDERSTATE_WRAP5:
|
558 | | - strcpy(str,"D3DRENDERSTATE_WRAP5");
|
559 | | - break;
|
560 | | - case D3DRENDERSTATE_WRAP6:
|
561 | | - strcpy(str,"D3DRENDERSTATE_WRAP6");
|
562 | | - break;
|
563 | | - case D3DRENDERSTATE_WRAP7:
|
564 | | - strcpy(str,"D3DRENDERSTATE_WRAP7");
|
565 | | - break;
|
566 | | - case D3DRENDERSTATE_CLIPPING:
|
567 | | - strcpy(str,"D3DRENDERSTATE_CLIPPING");
|
568 | | - break;
|
569 | | - case D3DRENDERSTATE_LIGHTING:
|
570 | | - strcpy(str,"D3DRENDERSTATE_LIGHTING");
|
571 | | - break;
|
572 | | - case D3DRENDERSTATE_EXTENTS:
|
573 | | - strcpy(str,"D3DRENDERSTATE_EXTENTS");
|
574 | | - break;
|
575 | | - case D3DRENDERSTATE_AMBIENT:
|
576 | | - strcpy(str,"D3DRENDERSTATE_AMBIENT");
|
577 | | - break;
|
578 | | - case D3DRENDERSTATE_FOGVERTEXMODE:
|
579 | | - strcpy(str,"D3DRENDERSTATE_FOGVERTEXMODE");
|
580 | | - break;
|
581 | | - case D3DRENDERSTATE_COLORVERTEX:
|
582 | | - strcpy(str,"D3DRENDERSTATE_COLORVERTEX");
|
583 | | - break;
|
584 | | - case D3DRENDERSTATE_LOCALVIEWER:
|
585 | | - strcpy(str,"D3DRENDERSTATE_LOCALVIEWER");
|
586 | | - break;
|
587 | | - case D3DRENDERSTATE_NORMALIZENORMALS:
|
588 | | - strcpy(str,"D3DRENDERSTATE_NORMALIZENORMALS");
|
589 | | - break;
|
590 | | - case D3DRENDERSTATE_COLORKEYBLENDENABLE:
|
591 | | - strcpy(str,"D3DRENDERSTATE_COLORKEYBLENDENABLE");
|
592 | | - break;
|
593 | | - case D3DRENDERSTATE_DIFFUSEMATERIALSOURCE:
|
594 | | - strcpy(str,"D3DRENDERSTATE_DIFFUSEMATERIALSOURCE");
|
595 | | - break;
|
596 | | - case D3DRENDERSTATE_SPECULARMATERIALSOURCE:
|
597 | | - strcpy(str,"D3DRENDERSTATE_SPECULARMATERIALSOURCE");
|
598 | | - break;
|
599 | | - case D3DRENDERSTATE_AMBIENTMATERIALSOURCE:
|
600 | | - strcpy(str,"D3DRENDERSTATE_AMBIENTMATERIALSOURCE");
|
601 | | - break;
|
602 | | - case D3DRENDERSTATE_EMISSIVEMATERIALSOURCE:
|
603 | | - strcpy(str,"D3DRENDERSTATE_EMISSIVEMATERIALSOURCE");
|
604 | | - break;
|
605 | | - case D3DRENDERSTATE_VERTEXBLEND:
|
606 | | - strcpy(str,"D3DRENDERSTATE_VERTEXBLEND");
|
607 | | - break;
|
608 | | - case D3DRENDERSTATE_CLIPPLANEENABLE:
|
609 | | - strcpy(str,"D3DRENDERSTATE_CLIPPLANEENABLE");
|
610 | | - break;
|
611 | | - default:
|
612 | | - sprintf(str,"(D3DRENDERSTATETYPE)%u",rs);
|
613 | | - break;
|
614 | | - }
|
615 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
616 | | -}
|
617 | | -
|
618 | | -static void trace_decode_d3dtexturestagestate(DWORD ts)
|
619 | | -{
|
620 | | - DWORD byteswritten;
|
621 | | - char str[64];
|
622 | | - switch(ts)
|
623 | | - {
|
624 | | - case D3DTSS_COLOROP:
|
625 | | - strcpy(str,"D3DTSS_COLOROP");
|
626 | | - break;
|
627 | | - case D3DTSS_COLORARG1:
|
628 | | - strcpy(str,"D3DTSS_COLORARG1");
|
629 | | - break;
|
630 | | - case D3DTSS_COLORARG2:
|
631 | | - strcpy(str,"D3DTSS_COLORARG2");
|
632 | | - break;
|
633 | | - case D3DTSS_ALPHAOP:
|
634 | | - strcpy(str,"D3DTSS_ALPHAOP");
|
635 | | - break;
|
636 | | - case D3DTSS_ALPHAARG1:
|
637 | | - strcpy(str,"D3DTSS_ALPHAARG1");
|
638 | | - break;
|
639 | | - case D3DTSS_ALPHAARG2:
|
640 | | - strcpy(str,"D3DTSS_ALPHAARG2");
|
641 | | - break;
|
642 | | - case D3DTSS_BUMPENVMAT00:
|
643 | | - strcpy(str,"D3DTSS_BUMPENVMAT00");
|
644 | | - break;
|
645 | | - case D3DTSS_BUMPENVMAT01:
|
646 | | - strcpy(str,"D3DTSS_BUMPENVMAT01");
|
647 | | - break;
|
648 | | - case D3DTSS_BUMPENVMAT10:
|
649 | | - strcpy(str,"D3DTSS_BUMPENVMAT10");
|
650 | | - break;
|
651 | | - case D3DTSS_BUMPENVMAT11:
|
652 | | - strcpy(str,"D3DTSS_BUMPENVMAT11");
|
653 | | - break;
|
654 | | - case D3DTSS_TEXCOORDINDEX:
|
655 | | - strcpy(str,"D3DTSS_TEXCOORDINDEX");
|
656 | | - break;
|
657 | | - case D3DTSS_ADDRESS:
|
658 | | - strcpy(str,"D3DTSS_ADDRESS");
|
659 | | - break;
|
660 | | - case D3DTSS_ADDRESSU:
|
661 | | - strcpy(str,"D3DTSS_ADDRESSU");
|
662 | | - break;
|
663 | | - case D3DTSS_ADDRESSV:
|
664 | | - strcpy(str,"D3DTSS_ADDRESSV");
|
665 | | - break;
|
666 | | - case D3DTSS_BORDERCOLOR:
|
667 | | - strcpy(str,"D3DTSS_BORDERCOLOR");
|
668 | | - break;
|
669 | | - case D3DTSS_MAGFILTER:
|
670 | | - strcpy(str,"D3DTSS_MAGFILTER");
|
671 | | - break;
|
672 | | - case D3DTSS_MINFILTER:
|
673 | | - strcpy(str,"D3DTSS_MINFILTER");
|
674 | | - break;
|
675 | | - case D3DTSS_MIPFILTER:
|
676 | | - strcpy(str,"D3DTSS_MIPFILTER");
|
677 | | - break;
|
678 | | - case D3DTSS_MIPMAPLODBIAS:
|
679 | | - strcpy(str,"D3DTSS_MIPMAPLODBIAS");
|
680 | | - break;
|
681 | | - case D3DTSS_MAXMIPLEVEL:
|
682 | | - strcpy(str,"D3DTSS_MAXMIPLEVEL");
|
683 | | - break;
|
684 | | - case D3DTSS_MAXANISOTROPY:
|
685 | | - strcpy(str,"D3DTSS_MAXANISOTROPY");
|
686 | | - break;
|
687 | | - case D3DTSS_BUMPENVLSCALE:
|
688 | | - strcpy(str,"D3DTSS_BUMPENVLSCALE");
|
689 | | - break;
|
690 | | - case D3DTSS_BUMPENVLOFFSET:
|
691 | | - strcpy(str,"D3DTSS_BUMPENVLOFFSET");
|
692 | | - break;
|
693 | | - case D3DTSS_TEXTURETRANSFORMFLAGS:
|
694 | | - strcpy(str,"D3DTSS_TEXTURETRANSFORMFLAGS");
|
695 | | - break;
|
696 | | - default:
|
697 | | - sprintf(str,"(D3DTEXTURESTAGESTATETYPE)%u",ts);
|
698 | | - break;
|
699 | | - }
|
700 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
701 | | -}
|
702 | | -
|
703 | | -static void trace_decode_d3dtransformstate(DWORD ts)
|
704 | | -{
|
705 | | - DWORD byteswritten;
|
706 | | - char str[64];
|
707 | | - switch(ts)
|
708 | | - {
|
709 | | - case D3DTRANSFORMSTATE_WORLD:
|
710 | | - strcpy(str,"D3DTRANSFORMSTATE_WORLD");
|
711 | | - break;
|
712 | | - case D3DTRANSFORMSTATE_VIEW:
|
713 | | - strcpy(str,"D3DTRANSFORMSTATE_VIEW");
|
714 | | - break;
|
715 | | - case D3DTRANSFORMSTATE_PROJECTION:
|
716 | | - strcpy(str,"D3DTRANSFORMSTATE_PROJECTION");
|
717 | | - break;
|
718 | | - case D3DTRANSFORMSTATE_WORLD1:
|
719 | | - strcpy(str,"D3DTRANSFORMSTATE_WORLD1");
|
720 | | - break;
|
721 | | - case D3DTRANSFORMSTATE_WORLD2:
|
722 | | - strcpy(str,"D3DTRANSFORMSTATE_WORLD2");
|
723 | | - break;
|
724 | | - case D3DTRANSFORMSTATE_WORLD3:
|
725 | | - strcpy(str,"D3DTRANSFORMSTATE_WORLD3");
|
726 | | - break;
|
727 | | - case D3DTRANSFORMSTATE_TEXTURE0:
|
728 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE0");
|
729 | | - break;
|
730 | | - case D3DTRANSFORMSTATE_TEXTURE1:
|
731 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE1");
|
732 | | - break;
|
733 | | - case D3DTRANSFORMSTATE_TEXTURE2:
|
734 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE2");
|
735 | | - break;
|
736 | | - case D3DTRANSFORMSTATE_TEXTURE3:
|
737 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE3");
|
738 | | - break;
|
739 | | - case D3DTRANSFORMSTATE_TEXTURE4:
|
740 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE4");
|
741 | | - break;
|
742 | | - case D3DTRANSFORMSTATE_TEXTURE5:
|
743 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE5");
|
744 | | - break;
|
745 | | - case D3DTRANSFORMSTATE_TEXTURE6:
|
746 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE6");
|
747 | | - break;
|
748 | | - case D3DTRANSFORMSTATE_TEXTURE7:
|
749 | | - strcpy(str,"D3DTRANSFORMSTATE_TEXTURE7");
|
750 | | - break;
|
751 | | - default:
|
752 | | - sprintf(str,"(D3DTRANSFORMSTATETYPE)%u",ts);
|
753 | | - break;
|
754 | | - }
|
755 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
756 | | -}
|
757 | | -
|
758 | | -static void trace_decode_d3dlightstate(DWORD ls)
|
759 | | -{
|
760 | | - DWORD byteswritten;
|
761 | | - char str[64];
|
762 | | - switch(ls)
|
763 | | - {
|
764 | | - case D3DLIGHTSTATE_MATERIAL:
|
765 | | - strcpy(str,"D3DLIGHTSTATE_MATERIAL");
|
766 | | - break;
|
767 | | - case D3DLIGHTSTATE_AMBIENT:
|
768 | | - strcpy(str,"D3DLIGHTSTATE_AMBIENT");
|
769 | | - break;
|
770 | | - case D3DLIGHTSTATE_COLORMODEL:
|
771 | | - strcpy(str,"D3DLIGHTSTATE_COLORMODEL");
|
772 | | - break;
|
773 | | - case D3DLIGHTSTATE_FOGMODE:
|
774 | | - strcpy(str,"D3DLIGHTSTATE_FOGMODE");
|
775 | | - break;
|
776 | | - case D3DLIGHTSTATE_FOGSTART:
|
777 | | - strcpy(str,"D3DLIGHTSTATE_FOGSTART");
|
778 | | - break;
|
779 | | - case D3DLIGHTSTATE_FOGEND:
|
780 | | - strcpy(str,"D3DLIGHTSTATE_FOGEND");
|
781 | | - break;
|
782 | | - case D3DLIGHTSTATE_FOGDENSITY:
|
783 | | - strcpy(str,"D3DLIGHTSTATE_FOGDENSITY");
|
784 | | - break;
|
785 | | - case D3DLIGHTSTATE_COLORVERTEX:
|
786 | | - strcpy(str,"D3DLIGHTSTATE_COLORVERTEX");
|
787 | | - break;
|
788 | | - default:
|
789 | | - sprintf(str,"(D3DTRANSFORMSTATETYPE)%u",ls);
|
790 | | - break;
|
791 | | - }
|
792 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
793 | | -}
|
794 | | -
|
795 | | -static void trace_decode_guid(GUID *guid)
|
796 | | -{
|
797 | | - DWORD byteswritten;
|
798 | | - char str[64];
|
799 | | - if(*guid == CLSID_DirectDraw) strcpy(str,"CLSID_DirectDraw");
|
800 | | - else if(*guid == CLSID_DirectDraw7) strcpy(str,"CLSID_DirectDraw7");
|
801 | | - else if(*guid == CLSID_DirectDrawClipper) strcpy(str,"CLSID_DirectDrawClipper");
|
802 | | - else if(*guid == IID_IDirectDraw) strcpy(str,"IID_IDirectDraw");
|
803 | | - else if(*guid == IID_IDirectDraw2) strcpy(str,"IID_IDirectDraw2");
|
804 | | - else if(*guid == IID_IDirectDraw4) strcpy(str,"IID_IDirectDraw4");
|
805 | | - else if(*guid == IID_IDirectDraw7) strcpy(str,"IID_IDirectDraw7");
|
806 | | - else if(*guid == IID_IDirectDrawSurface) strcpy(str,"IID_IDirectDrawSurface");
|
807 | | - else if(*guid == IID_IDirectDrawSurface2) strcpy(str,"IID_IDirectDrawSurface2");
|
808 | | - else if(*guid == IID_IDirectDrawSurface3) strcpy(str,"IID_IDirectDrawSurface3");
|
809 | | - else if(*guid == IID_IDirectDrawSurface4) strcpy(str,"IID_IDirectDrawSurface4");
|
810 | | - else if(*guid == IID_IDirectDrawSurface7) strcpy(str,"IID_IDirectDrawSurface7");
|
811 | | - else if(*guid == IID_IDirectDrawPalette) strcpy(str,"IID_IDirectDrawPalette");
|
812 | | - else if(*guid == IID_IDirectDrawClipper) strcpy(str,"IID_IDirectDrawClipper");
|
813 | | - else if(*guid == IID_IDirectDrawColorControl) strcpy(str,"IID_IDirectDrawColorControl");
|
814 | | - else if(*guid == IID_IDirectDrawGammaControl) strcpy(str,"IID_IDirectDrawGammaControl");
|
815 | | - else if(*guid == IID_IDirect3D) strcpy(str,"IID_IDirect3D");
|
816 | | - else if(*guid == IID_IDirect3D2) strcpy(str,"IID_IDirect3D2");
|
817 | | - else if(*guid == IID_IDirect3D3) strcpy(str,"IID_IDirect3D3");
|
818 | | - else if(*guid == IID_IDirect3D7) strcpy(str,"IID_IDirect3D7");
|
819 | | - else
|
820 | | - {
|
821 | | - OLECHAR guidstr[41] = {0};
|
822 | | - StringFromGUID2(*guid,guidstr,40);
|
823 | | - WideCharToMultiByte(CP_UTF8,0,guidstr,-1,str,64,NULL,NULL);
|
824 | | - }
|
825 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
826 | | -}
|
827 | | -static void trace_decode_size(SIZE *size)
|
828 | | -{
|
829 | | - DWORD byteswritten;
|
830 | | - char str[64];
|
831 | | - sprintf(str,"{%d,%d}",size->cx,size->cy);
|
832 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
833 | | -}
|
834 | | -static void trace_decode_rect(RECT *rect)
|
835 | | -{
|
836 | | - DWORD byteswritten;
|
837 | | - char str[64];
|
838 | | - sprintf(str,"{%d,%d,%d,%d}",rect->left,rect->top,rect->right,rect->bottom);
|
839 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
840 | | -}
|
841 | | -static void init_trace()
|
842 | | -{
|
843 | | - TCHAR path[MAX_PATH+1];
|
844 | | - InitializeCriticalSection(&trace_cs);
|
845 | | - GetModuleFileName(NULL,path,MAX_PATH);
|
846 | | - TCHAR *path_truncate = _tcsrchr(path,_T('\\'));
|
847 | | - if(path_truncate) *(path_truncate+1) = 0;
|
848 | | - _tcscat(path,_T("dxgl.log"));
|
849 | | - outfile = CreateFile(path,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
|
850 | | - if(outfile == INVALID_HANDLE_VALUE)
|
851 | | - {
|
852 | | - trace_fail = true;
|
853 | | - return;
|
854 | | - }
|
855 | | - trace_ready = true;
|
856 | | -}
|
857 | | -static void trace_decode_arg(int type, void *arg)
|
858 | | -{
|
859 | | - DWORD byteswritten;
|
860 | | - char str[128];
|
861 | | - char *mbcsbuffer;
|
862 | | - int buffersize;
|
863 | | - str[0] = 0;
|
864 | | - switch(type)
|
865 | | - {
|
866 | | - case -1: // C++ constructor/destructor
|
867 | | - // No return type in a constructor or destructor.
|
868 | | - break;
|
869 | | - case 0: // void
|
870 | | - WriteFile(outfile,"void",4,&byteswritten,NULL);
|
871 | | - break;
|
872 | | - case 1: // 8-bit signed
|
873 | | - sprintf(str,"%d",(signed char)arg);
|
874 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
875 | | - break;
|
876 | | - case 2: // 8-bit unsigned
|
877 | | - sprintf(str,"%u",(unsigned char)arg);
|
878 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
879 | | - break;
|
880 | | - case 3: // 8-bit hex
|
881 | | - sprintf(str,"0x%02X",(unsigned char)arg);
|
882 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
883 | | - break;
|
884 | | - case 4: // 16-bit signed
|
885 | | - sprintf(str,"%d",(signed short)arg);
|
886 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
887 | | - break;
|
888 | | - case 5: // 16-bit unsigned
|
889 | | - sprintf(str,"%u",(unsigned short)arg);
|
890 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
891 | | - break;
|
892 | | - case 6: // 16-bit hex
|
893 | | - sprintf(str,"0x%04X",(unsigned short)arg);
|
894 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
895 | | - break;
|
896 | | - case 7: // 32-bit signed
|
897 | | - sprintf(str,"%d",(signed long)arg);
|
898 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
899 | | - break;
|
900 | | - case 8: // 32-bit unsigned
|
901 | | - sprintf(str,"%u",(unsigned long)arg);
|
902 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
903 | | - break;
|
904 | | - case 9: // 32-bit hex
|
905 | | - sprintf(str,"0x%08X",(unsigned long)arg);
|
906 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
907 | | - break;
|
908 | | - case 10: // pointer to 64-bit hex
|
909 | | - sprintf(str,"0x%016I64X",(unsigned __int64)*(unsigned __int64*)arg);
|
910 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
911 | | - break;
|
912 | | - case 11: // native signed
|
913 | | - sprintf(str,"%d",(signed int)arg);
|
914 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
915 | | - break;
|
916 | | - case 12: // native unsigned
|
917 | | - sprintf(str,"%u",(unsigned int)arg);
|
918 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
919 | | - break;
|
920 | | - case 13: // native hex
|
921 | | - sprintf(str,"0x%08X",(unsigned int)arg);
|
922 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
923 | | - break;
|
924 | | - case 14: // generic pointer
|
925 | | - if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
926 | | - else
|
927 | | - {
|
928 | | -#ifdef _M_X64
|
929 | | - sprintf(str,"0x%016I64X",arg);
|
930 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
931 | | -#else
|
932 | | - sprintf(str,"0x%08X",arg);
|
933 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
934 | | -#endif
|
935 | | - }
|
936 | | - break;
|
937 | | - case 15: // ASCII string
|
938 | | - if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
939 | | - else
|
940 | | - {
|
941 | | - WriteFile(outfile,"\"",1,&byteswritten,NULL);
|
942 | | - WriteFile(outfile,arg,strlen((char*)arg),&byteswritten,NULL);
|
943 | | - WriteFile(outfile,"\"",1,&byteswritten,NULL);
|
944 | | - }
|
945 | | - break;
|
946 | | - case 16: // Unicode string
|
947 | | - if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
948 | | - else
|
949 | | - {
|
950 | | - WriteFile(outfile,"L\"",1,&byteswritten,NULL);
|
951 | | - buffersize = WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,NULL,0,NULL,NULL);
|
952 | | - mbcsbuffer = (char*)malloc(buffersize);
|
953 | | - if(!mbcsbuffer) WriteFile(outfile,"OUT OF MEMORY",13,&byteswritten,NULL);
|
954 | | - else
|
955 | | - {
|
956 | | - WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,mbcsbuffer,buffersize,NULL,NULL);
|
957 | | - WriteFile(outfile,mbcsbuffer,strlen(mbcsbuffer),&byteswritten,NULL);
|
958 | | - free(mbcsbuffer);
|
959 | | - }
|
960 | | - WriteFile(outfile,"\"",1,&byteswritten,NULL);
|
961 | | - }
|
962 | | - break;
|
963 | | - case 17: // TCHAR string
|
964 | | - if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
965 | | -#ifdef _UNICODE
|
966 | | - else
|
967 | | - {
|
968 | | - WriteFile(outfile,"_T(\"",1,&byteswritten,NULL);
|
969 | | - buffersize = WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,NULL,0,NULL,NULL);
|
970 | | - mbcsbuffer = (char*)malloc(buffersize);
|
971 | | - if(!mbcsbuffer) WriteFile(outfile,"OUT OF MEMORY",13,&byteswritten,NULL);
|
972 | | - else
|
973 | | - {
|
974 | | - WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,mbcsbuffer,buffersize,NULL,NULL);
|
975 | | - WriteFile(outfile,mbcsbuffer,strlen(mbcsbuffer),&byteswritten,NULL);
|
976 | | - free(mbcsbuffer);
|
977 | | - }
|
978 | | - WriteFile(outfile,"\")",1,&byteswritten,NULL);
|
979 | | - }
|
980 | | -#else
|
981 | | - else
|
982 | | - {
|
983 | | - WriteFile(outfile,"_T(\"",1,&byteswritten,NULL);
|
984 | | - WriteFile(outfile,arg,strlen((char*)arg),&byteswritten,NULL);
|
985 | | - WriteFile(outfile,"\")",1,&byteswritten,NULL);
|
986 | | - }
|
987 | | -#endif
|
988 | | - break;
|
989 | | - case 18: // ASCII character
|
990 | | - if(!(unsigned char)arg) WriteFile(outfile,"\'\\0\'",4,&byteswritten,NULL);
|
991 | | - else
|
992 | | - {
|
993 | | - str[0] = str[2] = '\'';
|
994 | | - str[1] = (unsigned char)arg;
|
995 | | - str[3] = NULL;
|
996 | | - WriteFile(outfile,str,3,&byteswritten,NULL);
|
997 | | - }
|
998 | | - break;
|
999 | | - case 19: // pointer to 32 bit float
|
1000 | | - sprintf(str,"%f",arg);
|
1001 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
1002 | | - break;
|
1003 | | - case 20: // pointer to 64 bit float
|
1004 | | - sprintf(str,"%lf",arg);
|
1005 | | - WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
1006 | | - break;
|
1007 | | - case 21: // c++ bool
|
1008 | | - if((bool)arg) WriteFile(outfile,"true",4,&byteswritten,NULL);
|
1009 | | - else WriteFile(outfile,"false",5,&byteswritten,NULL);
|
1010 | | - break;
|
1011 | | - case 22: // c++ bool
|
1012 | | - if(arg) WriteFile(outfile,"TRUE",4,&byteswritten,NULL);
|
1013 | | - else WriteFile(outfile,"FALSE",5,&byteswritten,NULL);
|
1014 | | - break;
|
1015 | | - case 23: // HRESULT
|
1016 | | - trace_decode_hresult((HRESULT)arg);
|
1017 | | - break;
|
1018 | | - case 24: // GUID pointer
|
1019 | | - if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
1020 | | - else if(arg == (void*)DDCREATE_HARDWAREONLY) WriteFile(outfile,"DDCREATE_HARDWAREONLY",21,&byteswritten,NULL);
|
1021 | | - else if(arg == (void*)DDCREATE_EMULATIONONLY) WriteFile(outfile,"DDCREATE_EMULATIONONLY",22,&byteswritten,NULL);
|
1022 | | - else trace_decode_guid((GUID*)arg);
|
1023 | | - break;
|
1024 | | - case 25: // SIZE or POINT pointer
|
1025 | | - if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
1026 | | - else trace_decode_size((SIZE*)arg);
|
1027 | | - break;
|
1028 | | - case 26: // RECT pointer
|
1029 | | - if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
1030 | | - else trace_decode_rect((RECT*)arg);
|
1031 | | - break;
|
1032 | | - case 27: // D3DRENDERSTATETYPE
|
1033 | | - trace_decode_d3drenderstate((DWORD)arg);
|
1034 | | - break;
|
1035 | | - case 28: // D3DTEXTURESTAGESTATETYPE
|
1036 | | - trace_decode_d3dtexturestagestate((DWORD)arg);
|
1037 | | - break;
|
1038 | | - case 29: // D3DTRANSFORMSTATETYPE
|
1039 | | - trace_decode_d3dtransformstate((DWORD)arg);
|
1040 | | - break;
|
1041 | | - case 30: // D3DLIGHTSTATETYPE
|
1042 | | - trace_decode_d3dlightstate((DWORD)arg);
|
1043 | | - break;
|
1044 | | - default:
|
1045 | | - WriteFile(outfile,"Unknown type",12,&byteswritten,NULL);
|
1046 | | - break;
|
1047 | | - }
|
1048 | | -}
|
1049 | | -static void end_trace()
|
1050 | | -{
|
1051 | | - DWORD byteswritten;
|
1052 | | - WriteFile(outfile,"Trace cancelled by CTRL+Break\r\n",31,&byteswritten,NULL);
|
1053 | | - CloseHandle(outfile);
|
1054 | | - outfile = INVALID_HANDLE_VALUE;
|
1055 | | - trace_fail = true;
|
1056 | | -}
|
1057 | | -void trace_enter(const char *function, int paramcount, ...)
|
1058 | | -{
|
1059 | | - if(trace_fail) return;
|
1060 | | - if(!trace_ready) init_trace();
|
1061 | | - EnterCriticalSection(&trace_cs);
|
1062 | | - if(trace_end)
|
1063 | | - {
|
1064 | | - end_trace();
|
1065 | | - LeaveCriticalSection(&trace_cs);
|
1066 | | - return;
|
1067 | | - }
|
1068 | | - va_list args;
|
1069 | | - va_start(args,paramcount);
|
1070 | | - DWORD byteswritten;
|
1071 | | - for(unsigned int i = 0; i < trace_depth; i++)
|
1072 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1073 | | - WriteFile(outfile,function,strlen(function),&byteswritten,NULL);
|
1074 | | - WriteFile(outfile,"(",1,&byteswritten,NULL);
|
1075 | | - for(int i = 0; i < paramcount; i++)
|
1076 | | - {
|
1077 | | - if(i != 0) WriteFile(outfile,", ",2,&byteswritten,NULL);
|
1078 | | - int argtype = va_arg(args,int);
|
1079 | | - trace_decode_arg(argtype,va_arg(args,void*));
|
1080 | | - }
|
1081 | | - WriteFile(outfile,");\r\n",4,&byteswritten,NULL);
|
1082 | | - trace_depth++;
|
1083 | | - LeaveCriticalSection(&trace_cs);
|
1084 | | -}
|
1085 | | -void trace_exit(const char *function, int argtype, void *arg)
|
1086 | | -{
|
1087 | | - if(trace_fail) return;
|
1088 | | - if(!trace_ready) init_trace();
|
1089 | | - EnterCriticalSection(&trace_cs);
|
1090 | | - if(trace_end)
|
1091 | | - {
|
1092 | | - end_trace();
|
1093 | | - LeaveCriticalSection(&trace_cs);
|
1094 | | - return;
|
1095 | | - }
|
1096 | | - if(trace_depth) trace_depth--;
|
1097 | | - DWORD byteswritten;
|
1098 | | - for(unsigned int i = 0; i < trace_depth; i++)
|
1099 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1100 | | - WriteFile(outfile,function,strlen(function),&byteswritten,NULL);
|
1101 | | - WriteFile(outfile," returned ",10,&byteswritten,NULL);
|
1102 | | - trace_decode_arg(argtype,arg);
|
1103 | | - WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
1104 | | - LeaveCriticalSection(&trace_cs);
|
1105 | | -}
|
1106 | | -void *trace_ret(const char *function, int argtype, void *arg)
|
1107 | | -{
|
1108 | | - trace_exit(function,argtype,arg);
|
1109 | | - return arg;
|
1110 | | -}
|
1111 | | -void trace_var(const char *function, const char *var, int argtype, void *arg)
|
1112 | | -{
|
1113 | | - if(trace_fail) return;
|
1114 | | - if(!trace_ready) init_trace();
|
1115 | | - EnterCriticalSection(&trace_cs);
|
1116 | | - if(trace_end)
|
1117 | | - {
|
1118 | | - end_trace();
|
1119 | | - LeaveCriticalSection(&trace_cs);
|
1120 | | - return;
|
1121 | | - }
|
1122 | | - DWORD byteswritten;
|
1123 | | - for(unsigned int i = 0; i < trace_depth-1; i++)
|
1124 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1125 | | - WriteFile(outfile,function,strlen(function),&byteswritten,NULL);
|
1126 | | - WriteFile(outfile,": ",2,&byteswritten,NULL);
|
1127 | | - WriteFile(outfile,var,strlen(var),&byteswritten,NULL);
|
1128 | | - WriteFile(outfile," set to ",8,&byteswritten,NULL);
|
1129 | | - trace_decode_arg(argtype,arg);
|
1130 | | - WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
1131 | | - LeaveCriticalSection(&trace_cs);
|
1132 | | -}
|
1133 | | -
|
1134 | | -void trace_sysinfo()
|
1135 | | -{
|
1136 | | - if(trace_fail) return;
|
1137 | | - if(!trace_ready) init_trace();
|
1138 | | - EnterCriticalSection(&trace_cs);
|
1139 | | - if(trace_end)
|
1140 | | - {
|
1141 | | - end_trace();
|
1142 | | - LeaveCriticalSection(&trace_cs);
|
1143 | | - return;
|
1144 | | - }
|
1145 | | - DWORD byteswritten;
|
1146 | | - OSVERSIONINFOA osver;
|
1147 | | - DWORD buildver;
|
1148 | | - char osstring[256];
|
1149 | | - osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
|
1150 | | - GetVersionExA(&osver);
|
1151 | | - if(osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) buildver = LOWORD(osver.dwBuildNumber);
|
1152 | | - else buildver = osver.dwBuildNumber;
|
1153 | | - if((osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) || (osver.dwPlatformId == VER_PLATFORM_WIN32s))
|
1154 | | - sprintf(osstring,"Windows %u.%u.%u",osver.dwMajorVersion,osver.dwMinorVersion,buildver);
|
1155 | | - else sprintf(osstring,"Windows NT %u.%u.%u",osver.dwMajorVersion,osver.dwMinorVersion,buildver);
|
1156 | | - if(osver.szCSDVersion[0])
|
1157 | | - {
|
1158 | | - strcat(osstring,", ");
|
1159 | | - strcat(osstring,osver.szCSDVersion);
|
1160 | | - }
|
1161 | | - if(((osver.dwMajorVersion == 5) && (osver.dwMinorVersion >= 1)) || (osver.dwMajorVersion >= 6))
|
1162 | | - {
|
1163 | | - strcat(osstring,", ");
|
1164 | | - HMODULE hKernel32 = LoadLibrary(_T("kernel32.dll"));
|
1165 | | - BOOL (WINAPI *iswow64)(HANDLE,PBOOL) = NULL;
|
1166 | | - if(hKernel32) iswow64 = (BOOL(WINAPI*)(HANDLE,PBOOL))GetProcAddress(hKernel32,"IsWow64Process");
|
1167 | | - BOOL is64 = FALSE;
|
1168 | | - if(iswow64) iswow64(GetCurrentProcess(),&is64);
|
1169 | | - if(hKernel32) FreeLibrary(hKernel32);
|
1170 | | - if(is64) strcat(osstring,"64-bit");
|
1171 | | - else strcat(osstring,"32-bit");
|
1172 | | - }
|
1173 | | - strcat(osstring,"\r\n");
|
1174 | | - for(unsigned int i = 0; i < trace_depth-1; i++)
|
1175 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1176 | | - WriteFile(outfile,"Windows version: ",18,&byteswritten,NULL);
|
1177 | | - WriteFile(outfile,osstring,strlen(osstring),&byteswritten,NULL);
|
1178 | | - for(unsigned int i = 0; i < trace_depth-1; i++)
|
1179 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1180 | | - WriteFile(outfile,"GL_VENDOR: ",12,&byteswritten,NULL);
|
1181 | | - const GLubyte *glstring;
|
1182 | | - glstring = glGetString(GL_VENDOR);
|
1183 | | - if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
1184 | | - WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
1185 | | - for(unsigned int i = 0; i < trace_depth-1; i++)
|
1186 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1187 | | - WriteFile(outfile,"GL_RENDERER: ",14,&byteswritten,NULL);
|
1188 | | - glstring = glGetString(GL_RENDERER);
|
1189 | | - if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
1190 | | - WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
1191 | | - for(unsigned int i = 0; i < trace_depth-1; i++)
|
1192 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1193 | | - WriteFile(outfile,"GL_VERSION: ",13,&byteswritten,NULL);
|
1194 | | - glstring = glGetString(GL_VERSION);
|
1195 | | - if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
1196 | | - WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
1197 | | - for(unsigned int i = 0; i < trace_depth-1; i++)
|
1198 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1199 | | - WriteFile(outfile,"GL_SHADING_LANGUAGE_VERSION: ",30,&byteswritten,NULL);
|
1200 | | - glstring = glGetString(GL_SHADING_LANGUAGE_VERSION);
|
1201 | | - if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
1202 | | - WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
1203 | | - for(unsigned int i = 0; i < trace_depth-1; i++)
|
1204 | | - WriteFile(outfile," ",4,&byteswritten,NULL);
|
1205 | | - WriteFile(outfile,"GL_EXTENSIONS: ",16,&byteswritten,NULL);
|
1206 | | - glstring = glGetString(GL_EXTENSIONS);
|
1207 | | - if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
1208 | | - WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
1209 | | - LeaveCriticalSection(&trace_cs);
|
1210 | | -}
|
1211 | | -#endif |
\ No newline at end of file |
Index: ddraw/common.h |
— | — | @@ -31,10 +31,17 @@ |
32 | 32 | #include "include/GL/glext.h"
|
33 | 33 | #include "include/GL/wglext.h"
|
34 | 34 | #include "glExtensions.h"
|
| 35 | +#ifdef __cplusplus
|
35 | 36 | #include "ShaderManager.h"
|
| 37 | +#endif
|
36 | 38 |
|
37 | 39 | extern const GUID device_template;
|
38 | 40 |
|
| 41 | +#ifdef _MSC_VER
|
| 42 | +#define INLINE __inline
|
| 43 | +#else
|
| 44 | +#define INLINE __inline__
|
| 45 | +#endif
|
39 | 46 |
|
40 | 47 | #ifdef _DEBUG
|
41 | 48 | #define DEBUGBREAK DebugBreak();
|
— | — | @@ -79,10 +86,10 @@ |
80 | 87 | #define ERR(error) return error;
|
81 | 88 | #endif
|
82 | 89 |
|
83 | | -static inline int NextMultipleOf8(int number){return ((number+7) & (~7));}
|
84 | | -static inline int NextMultipleOf4(int number){return ((number+3) & (~3));}
|
85 | | -static inline int NextMultipleOf2(int number){return ((number+1) & (~1));}
|
86 | | -static inline void dwordto4float(DWORD in, GLfloat *out)
|
| 90 | +static INLINE int NextMultipleOf8(int number){return ((number+7) & (~7));}
|
| 91 | +static INLINE int NextMultipleOf4(int number){return ((number+3) & (~3));}
|
| 92 | +static INLINE int NextMultipleOf2(int number){return ((number+1) & (~1));}
|
| 93 | +static INLINE void dwordto4float(DWORD in, GLfloat *out)
|
87 | 94 | {
|
88 | 95 | out[0] = (GLfloat)((in>>16) & 0xff) / 255.0f;
|
89 | 96 | out[1] = (GLfloat)((in>>8) & 0xff) / 255.0f;
|
— | — | @@ -90,7 +97,7 @@ |
91 | 98 | out[3] = (GLfloat)((in>>24) & 0xff) / 255.0f;
|
92 | 99 | }
|
93 | 100 |
|
94 | | -static inline void dwordto4int(DWORD in, GLint *out)
|
| 101 | +static INLINE void dwordto4int(DWORD in, GLint *out)
|
95 | 102 | {
|
96 | 103 | out[0] = (GLint)((in>>16) & 0xff);
|
97 | 104 | out[1] = (GLint)((in>>8) & 0xff);
|
— | — | @@ -107,6 +114,7 @@ |
108 | 115 | extern CRITICAL_SECTION dll_cs;
|
109 | 116 |
|
110 | 117 | #include "trace.h"
|
111 | | -
|
| 118 | +#ifdef __cplusplus
|
112 | 119 | #include "../cfgmgr/cfgmgr.h"
|
| 120 | +#endif
|
113 | 121 | #endif //_COMMON_H
|
Index: ddraw/ddraw.vcxproj |
— | — | @@ -345,7 +345,9 @@ |
346 | 346 | <ClCompile Include="glDirectDrawClipper.cpp" />
|
347 | 347 | <ClCompile Include="glDirectDrawPalette.cpp" />
|
348 | 348 | <ClCompile Include="glDirectDrawSurface.cpp" />
|
349 | | - <ClCompile Include="glExtensions.cpp" />
|
| 349 | + <ClCompile Include="glExtensions.c">
|
| 350 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Trace|Win32'">NotUsing</PrecompiledHeader>
|
| 351 | + </ClCompile>
|
350 | 352 | <ClCompile Include="glRenderer.cpp" />
|
351 | 353 | <ClCompile Include="glRenderWindow.cpp" />
|
352 | 354 | <ClCompile Include="glUtil.cpp" />
|
— | — | @@ -364,7 +366,9 @@ |
365 | 367 | <ClCompile Include="ShaderManager.cpp" />
|
366 | 368 | <ClCompile Include="TextureManager.cpp" />
|
367 | 369 | <ClCompile Include="timer.cpp" />
|
368 | | - <ClCompile Include="trace.cpp" />
|
| 370 | + <ClCompile Include="trace.c">
|
| 371 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Trace|Win32'">NotUsing</PrecompiledHeader>
|
| 372 | + </ClCompile>
|
369 | 373 | <ClCompile Include="util.cpp" />
|
370 | 374 | </ItemGroup>
|
371 | 375 | <ItemGroup>
|
Index: ddraw/ddraw.vcxproj.filters |
— | — | @@ -157,9 +157,6 @@ |
158 | 158 | <ClCompile Include="glDirectDrawPalette.cpp">
|
159 | 159 | <Filter>Source Files</Filter>
|
160 | 160 | </ClCompile>
|
161 | | - <ClCompile Include="glExtensions.cpp">
|
162 | | - <Filter>Source Files</Filter>
|
163 | | - </ClCompile>
|
164 | 161 | <ClCompile Include="precomp.cpp">
|
165 | 162 | <Filter>Source Files</Filter>
|
166 | 163 | </ClCompile>
|
— | — | @@ -205,9 +202,6 @@ |
206 | 203 | <ClCompile Include="glDirect3DExecuteBuffer.cpp">
|
207 | 204 | <Filter>Source Files</Filter>
|
208 | 205 | </ClCompile>
|
209 | | - <ClCompile Include="trace.cpp">
|
210 | | - <Filter>Source Files</Filter>
|
211 | | - </ClCompile>
|
212 | 206 | <ClCompile Include="util.cpp">
|
213 | 207 | <Filter>Source Files</Filter>
|
214 | 208 | </ClCompile>
|
— | — | @@ -229,6 +223,12 @@ |
230 | 224 | <ClCompile Include="ShaderGen3D.cpp">
|
231 | 225 | <Filter>Source Files</Filter>
|
232 | 226 | </ClCompile>
|
| 227 | + <ClCompile Include="glExtensions.c">
|
| 228 | + <Filter>Source Files</Filter>
|
| 229 | + </ClCompile>
|
| 230 | + <ClCompile Include="trace.c">
|
| 231 | + <Filter>Source Files</Filter>
|
| 232 | + </ClCompile>
|
233 | 233 | </ItemGroup>
|
234 | 234 | <ItemGroup>
|
235 | 235 | <ResourceCompile Include="ddraw.rc">
|
Index: ddraw/glExtensions.c |
— | — | @@ -0,0 +1,172 @@ |
| 2 | +// DXGL
|
| 3 | +// Copyright (C) 2011-2014 William Feely
|
| 4 | +
|
| 5 | +// This library is free software; you can redistribute it and/or
|
| 6 | +// modify it under the terms of the GNU Lesser General Public
|
| 7 | +// License as published by the Free Software Foundation; either
|
| 8 | +// version 2.1 of the License, or (at your option) any later version.
|
| 9 | +
|
| 10 | +// This library is distributed in the hope that it will be useful,
|
| 11 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 12 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 13 | +// Lesser General Public License for more details.
|
| 14 | +
|
| 15 | +// You should have received a copy of the GNU Lesser General Public
|
| 16 | +// License along with this library; if not, write to the Free Software
|
| 17 | +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
| 18 | +
|
| 19 | +#include "common.h"
|
| 20 | +#include "glExtensions.h"
|
| 21 | +
|
| 22 | +
|
| 23 | +void glExtensions_Init(glExtensions *ext)
|
| 24 | +{
|
| 25 | + const GLubyte *glversion;
|
| 26 | + const GLubyte *glextensions;
|
| 27 | + BOOL broken_fbo;
|
| 28 | + ZeroMemory(ext, sizeof(glExtensions));
|
| 29 | + ext->atimem = FALSE;
|
| 30 | + glversion = glGetString(GL_VERSION);
|
| 31 | + ext->glver_minor = 0;
|
| 32 | + if(!sscanf((char*)glversion,"%d.%d",&ext->glver_major,&ext->glver_minor)) ext->glver_major = 0;
|
| 33 | + if((ext->glver_major >= 2) || ((ext->glver_major >= 1) && (ext->glver_minor >= 2)))
|
| 34 | + ext->glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)wglGetProcAddress("glDrawRangeElements");
|
| 35 | + if((ext->glver_major >= 2) || ((ext->glver_major >= 1) && (ext->glver_minor >= 3)))
|
| 36 | + {
|
| 37 | + ext->glActiveTexture = (PFNGLACTIVETEXTUREPROC)wglGetProcAddress("glActiveTexture");
|
| 38 | + ext->glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)wglGetProcAddress("glClientActiveTexture");
|
| 39 | + }
|
| 40 | + if((ext->glver_major >= 2) || ((ext->glver_major >= 1) && (ext->glver_minor >= 5)))
|
| 41 | + {
|
| 42 | + ext->glGenBuffers = (PFNGLGENBUFFERSPROC)wglGetProcAddress("glGenBuffers");
|
| 43 | + ext->glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)wglGetProcAddress("glDeleteBuffers");
|
| 44 | + ext->glBindBuffer = (PFNGLBINDBUFFERPROC)wglGetProcAddress("glBindBuffer");
|
| 45 | + ext->glBufferData = (PFNGLBUFFERDATAPROC)wglGetProcAddress("glBufferData");
|
| 46 | + ext->glMapBuffer = (PFNGLMAPBUFFERPROC)wglGetProcAddress("glMapBuffer");
|
| 47 | + ext->glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)wglGetProcAddress("glUnmapBuffer");
|
| 48 | + }
|
| 49 | + if(ext->glver_major >= 2)
|
| 50 | + {
|
| 51 | + ext->glCreateShader = (PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader");
|
| 52 | + ext->glShaderSource = (PFNGLSHADERSOURCEPROC)wglGetProcAddress("glShaderSource");
|
| 53 | + ext->glCompileShader = (PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader");
|
| 54 | + ext->glDeleteShader = (PFNGLDELETESHADERPROC)wglGetProcAddress("glDeleteShader");
|
| 55 | + ext->glCreateProgram = (PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");
|
| 56 | + ext->glDeleteProgram = (PFNGLDELETEPROGRAMPROC)wglGetProcAddress("glDeleteProgram");
|
| 57 | + ext->glGetProgramiv = (PFNGLGETPROGRAMIVPROC)wglGetProcAddress("glGetProgramiv");
|
| 58 | + ext->glAttachShader = (PFNGLATTACHSHADERPROC)wglGetProcAddress("glAttachShader");
|
| 59 | + ext->glDetachShader = (PFNGLDETACHSHADERPROC)wglGetProcAddress("glDetachShader");
|
| 60 | + ext->glLinkProgram = (PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram");
|
| 61 | + ext->glUseProgram = (PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram");
|
| 62 | + ext->glGetShaderiv = (PFNGLGETSHADERIVPROC)wglGetProcAddress("glGetShaderiv");
|
| 63 | + ext->glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)wglGetProcAddress("glGetShaderInfoLog");
|
| 64 | + ext->glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)wglGetProcAddress("glGetProgramInfoLog");
|
| 65 | + ext->glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)wglGetProcAddress("glGetUniformLocation");
|
| 66 | + ext->glUniform1i = (PFNGLUNIFORM1IPROC)wglGetProcAddress("glUniform1i");
|
| 67 | + ext->glUniform2i = (PFNGLUNIFORM2IPROC)wglGetProcAddress("glUniform2i");
|
| 68 | + ext->glUniform3i = (PFNGLUNIFORM3IPROC)wglGetProcAddress("glUniform3i");
|
| 69 | + ext->glUniform4i = (PFNGLUNIFORM4IPROC)wglGetProcAddress("glUniform4i");
|
| 70 | + ext->glUniform4iv = (PFNGLUNIFORM4IVPROC)wglGetProcAddress("glUniform4iv");
|
| 71 | + ext->glUniform1f = (PFNGLUNIFORM1FPROC)wglGetProcAddress("glUniform1f");
|
| 72 | + ext->glUniform2f = (PFNGLUNIFORM2FPROC)wglGetProcAddress("glUniform2f");
|
| 73 | + ext->glUniform3f = (PFNGLUNIFORM3FPROC)wglGetProcAddress("glUniform3f");
|
| 74 | + ext->glUniform4f = (PFNGLUNIFORM4FPROC)wglGetProcAddress("glUniform4f");
|
| 75 | + ext->glUniform3fv = (PFNGLUNIFORM3FVPROC)wglGetProcAddress("glUniform3fv");
|
| 76 | + ext->glUniform4fv = (PFNGLUNIFORM4FVPROC)wglGetProcAddress("glUniform4fv");
|
| 77 | + ext->glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)wglGetProcAddress("glUniformMatrix3fv");
|
| 78 | + ext->glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)wglGetProcAddress("glUniformMatrix4fv");
|
| 79 | + ext->glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)wglGetProcAddress("glGetAttribLocation");
|
| 80 | + ext->glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)wglGetProcAddress("glVertexAttribPointer");
|
| 81 | + ext->glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)wglGetProcAddress("glEnableVertexAttribArray");
|
| 82 | + ext->glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)wglGetProcAddress("glDisableVertexAttribArray");
|
| 83 | + }
|
| 84 | + else
|
| 85 | + {
|
| 86 | + MessageBox(NULL,_T("DXGL requires an OpenGL 2.0 or higher compatible graphics card to function. \
|
| 87 | +Please contact your graphics card manufacturer for an updated driver. This program will now exit."),_T("Fatal error"),
|
| 88 | + MB_OK|MB_ICONERROR);
|
| 89 | + ExitProcess(-1);
|
| 90 | + }
|
| 91 | + glextensions = glGetString(GL_EXTENSIONS);
|
| 92 | + if(strstr((char*)glextensions,"GL_ARB_framebuffer_object") || (ext->glver_major >= 3)) ext->GLEXT_ARB_framebuffer_object = 1;
|
| 93 | + else ext->GLEXT_ARB_framebuffer_object = 0;
|
| 94 | + if(strstr((char*)glextensions,"GL_EXT_framebuffer_object")) ext->GLEXT_EXT_framebuffer_object = 1;
|
| 95 | + else ext->GLEXT_EXT_framebuffer_object = 0;
|
| 96 | + if(strstr((char*)glextensions,"GL_NV_packed_depth_stencil")) ext->GLEXT_NV_packed_depth_stencil = 1;
|
| 97 | + else ext->GLEXT_NV_packed_depth_stencil = 0;
|
| 98 | + if(strstr((char*)glextensions,"GL_EXT_packed_depth_stencil")) ext->GLEXT_EXT_packed_depth_stencil = 1;
|
| 99 | + else ext->GLEXT_EXT_packed_depth_stencil = 0;
|
| 100 | + if(strstr((char*)glextensions,"GL_ARB_depth_buffer_float") || (ext->glver_major >= 3)) ext->GLEXT_ARB_depth_buffer_float = 1;
|
| 101 | + else ext->GLEXT_ARB_depth_buffer_float = 0;
|
| 102 | + if(strstr((char*)glextensions,"GL_ARB_depth_texture") || (ext->glver_major >= 2)
|
| 103 | + || ((ext->glver_major >= 1) && (ext->glver_minor >= 4))) ext->GLEXT_ARB_depth_texture = 1;
|
| 104 | + else ext->GLEXT_ARB_depth_texture = 0;
|
| 105 | + if(strstr((char*)glextensions,"GL_NVX_gpu_memory_info")) ext->GLEXT_NVX_gpu_memory_info = 1;
|
| 106 | + else ext->GLEXT_NVX_gpu_memory_info = 0;
|
| 107 | + if(strstr((char*)glextensions,"GL_ATI_meminfo")) ext->GLEXT_ATI_meminfo = 1;
|
| 108 | + else ext->GLEXT_ATI_meminfo = 0;
|
| 109 | + if(strstr((char*)glextensions,"GL_ARB_ES2_compatibility") || (ext->glver_major >= 5)
|
| 110 | + || ((ext->glver_major >= 4) && (ext->glver_minor >= 1))) ext->GLEXT_ARB_ES2_compatibility = 1;
|
| 111 | + else ext->GLEXT_ARB_ES2_compatibility = 0;
|
| 112 | + if(strstr((char*)glextensions,"GL_EXT_direct_state_access")) ext->GLEXT_EXT_direct_state_access = 1;
|
| 113 | + else ext->GLEXT_EXT_direct_state_access = 0;
|
| 114 | + if(strstr((char*)glextensions,"GL_ARB_sampler_objects") || (ext->glver_major >= 4)
|
| 115 | + || ((ext->glver_major >= 3) && (ext->glver_minor >= 3))) ext->GLEXT_ARB_sampler_objects = 1;
|
| 116 | + else ext->GLEXT_ARB_sampler_objects = 0;
|
| 117 | + broken_fbo = TRUE;
|
| 118 | + if(ext->GLEXT_ARB_framebuffer_object)
|
| 119 | + {
|
| 120 | + ext->glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)wglGetProcAddress("glGenFramebuffers");
|
| 121 | + if(!ext->glGenFramebuffers) ext->GLEXT_ARB_framebuffer_object = 0;
|
| 122 | + ext->glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)wglGetProcAddress("glBindFramebuffer");
|
| 123 | + ext->glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)wglGetProcAddress("glGenRenderbuffers");
|
| 124 | + ext->glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)wglGetProcAddress("glBindRenderbuffer");
|
| 125 | + ext->glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)wglGetProcAddress("glFramebufferTexture2D");
|
| 126 | + ext->glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)wglGetProcAddress("glCheckFramebufferStatus");
|
| 127 | + ext->glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)wglGetProcAddress("glDeleteFramebuffers");
|
| 128 | + broken_fbo = FALSE;
|
| 129 | + }
|
| 130 | + if(ext->GLEXT_EXT_framebuffer_object)
|
| 131 | + {
|
| 132 | + ext->glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)wglGetProcAddress("glGenFramebuffersEXT");
|
| 133 | + if(!ext->glGenFramebuffersEXT) ext->GLEXT_EXT_framebuffer_object = 0;
|
| 134 | + ext->glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)wglGetProcAddress("glBindFramebufferEXT");
|
| 135 | + ext->glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)wglGetProcAddress("glGenRenderbuffersEXT");
|
| 136 | + ext->glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)wglGetProcAddress("glBindRenderbufferEXT");
|
| 137 | + ext->glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)wglGetProcAddress("glFramebufferTexture2DEXT");
|
| 138 | + ext->glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)wglGetProcAddress("glCheckFramebufferStatusEXT");
|
| 139 | + ext->glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)wglGetProcAddress("glDeleteFramebuffersEXT");
|
| 140 | + broken_fbo = FALSE;
|
| 141 | + }
|
| 142 | + if(ext->GLEXT_EXT_direct_state_access)
|
| 143 | + {
|
| 144 | + ext->glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)wglGetProcAddress("glTextureParameterfEXT");
|
| 145 | + ext->glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)wglGetProcAddress("glTextureParameterfvEXT");
|
| 146 | + ext->glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)wglGetProcAddress("glTextureParameteriEXT");
|
| 147 | + ext->glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)wglGetProcAddress("glTextureParameterivEXT");
|
| 148 | + ext->glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)wglGetProcAddress("glTextureImage2DEXT");
|
| 149 | + ext->glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)wglGetProcAddress("glTextureSubImage2DEXT");
|
| 150 | + ext->glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)wglGetProcAddress("glGetTextureImageEXT");
|
| 151 | + ext->glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)wglGetProcAddress("glMatrixLoadfEXT");
|
| 152 | + ext->glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)wglGetProcAddress("glMatrixMultfEXT");
|
| 153 | + }
|
| 154 | + if(ext->GLEXT_ARB_sampler_objects)
|
| 155 | + {
|
| 156 | + ext->glBindSampler = (PFNGLBINDSAMPLERPROC)wglGetProcAddress("glBindSampler");
|
| 157 | + ext->glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)wglGetProcAddress("glDeleteSamplers");
|
| 158 | + ext->glGenSamplers = (PFNGLGENSAMPLERSPROC)wglGetProcAddress("glGenSamplers");
|
| 159 | + ext->glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)wglGetProcAddress("glSamplerParameterf");
|
| 160 | + ext->glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)wglGetProcAddress("glSamplerParameteri");
|
| 161 | + ext->glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)wglGetProcAddress("glSamplerParameterfv");
|
| 162 | + ext->glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)wglGetProcAddress("glSamplerParameteriv");
|
| 163 | + }
|
| 164 | + if(broken_fbo)
|
| 165 | + {
|
| 166 | + MessageBox(NULL,_T("DXGL requires support for OpenGL Framebuffer Objects to function. \
|
| 167 | +Please contact your graphics card manufacturer for an updated driver. This program will now exit."),_T("Fatal error"),
|
| 168 | + MB_OK|MB_ICONERROR);
|
| 169 | + ExitProcess(-1);
|
| 170 | + }
|
| 171 | + ext->wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT");
|
| 172 | + ext->wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)wglGetProcAddress("wglGetSwapIntervalEXT");
|
| 173 | +}
|
Index: ddraw/glExtensions.h |
— | — | @@ -30,9 +30,12 @@ |
31 | 31 | #define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
|
32 | 32 | #define GL_RGB565 0x8D62
|
33 | 33 |
|
34 | | -class glExtensions
|
| 34 | +#ifdef __cplusplus
|
| 35 | +extern "C" {
|
| 36 | +#endif
|
| 37 | +
|
| 38 | +typedef struct
|
35 | 39 | {
|
36 | | -public:
|
37 | 40 | GLuint(APIENTRY *glCreateShader) (GLenum type);
|
38 | 41 | void (APIENTRY *glShaderSource) (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
|
39 | 42 | void (APIENTRY *glCompileShader) (GLuint shader);
|
— | — | @@ -132,13 +135,13 @@ |
133 | 136 | int GLEXT_ARB_sampler_objects;
|
134 | 137 | int glver_major;
|
135 | 138 | int glver_minor;
|
| 139 | + BOOL atimem;
|
| 140 | +} glExtensions;
|
136 | 141 |
|
137 | | - glExtensions();
|
| 142 | +void glExtensions_Init(glExtensions *ext);
|
138 | 143 |
|
139 | | -private:
|
140 | | - bool atimem;
|
| 144 | +#ifdef __cplusplus
|
| 145 | +}
|
| 146 | +#endif
|
141 | 147 |
|
142 | | -};
|
143 | | -
|
144 | | -
|
145 | 148 | #endif //_GLEXTENSIONS_H
|
Index: ddraw/glRenderWindow.cpp |
— | — | @@ -200,7 +200,7 @@ |
201 | 201 | #ifdef _DEBUG
|
202 | 202 | case WM_HOTKEY:
|
203 | 203 | #ifdef _TRACE
|
204 | | - trace_end = true;
|
| 204 | + trace_end = TRUE;
|
205 | 205 | CreateThread(NULL,0,BeepThread,NULL,0,NULL);
|
206 | 206 | UnregisterHotKey(hWnd,1);
|
207 | 207 | hotkeyregistered = false;
|
Index: ddraw/glRenderer.cpp |
— | — | @@ -656,7 +656,7 @@ |
657 | 657 | }
|
658 | 658 | delete shaders;
|
659 | 659 | delete texman;
|
660 | | - delete ext;
|
| 660 | + free(ext);
|
661 | 661 | delete util;
|
662 | 662 | ext = NULL;
|
663 | 663 | wglMakeCurrent(NULL,NULL);
|
— | — | @@ -794,7 +794,8 @@ |
795 | 795 | }
|
796 | 796 | InterlockedDecrement(&gllock);
|
797 | 797 | LeaveCriticalSection(&dll_cs);
|
798 | | - ext = new glExtensions();
|
| 798 | + ext = (glExtensions *)malloc(sizeof(glExtensions));
|
| 799 | + glExtensions_Init(ext);
|
799 | 800 | util = new glUtil(ext);
|
800 | 801 | _SetSwap(1);
|
801 | 802 | SwapBuffers(hDC);
|
Index: ddraw/trace.c |
— | — | @@ -0,0 +1,1219 @@ |
| 2 | +// DXGL
|
| 3 | +// Copyright (C) 2013 William Feely
|
| 4 | +
|
| 5 | +// This library is free software; you can redistribute it and/or
|
| 6 | +// modify it under the terms of the GNU Lesser General Public
|
| 7 | +// License as published by the Free Software Foundation; either
|
| 8 | +// version 2.1 of the License, or (at your option) any later version.
|
| 9 | +
|
| 10 | +// This library is distributed in the hope that it will be useful,
|
| 11 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 12 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 13 | +// Lesser General Public License for more details.
|
| 14 | +
|
| 15 | +// You should have received a copy of the GNU Lesser General Public
|
| 16 | +// License along with this library; if not, write to the Free Software
|
| 17 | +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
| 18 | +
|
| 19 | +#include "common.h"
|
| 20 | +#include "trace.h"
|
| 21 | +
|
| 22 | +/* Data types:
|
| 23 | +-1 - C++ constructor/destructor
|
| 24 | +0 - void
|
| 25 | +1 - 8-bit signed
|
| 26 | +2 - 8-bit unsigned
|
| 27 | +3 - 8-bit hex
|
| 28 | +4 - 16 bit signed
|
| 29 | +5 - 16 bit unsigned
|
| 30 | +6 - 16 bit hex
|
| 31 | +7 - 32 bit signed
|
| 32 | +8 - 32 bit unsigned
|
| 33 | +9 - 32 bit hex
|
| 34 | +10 - pointer to 64 bit hex
|
| 35 | +11 - native signed
|
| 36 | +12 - native unsigned
|
| 37 | +13 - native hex
|
| 38 | +14 - generic pointer
|
| 39 | +15 - ASCII string
|
| 40 | +16 - Unicode string
|
| 41 | +17 - TCHAR string
|
| 42 | +18 - ASCII character
|
| 43 | +19 - pointer to 32 bit float
|
| 44 | +20 - pointer to 64 bit float
|
| 45 | +21 - c++ bool
|
| 46 | +22 - int BOOL
|
| 47 | +23 - HRESULT
|
| 48 | +24 - GUID pointer
|
| 49 | +25 - SIZE or POINT pointer
|
| 50 | +26 - RECT pointer
|
| 51 | +27 - D3DRENDERSTATETYPE
|
| 52 | +28 - D3DTEXTURESTAGESTATETYPE
|
| 53 | +29 - D3DTRANSFORMSTATETYPE
|
| 54 | +30 - D3DLIGHTSTATETYPE
|
| 55 | +*/
|
| 56 | +
|
| 57 | +#ifdef _TRACE
|
| 58 | +static CRITICAL_SECTION trace_cs;
|
| 59 | +static BOOL trace_ready = FALSE;
|
| 60 | +static BOOL trace_fail = FALSE;
|
| 61 | +BOOL trace_end = FALSE;
|
| 62 | +static HANDLE outfile = INVALID_HANDLE_VALUE;
|
| 63 | +unsigned int trace_depth = 0;
|
| 64 | +static void trace_decode_hresult(HRESULT hr)
|
| 65 | +{
|
| 66 | + DWORD byteswritten;
|
| 67 | + char str[64];
|
| 68 | + switch(hr)
|
| 69 | + {
|
| 70 | + case DD_OK:
|
| 71 | + strcpy(str,"DD_OK");
|
| 72 | + break;
|
| 73 | + case DD_FALSE:
|
| 74 | + strcpy(str,"DD_FALSE");
|
| 75 | + break;
|
| 76 | + case DDERR_ALREADYINITIALIZED:
|
| 77 | + strcpy(str,"DDERR_ALREADYINITIALIZED");
|
| 78 | + break;
|
| 79 | + case DDERR_CANNOTATTACHSURFACE:
|
| 80 | + strcpy(str,"DDERR_CANNOTATTACHSURFACE");
|
| 81 | + break;
|
| 82 | + case DDERR_CANNOTDETACHSURFACE:
|
| 83 | + strcpy(str,"DDERR_CANNOTDETACHSURFACE");
|
| 84 | + break;
|
| 85 | + case DDERR_CURRENTLYNOTAVAIL:
|
| 86 | + strcpy(str,"DDERR_CURRENTLYNOTAVAIL");
|
| 87 | + break;
|
| 88 | + case DDERR_EXCEPTION:
|
| 89 | + strcpy(str,"DDERR_EXCEPTION");
|
| 90 | + break;
|
| 91 | + case DDERR_GENERIC:
|
| 92 | + strcpy(str,"DDERR_GENERIC");
|
| 93 | + break;
|
| 94 | + case DDERR_INCOMPATIBLEPRIMARY:
|
| 95 | + strcpy(str,"DDERR_INCOMPATIBLEPRIMARY");
|
| 96 | + break;
|
| 97 | + case DDERR_INVALIDCAPS:
|
| 98 | + strcpy(str,"DDERR_INVALIDCAPS");
|
| 99 | + break;
|
| 100 | + case DDERR_INVALIDCLIPLIST:
|
| 101 | + strcpy(str,"DDERR_INVALIDCLIPLIST");
|
| 102 | + break;
|
| 103 | + case DDERR_INVALIDMODE:
|
| 104 | + strcpy(str,"DDERR_INVALIDMODE");
|
| 105 | + break;
|
| 106 | + case DDERR_INVALIDPARAMS:
|
| 107 | + strcpy(str,"DDERR_INVALIDPARAMS");
|
| 108 | + break;
|
| 109 | + case DDERR_INVALIDPIXELFORMAT:
|
| 110 | + strcpy(str,"DDERR_INVALIDPIXELFORMAT");
|
| 111 | + break;
|
| 112 | + case DDERR_INVALIDRECT:
|
| 113 | + strcpy(str,"DDERR_INVALIDRECT");
|
| 114 | + break;
|
| 115 | + case DDERR_NOTFOUND:
|
| 116 | + strcpy(str,"DDERR_NOTFOUND");
|
| 117 | + break;
|
| 118 | + case DDERR_OUTOFMEMORY:
|
| 119 | + strcpy(str,"DDERR_OUTOFMEMORY");
|
| 120 | + break;
|
| 121 | + case DDERR_OUTOFVIDEOMEMORY:
|
| 122 | + strcpy(str,"DDERR_OUTOFVIDEOMEMORY");
|
| 123 | + break;
|
| 124 | + case DDERR_SURFACEALREADYATTACHED:
|
| 125 | + strcpy(str,"DDERR_SURFACEALREADYATTACHED");
|
| 126 | + break;
|
| 127 | + case DDERR_SURFACEBUSY:
|
| 128 | + strcpy(str,"DDERR_SURFACEBUSY");
|
| 129 | + break;
|
| 130 | + case DDERR_CANTLOCKSURFACE:
|
| 131 | + strcpy(str,"DDERR_CANTLOCKSURFACE");
|
| 132 | + break;
|
| 133 | + case DDERR_SURFACELOST:
|
| 134 | + strcpy(str,"DDERR_SURFACELOST");
|
| 135 | + break;
|
| 136 | + case DDERR_SURFACENOTATTACHED:
|
| 137 | + strcpy(str,"DDERR_SURFACENOTATTACHED");
|
| 138 | + break;
|
| 139 | + case DDERR_UNSUPPORTED:
|
| 140 | + strcpy(str,"DDERR_UNSUPPORTED");
|
| 141 | + break;
|
| 142 | + case DDERR_UNSUPPORTEDFORMAT:
|
| 143 | + strcpy(str,"DDERR_UNSUPPORTEDFORMAT");
|
| 144 | + break;
|
| 145 | + case DDERR_UNSUPPORTEDMASK:
|
| 146 | + strcpy(str,"DDERR_UNSUPPORTEDMASK");
|
| 147 | + break;
|
| 148 | + case DDERR_WASSTILLDRAWING:
|
| 149 | + strcpy(str,"DDERR_WASSTILLDRAWING");
|
| 150 | + break;
|
| 151 | + case DDERR_INVALIDDIRECTDRAWGUID:
|
| 152 | + strcpy(str,"DDERR_INVALIDDIRECTDRAWGUID");
|
| 153 | + break;
|
| 154 | + case DDERR_DIRECTDRAWALREADYCREATED:
|
| 155 | + strcpy(str,"DDERR_DIRECTDRAWALREADYCREATED");
|
| 156 | + break;
|
| 157 | + case DDERR_NODIRECTDRAWHW:
|
| 158 | + strcpy(str,"DDERR_NODIRECTDRAWHW");
|
| 159 | + break;
|
| 160 | + case DDERR_PRIMARYSURFACEALREADYEXISTS:
|
| 161 | + strcpy(str,"DDERR_PRIMARYSURFACEALREADYEXISTS");
|
| 162 | + break;
|
| 163 | + case DDERR_CLIPPERISUSINGHWND:
|
| 164 | + strcpy(str,"DDERR_CLIPPERISUSINGHWND");
|
| 165 | + break;
|
| 166 | + case DDERR_NOCLIPPERATTACHED:
|
| 167 | + strcpy(str,"DDERR_NOCLIPPERATTACHED");
|
| 168 | + break;
|
| 169 | + case DDERR_NOHWND:
|
| 170 | + strcpy(str,"DDERR_NOHWND");
|
| 171 | + break;
|
| 172 | + case DDERR_HWNDSUBCLASSED:
|
| 173 | + strcpy(str,"DDERR_HWNDSUBCLASSED");
|
| 174 | + break;
|
| 175 | + case DDERR_HWNDALREADYSET:
|
| 176 | + strcpy(str,"DDERR_HWNDALREADYSET");
|
| 177 | + break;
|
| 178 | + case DDERR_NOPALETTEATTACHED:
|
| 179 | + strcpy(str,"DDERR_NOPALETTEATTACHED");
|
| 180 | + break;
|
| 181 | + case DDERR_NOPALETTEHW:
|
| 182 | + strcpy(str,"DDERR_NOPALETTEHW");
|
| 183 | + break;
|
| 184 | + case DDERR_BLTFASTCANTCLIP:
|
| 185 | + strcpy(str,"DDERR_BLTFASTCANTCLIP");
|
| 186 | + break;
|
| 187 | + case DDERR_OVERLAYNOTVISIBLE:
|
| 188 | + strcpy(str,"DDERR_OVERLAYNOTVISIBLE");
|
| 189 | + break;
|
| 190 | + case DDERR_NOOVERLAYDEST:
|
| 191 | + strcpy(str,"DDERR_NOOVERLAYDEST");
|
| 192 | + break;
|
| 193 | + case DDERR_EXCLUSIVEMODEALREADYSET:
|
| 194 | + strcpy(str,"DDERR_EXCLUSIVEMODEALREADYSET");
|
| 195 | + break;
|
| 196 | + case DDERR_NOTFLIPPABLE:
|
| 197 | + strcpy(str,"DDERR_NOTFLIPPABLE");
|
| 198 | + break;
|
| 199 | + case DDERR_CANTDUPLICATE:
|
| 200 | + strcpy(str,"DDERR_CANTDUPLICATE");
|
| 201 | + break;
|
| 202 | + case DDERR_NOTLOCKED:
|
| 203 | + strcpy(str,"DDERR_NOTLOCKED");
|
| 204 | + break;
|
| 205 | + case DDERR_CANTCREATEDC:
|
| 206 | + strcpy(str,"DDERR_CANTCREATEDC");
|
| 207 | + break;
|
| 208 | + case DDERR_NODC:
|
| 209 | + strcpy(str,"DDERR_NODC");
|
| 210 | + break;
|
| 211 | + case DDERR_WRONGMODE:
|
| 212 | + strcpy(str,"DDERR_WRONGMODE");
|
| 213 | + break;
|
| 214 | + case DDERR_IMPLICITLYCREATED:
|
| 215 | + strcpy(str,"DDERR_IMPLICITLYCREATED");
|
| 216 | + break;
|
| 217 | + case DDERR_NOTPALETTIZED:
|
| 218 | + strcpy(str,"DDERR_NOTPALETTIZED");
|
| 219 | + break;
|
| 220 | + case DDERR_UNSUPPORTEDMODE:
|
| 221 | + strcpy(str,"DDERR_UNSUPPORTEDMODE");
|
| 222 | + break;
|
| 223 | + case DDERR_INVALIDSURFACETYPE:
|
| 224 | + strcpy(str,"DDERR_INVALIDSURFACETYPE");
|
| 225 | + break;
|
| 226 | + case DDERR_NOTONMIPMAPSUBLEVEL:
|
| 227 | + strcpy(str,"DDERR_NOTONMIPMAPSUBLEVEL");
|
| 228 | + break;
|
| 229 | + case DDERR_DCALREADYCREATED:
|
| 230 | + strcpy(str,"DDERR_DCALREADYCREATED");
|
| 231 | + break;
|
| 232 | + case DDERR_CANTPAGELOCK:
|
| 233 | + strcpy(str,"DDERR_CANTPAGELOCK");
|
| 234 | + break;
|
| 235 | + case DDERR_CANTPAGEUNLOCK:
|
| 236 | + strcpy(str,"DDERR_CANTPAGEUNLOCK");
|
| 237 | + break;
|
| 238 | + case DDERR_NOTPAGELOCKED:
|
| 239 | + strcpy(str,"DDERR_NOTPAGELOCKED");
|
| 240 | + break;
|
| 241 | + case DDERR_MOREDATA:
|
| 242 | + strcpy(str,"DDERR_MOREDATA");
|
| 243 | + break;
|
| 244 | + case DDERR_NOTINITIALIZED:
|
| 245 | + strcpy(str,"DDERR_NOTINITIALIZED");
|
| 246 | + break;
|
| 247 | + case E_NOINTERFACE:
|
| 248 | + strcpy(str,"E_NOINTERFACE");
|
| 249 | + break;
|
| 250 | + case CLASS_E_NOAGGREGATION:
|
| 251 | + strcpy(str,"CLASS_E_NOAGGREGATION");
|
| 252 | + break;
|
| 253 | + default:
|
| 254 | + sprintf(str,"(HRESULT)0x%08X",hr);
|
| 255 | + break;
|
| 256 | + }
|
| 257 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 258 | +}
|
| 259 | +
|
| 260 | +static void trace_decode_d3drenderstate(DWORD rs)
|
| 261 | +{
|
| 262 | + DWORD byteswritten;
|
| 263 | + char str[64];
|
| 264 | + switch(rs)
|
| 265 | + {
|
| 266 | + case D3DRENDERSTATE_TEXTUREHANDLE:
|
| 267 | + strcpy(str,"D3DRENDERSTATE_TEXTUREHANDLE");
|
| 268 | + break;
|
| 269 | + case D3DRENDERSTATE_ANTIALIAS:
|
| 270 | + strcpy(str,"D3DRENDERSTATE_ANTIALIAS");
|
| 271 | + break;
|
| 272 | + case D3DRENDERSTATE_TEXTUREADDRESS:
|
| 273 | + strcpy(str,"D3DRENDERSTATE_TEXTUREADDRESS");
|
| 274 | + break;
|
| 275 | + case D3DRENDERSTATE_TEXTUREPERSPECTIVE:
|
| 276 | + strcpy(str,"D3DRENDERSTATE_TEXTUREPERSPECTIVE");
|
| 277 | + break;
|
| 278 | + case D3DRENDERSTATE_WRAPU:
|
| 279 | + strcpy(str,"D3DRENDERSTATE_WRAPU");
|
| 280 | + break;
|
| 281 | + case D3DRENDERSTATE_WRAPV:
|
| 282 | + strcpy(str,"D3DRENDERSTATE_WRAPV");
|
| 283 | + break;
|
| 284 | + case D3DRENDERSTATE_ZENABLE:
|
| 285 | + strcpy(str,"D3DRENDERSTATE_ZENABLE");
|
| 286 | + break;
|
| 287 | + case D3DRENDERSTATE_FILLMODE:
|
| 288 | + strcpy(str,"D3DRENDERSTATE_FILLMODE");
|
| 289 | + break;
|
| 290 | + case D3DRENDERSTATE_SHADEMODE:
|
| 291 | + strcpy(str,"D3DRENDERSTATE_SHADEMODE");
|
| 292 | + break;
|
| 293 | + case D3DRENDERSTATE_LINEPATTERN:
|
| 294 | + strcpy(str,"D3DRENDERSTATE_LINEPATTERN");
|
| 295 | + break;
|
| 296 | + case D3DRENDERSTATE_MONOENABLE:
|
| 297 | + strcpy(str,"D3DRENDERSTATE_MONOENABLE");
|
| 298 | + break;
|
| 299 | + case D3DRENDERSTATE_ROP2:
|
| 300 | + strcpy(str,"D3DRENDERSTATE_ROP2");
|
| 301 | + break;
|
| 302 | + case D3DRENDERSTATE_PLANEMASK:
|
| 303 | + strcpy(str,"D3DRENDERSTATE_PLANEMASK");
|
| 304 | + break;
|
| 305 | + case D3DRENDERSTATE_ZWRITEENABLE:
|
| 306 | + strcpy(str,"D3DRENDERSTATE_ZWRITEENABLE");
|
| 307 | + break;
|
| 308 | + case D3DRENDERSTATE_ALPHATESTENABLE:
|
| 309 | + strcpy(str,"D3DRENDERSTATE_ALPHATESTENABLE");
|
| 310 | + break;
|
| 311 | + case D3DRENDERSTATE_LASTPIXEL:
|
| 312 | + strcpy(str,"D3DRENDERSTATE_LASTPIXEL");
|
| 313 | + break;
|
| 314 | + case D3DRENDERSTATE_TEXTUREMAG:
|
| 315 | + strcpy(str,"D3DRENDERSTATE_TEXTUREMAG");
|
| 316 | + break;
|
| 317 | + case D3DRENDERSTATE_TEXTUREMIN:
|
| 318 | + strcpy(str,"D3DRENDERSTATE_TEXTUREMIN");
|
| 319 | + break;
|
| 320 | + case D3DRENDERSTATE_SRCBLEND:
|
| 321 | + strcpy(str,"D3DRENDERSTATE_SRCBLEND");
|
| 322 | + break;
|
| 323 | + case D3DRENDERSTATE_DESTBLEND:
|
| 324 | + strcpy(str,"D3DRENDERSTATE_DESTBLEND");
|
| 325 | + break;
|
| 326 | + case D3DRENDERSTATE_TEXTUREMAPBLEND:
|
| 327 | + strcpy(str,"D3DRENDERSTATE_TEXTUREMAPBLEND");
|
| 328 | + break;
|
| 329 | + case D3DRENDERSTATE_CULLMODE:
|
| 330 | + strcpy(str,"D3DRENDERSTATE_CULLMODE");
|
| 331 | + break;
|
| 332 | + case D3DRENDERSTATE_ZFUNC:
|
| 333 | + strcpy(str,"D3DRENDERSTATE_ZFUNC");
|
| 334 | + break;
|
| 335 | + case D3DRENDERSTATE_ALPHAREF:
|
| 336 | + strcpy(str,"D3DRENDERSTATE_ALPHAREF");
|
| 337 | + break;
|
| 338 | + case D3DRENDERSTATE_ALPHAFUNC:
|
| 339 | + strcpy(str,"D3DRENDERSTATE_ALPHAFUNC");
|
| 340 | + break;
|
| 341 | + case D3DRENDERSTATE_DITHERENABLE:
|
| 342 | + strcpy(str,"D3DRENDERSTATE_DITHERENABLE");
|
| 343 | + break;
|
| 344 | + case D3DRENDERSTATE_ALPHABLENDENABLE:
|
| 345 | + strcpy(str,"D3DRENDERSTATE_ALPHABLENDENABLE");
|
| 346 | + break;
|
| 347 | + case D3DRENDERSTATE_FOGENABLE:
|
| 348 | + strcpy(str,"D3DRENDERSTATE_FOGENABLE");
|
| 349 | + break;
|
| 350 | + case D3DRENDERSTATE_SPECULARENABLE:
|
| 351 | + strcpy(str,"D3DRENDERSTATE_SPECULARENABLE");
|
| 352 | + break;
|
| 353 | + case D3DRENDERSTATE_ZVISIBLE:
|
| 354 | + strcpy(str,"D3DRENDERSTATE_ZVISIBLE");
|
| 355 | + break;
|
| 356 | + case D3DRENDERSTATE_SUBPIXEL:
|
| 357 | + strcpy(str,"D3DRENDERSTATE_SUBPIXEL");
|
| 358 | + break;
|
| 359 | + case D3DRENDERSTATE_SUBPIXELX:
|
| 360 | + strcpy(str,"D3DRENDERSTATE_SUBPIXELX");
|
| 361 | + break;
|
| 362 | + case D3DRENDERSTATE_STIPPLEDALPHA:
|
| 363 | + strcpy(str,"D3DRENDERSTATE_STIPPLEDALPHA");
|
| 364 | + break;
|
| 365 | + case D3DRENDERSTATE_FOGCOLOR:
|
| 366 | + strcpy(str,"D3DRENDERSTATE_FOGCOLOR");
|
| 367 | + break;
|
| 368 | + case D3DRENDERSTATE_FOGTABLEMODE:
|
| 369 | + strcpy(str,"D3DRENDERSTATE_FOGTABLEMODE");
|
| 370 | + break;
|
| 371 | + case D3DRENDERSTATE_FOGSTART:
|
| 372 | + strcpy(str,"D3DRENDERSTATE_FOGSTART");
|
| 373 | + break;
|
| 374 | + case D3DRENDERSTATE_FOGEND:
|
| 375 | + strcpy(str,"D3DRENDERSTATE_FOGEND");
|
| 376 | + break;
|
| 377 | + case D3DRENDERSTATE_FOGDENSITY:
|
| 378 | + strcpy(str,"D3DRENDERSTATE_FOGDENSITY");
|
| 379 | + break;
|
| 380 | + case D3DRENDERSTATE_STIPPLEENABLE:
|
| 381 | + strcpy(str,"D3DRENDERSTATE_STIPPLEENABLE");
|
| 382 | + break;
|
| 383 | + case D3DRENDERSTATE_EDGEANTIALIAS:
|
| 384 | + strcpy(str,"D3DRENDERSTATE_EDGEANTIALIAS");
|
| 385 | + break;
|
| 386 | + case D3DRENDERSTATE_COLORKEYENABLE:
|
| 387 | + strcpy(str,"D3DRENDERSTATE_COLORKEYENABLE");
|
| 388 | + break;
|
| 389 | + case 42: // DX5 D3DRENDERSTATE_ALPHABLENDENABLE
|
| 390 | + strcpy(str,"D3DRENDERSTATE_ALPHABLENDENABLE(DX5)");
|
| 391 | + break;
|
| 392 | + case D3DRENDERSTATE_BORDERCOLOR:
|
| 393 | + strcpy(str,"D3DRENDERSTATE_BORDERCOLOR");
|
| 394 | + break;
|
| 395 | + case D3DRENDERSTATE_TEXTUREADDRESSU:
|
| 396 | + strcpy(str,"D3DRENDERSTATE_TEXTUREADDRESSU");
|
| 397 | + break;
|
| 398 | + case D3DRENDERSTATE_TEXTUREADDRESSV:
|
| 399 | + strcpy(str,"D3DRENDERSTATE_TEXTUREADDRESSV");
|
| 400 | + break;
|
| 401 | + case D3DRENDERSTATE_MIPMAPLODBIAS:
|
| 402 | + strcpy(str,"D3DRENDERSTATE_MIPMAPLODBIAS");
|
| 403 | + break;
|
| 404 | + case D3DRENDERSTATE_ZBIAS:
|
| 405 | + strcpy(str,"D3DRENDERSTATE_ZBIAS");
|
| 406 | + break;
|
| 407 | + case D3DRENDERSTATE_RANGEFOGENABLE:
|
| 408 | + strcpy(str,"D3DRENDERSTATE_RANGEFOGENABLE");
|
| 409 | + break;
|
| 410 | + case D3DRENDERSTATE_ANISOTROPY:
|
| 411 | + strcpy(str,"D3DRENDERSTATE_ANISOTROPY");
|
| 412 | + break;
|
| 413 | + case D3DRENDERSTATE_FLUSHBATCH:
|
| 414 | + strcpy(str,"D3DRENDERSTATE_FLUSHBATCH");
|
| 415 | + break;
|
| 416 | + case D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT:
|
| 417 | + strcpy(str,"D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT");
|
| 418 | + break;
|
| 419 | + case D3DRENDERSTATE_STENCILENABLE:
|
| 420 | + strcpy(str,"D3DRENDERSTATE_STENCILENABLE");
|
| 421 | + break;
|
| 422 | + case D3DRENDERSTATE_STENCILFAIL:
|
| 423 | + strcpy(str,"D3DRENDERSTATE_STENCILFAIL");
|
| 424 | + break;
|
| 425 | + case D3DRENDERSTATE_STENCILZFAIL:
|
| 426 | + strcpy(str,"D3DRENDERSTATE_STENCILZFAIL");
|
| 427 | + break;
|
| 428 | + case D3DRENDERSTATE_STENCILPASS:
|
| 429 | + strcpy(str,"D3DRENDERSTATE_STENCILPASS");
|
| 430 | + break;
|
| 431 | + case D3DRENDERSTATE_STENCILFUNC:
|
| 432 | + strcpy(str,"D3DRENDERSTATE_STENCILFUNC");
|
| 433 | + break;
|
| 434 | + case D3DRENDERSTATE_STENCILREF:
|
| 435 | + strcpy(str,"D3DRENDERSTATE_STENCILREF");
|
| 436 | + break;
|
| 437 | + case D3DRENDERSTATE_STENCILMASK:
|
| 438 | + strcpy(str,"D3DRENDERSTATE_STENCILMASK");
|
| 439 | + break;
|
| 440 | + case D3DRENDERSTATE_STENCILWRITEMASK:
|
| 441 | + strcpy(str,"D3DRENDERSTATE_STENCILWRITEMASK");
|
| 442 | + break;
|
| 443 | + case D3DRENDERSTATE_TEXTUREFACTOR:
|
| 444 | + strcpy(str,"D3DRENDERSTATE_TEXTUREFACTOR");
|
| 445 | + break;
|
| 446 | + case D3DRENDERSTATE_STIPPLEPATTERN00:
|
| 447 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN00");
|
| 448 | + break;
|
| 449 | + case D3DRENDERSTATE_STIPPLEPATTERN01:
|
| 450 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN01");
|
| 451 | + break;
|
| 452 | + case D3DRENDERSTATE_STIPPLEPATTERN02:
|
| 453 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN02");
|
| 454 | + break;
|
| 455 | + case D3DRENDERSTATE_STIPPLEPATTERN03:
|
| 456 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN03");
|
| 457 | + break;
|
| 458 | + case D3DRENDERSTATE_STIPPLEPATTERN04:
|
| 459 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN04");
|
| 460 | + break;
|
| 461 | + case D3DRENDERSTATE_STIPPLEPATTERN05:
|
| 462 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN05");
|
| 463 | + break;
|
| 464 | + case D3DRENDERSTATE_STIPPLEPATTERN06:
|
| 465 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN06");
|
| 466 | + break;
|
| 467 | + case D3DRENDERSTATE_STIPPLEPATTERN07:
|
| 468 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN07");
|
| 469 | + break;
|
| 470 | + case D3DRENDERSTATE_STIPPLEPATTERN08:
|
| 471 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN08");
|
| 472 | + break;
|
| 473 | + case D3DRENDERSTATE_STIPPLEPATTERN09:
|
| 474 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN09");
|
| 475 | + break;
|
| 476 | + case D3DRENDERSTATE_STIPPLEPATTERN10:
|
| 477 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN10");
|
| 478 | + break;
|
| 479 | + case D3DRENDERSTATE_STIPPLEPATTERN11:
|
| 480 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN11");
|
| 481 | + break;
|
| 482 | + case D3DRENDERSTATE_STIPPLEPATTERN12:
|
| 483 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN12");
|
| 484 | + break;
|
| 485 | + case D3DRENDERSTATE_STIPPLEPATTERN13:
|
| 486 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN13");
|
| 487 | + break;
|
| 488 | + case D3DRENDERSTATE_STIPPLEPATTERN14:
|
| 489 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN14");
|
| 490 | + break;
|
| 491 | + case D3DRENDERSTATE_STIPPLEPATTERN15:
|
| 492 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN15");
|
| 493 | + break;
|
| 494 | + case D3DRENDERSTATE_STIPPLEPATTERN16:
|
| 495 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN16");
|
| 496 | + break;
|
| 497 | + case D3DRENDERSTATE_STIPPLEPATTERN17:
|
| 498 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN17");
|
| 499 | + break;
|
| 500 | + case D3DRENDERSTATE_STIPPLEPATTERN18:
|
| 501 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN18");
|
| 502 | + break;
|
| 503 | + case D3DRENDERSTATE_STIPPLEPATTERN19:
|
| 504 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN19");
|
| 505 | + break;
|
| 506 | + case D3DRENDERSTATE_STIPPLEPATTERN20:
|
| 507 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN20");
|
| 508 | + break;
|
| 509 | + case D3DRENDERSTATE_STIPPLEPATTERN21:
|
| 510 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN21");
|
| 511 | + break;
|
| 512 | + case D3DRENDERSTATE_STIPPLEPATTERN22:
|
| 513 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN22");
|
| 514 | + break;
|
| 515 | + case D3DRENDERSTATE_STIPPLEPATTERN23:
|
| 516 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN23");
|
| 517 | + break;
|
| 518 | + case D3DRENDERSTATE_STIPPLEPATTERN24:
|
| 519 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN24");
|
| 520 | + break;
|
| 521 | + case D3DRENDERSTATE_STIPPLEPATTERN25:
|
| 522 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN25");
|
| 523 | + break;
|
| 524 | + case D3DRENDERSTATE_STIPPLEPATTERN26:
|
| 525 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN26");
|
| 526 | + break;
|
| 527 | + case D3DRENDERSTATE_STIPPLEPATTERN27:
|
| 528 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN27");
|
| 529 | + break;
|
| 530 | + case D3DRENDERSTATE_STIPPLEPATTERN28:
|
| 531 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN28");
|
| 532 | + break;
|
| 533 | + case D3DRENDERSTATE_STIPPLEPATTERN29:
|
| 534 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN29");
|
| 535 | + break;
|
| 536 | + case D3DRENDERSTATE_STIPPLEPATTERN30:
|
| 537 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN30");
|
| 538 | + break;
|
| 539 | + case D3DRENDERSTATE_STIPPLEPATTERN31:
|
| 540 | + strcpy(str,"D3DRENDERSTATE_STIPPLEPATTERN31");
|
| 541 | + break;
|
| 542 | + case D3DRENDERSTATE_WRAP0:
|
| 543 | + strcpy(str,"D3DRENDERSTATE_WRAP0");
|
| 544 | + break;
|
| 545 | + case D3DRENDERSTATE_WRAP1:
|
| 546 | + strcpy(str,"D3DRENDERSTATE_WRAP1");
|
| 547 | + break;
|
| 548 | + case D3DRENDERSTATE_WRAP2:
|
| 549 | + strcpy(str,"D3DRENDERSTATE_WRAP2");
|
| 550 | + break;
|
| 551 | + case D3DRENDERSTATE_WRAP3:
|
| 552 | + strcpy(str,"D3DRENDERSTATE_WRAP3");
|
| 553 | + break;
|
| 554 | + case D3DRENDERSTATE_WRAP4:
|
| 555 | + strcpy(str,"D3DRENDERSTATE_WRAP4");
|
| 556 | + break;
|
| 557 | + case D3DRENDERSTATE_WRAP5:
|
| 558 | + strcpy(str,"D3DRENDERSTATE_WRAP5");
|
| 559 | + break;
|
| 560 | + case D3DRENDERSTATE_WRAP6:
|
| 561 | + strcpy(str,"D3DRENDERSTATE_WRAP6");
|
| 562 | + break;
|
| 563 | + case D3DRENDERSTATE_WRAP7:
|
| 564 | + strcpy(str,"D3DRENDERSTATE_WRAP7");
|
| 565 | + break;
|
| 566 | + case D3DRENDERSTATE_CLIPPING:
|
| 567 | + strcpy(str,"D3DRENDERSTATE_CLIPPING");
|
| 568 | + break;
|
| 569 | + case D3DRENDERSTATE_LIGHTING:
|
| 570 | + strcpy(str,"D3DRENDERSTATE_LIGHTING");
|
| 571 | + break;
|
| 572 | + case D3DRENDERSTATE_EXTENTS:
|
| 573 | + strcpy(str,"D3DRENDERSTATE_EXTENTS");
|
| 574 | + break;
|
| 575 | + case D3DRENDERSTATE_AMBIENT:
|
| 576 | + strcpy(str,"D3DRENDERSTATE_AMBIENT");
|
| 577 | + break;
|
| 578 | + case D3DRENDERSTATE_FOGVERTEXMODE:
|
| 579 | + strcpy(str,"D3DRENDERSTATE_FOGVERTEXMODE");
|
| 580 | + break;
|
| 581 | + case D3DRENDERSTATE_COLORVERTEX:
|
| 582 | + strcpy(str,"D3DRENDERSTATE_COLORVERTEX");
|
| 583 | + break;
|
| 584 | + case D3DRENDERSTATE_LOCALVIEWER:
|
| 585 | + strcpy(str,"D3DRENDERSTATE_LOCALVIEWER");
|
| 586 | + break;
|
| 587 | + case D3DRENDERSTATE_NORMALIZENORMALS:
|
| 588 | + strcpy(str,"D3DRENDERSTATE_NORMALIZENORMALS");
|
| 589 | + break;
|
| 590 | + case D3DRENDERSTATE_COLORKEYBLENDENABLE:
|
| 591 | + strcpy(str,"D3DRENDERSTATE_COLORKEYBLENDENABLE");
|
| 592 | + break;
|
| 593 | + case D3DRENDERSTATE_DIFFUSEMATERIALSOURCE:
|
| 594 | + strcpy(str,"D3DRENDERSTATE_DIFFUSEMATERIALSOURCE");
|
| 595 | + break;
|
| 596 | + case D3DRENDERSTATE_SPECULARMATERIALSOURCE:
|
| 597 | + strcpy(str,"D3DRENDERSTATE_SPECULARMATERIALSOURCE");
|
| 598 | + break;
|
| 599 | + case D3DRENDERSTATE_AMBIENTMATERIALSOURCE:
|
| 600 | + strcpy(str,"D3DRENDERSTATE_AMBIENTMATERIALSOURCE");
|
| 601 | + break;
|
| 602 | + case D3DRENDERSTATE_EMISSIVEMATERIALSOURCE:
|
| 603 | + strcpy(str,"D3DRENDERSTATE_EMISSIVEMATERIALSOURCE");
|
| 604 | + break;
|
| 605 | + case D3DRENDERSTATE_VERTEXBLEND:
|
| 606 | + strcpy(str,"D3DRENDERSTATE_VERTEXBLEND");
|
| 607 | + break;
|
| 608 | + case D3DRENDERSTATE_CLIPPLANEENABLE:
|
| 609 | + strcpy(str,"D3DRENDERSTATE_CLIPPLANEENABLE");
|
| 610 | + break;
|
| 611 | + default:
|
| 612 | + sprintf(str,"(D3DRENDERSTATETYPE)%u",rs);
|
| 613 | + break;
|
| 614 | + }
|
| 615 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 616 | +}
|
| 617 | +
|
| 618 | +static void trace_decode_d3dtexturestagestate(DWORD ts)
|
| 619 | +{
|
| 620 | + DWORD byteswritten;
|
| 621 | + char str[64];
|
| 622 | + switch(ts)
|
| 623 | + {
|
| 624 | + case D3DTSS_COLOROP:
|
| 625 | + strcpy(str,"D3DTSS_COLOROP");
|
| 626 | + break;
|
| 627 | + case D3DTSS_COLORARG1:
|
| 628 | + strcpy(str,"D3DTSS_COLORARG1");
|
| 629 | + break;
|
| 630 | + case D3DTSS_COLORARG2:
|
| 631 | + strcpy(str,"D3DTSS_COLORARG2");
|
| 632 | + break;
|
| 633 | + case D3DTSS_ALPHAOP:
|
| 634 | + strcpy(str,"D3DTSS_ALPHAOP");
|
| 635 | + break;
|
| 636 | + case D3DTSS_ALPHAARG1:
|
| 637 | + strcpy(str,"D3DTSS_ALPHAARG1");
|
| 638 | + break;
|
| 639 | + case D3DTSS_ALPHAARG2:
|
| 640 | + strcpy(str,"D3DTSS_ALPHAARG2");
|
| 641 | + break;
|
| 642 | + case D3DTSS_BUMPENVMAT00:
|
| 643 | + strcpy(str,"D3DTSS_BUMPENVMAT00");
|
| 644 | + break;
|
| 645 | + case D3DTSS_BUMPENVMAT01:
|
| 646 | + strcpy(str,"D3DTSS_BUMPENVMAT01");
|
| 647 | + break;
|
| 648 | + case D3DTSS_BUMPENVMAT10:
|
| 649 | + strcpy(str,"D3DTSS_BUMPENVMAT10");
|
| 650 | + break;
|
| 651 | + case D3DTSS_BUMPENVMAT11:
|
| 652 | + strcpy(str,"D3DTSS_BUMPENVMAT11");
|
| 653 | + break;
|
| 654 | + case D3DTSS_TEXCOORDINDEX:
|
| 655 | + strcpy(str,"D3DTSS_TEXCOORDINDEX");
|
| 656 | + break;
|
| 657 | + case D3DTSS_ADDRESS:
|
| 658 | + strcpy(str,"D3DTSS_ADDRESS");
|
| 659 | + break;
|
| 660 | + case D3DTSS_ADDRESSU:
|
| 661 | + strcpy(str,"D3DTSS_ADDRESSU");
|
| 662 | + break;
|
| 663 | + case D3DTSS_ADDRESSV:
|
| 664 | + strcpy(str,"D3DTSS_ADDRESSV");
|
| 665 | + break;
|
| 666 | + case D3DTSS_BORDERCOLOR:
|
| 667 | + strcpy(str,"D3DTSS_BORDERCOLOR");
|
| 668 | + break;
|
| 669 | + case D3DTSS_MAGFILTER:
|
| 670 | + strcpy(str,"D3DTSS_MAGFILTER");
|
| 671 | + break;
|
| 672 | + case D3DTSS_MINFILTER:
|
| 673 | + strcpy(str,"D3DTSS_MINFILTER");
|
| 674 | + break;
|
| 675 | + case D3DTSS_MIPFILTER:
|
| 676 | + strcpy(str,"D3DTSS_MIPFILTER");
|
| 677 | + break;
|
| 678 | + case D3DTSS_MIPMAPLODBIAS:
|
| 679 | + strcpy(str,"D3DTSS_MIPMAPLODBIAS");
|
| 680 | + break;
|
| 681 | + case D3DTSS_MAXMIPLEVEL:
|
| 682 | + strcpy(str,"D3DTSS_MAXMIPLEVEL");
|
| 683 | + break;
|
| 684 | + case D3DTSS_MAXANISOTROPY:
|
| 685 | + strcpy(str,"D3DTSS_MAXANISOTROPY");
|
| 686 | + break;
|
| 687 | + case D3DTSS_BUMPENVLSCALE:
|
| 688 | + strcpy(str,"D3DTSS_BUMPENVLSCALE");
|
| 689 | + break;
|
| 690 | + case D3DTSS_BUMPENVLOFFSET:
|
| 691 | + strcpy(str,"D3DTSS_BUMPENVLOFFSET");
|
| 692 | + break;
|
| 693 | + case D3DTSS_TEXTURETRANSFORMFLAGS:
|
| 694 | + strcpy(str,"D3DTSS_TEXTURETRANSFORMFLAGS");
|
| 695 | + break;
|
| 696 | + default:
|
| 697 | + sprintf(str,"(D3DTEXTURESTAGESTATETYPE)%u",ts);
|
| 698 | + break;
|
| 699 | + }
|
| 700 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 701 | +}
|
| 702 | +
|
| 703 | +static void trace_decode_d3dtransformstate(DWORD ts)
|
| 704 | +{
|
| 705 | + DWORD byteswritten;
|
| 706 | + char str[64];
|
| 707 | + switch(ts)
|
| 708 | + {
|
| 709 | + case D3DTRANSFORMSTATE_WORLD:
|
| 710 | + strcpy(str,"D3DTRANSFORMSTATE_WORLD");
|
| 711 | + break;
|
| 712 | + case D3DTRANSFORMSTATE_VIEW:
|
| 713 | + strcpy(str,"D3DTRANSFORMSTATE_VIEW");
|
| 714 | + break;
|
| 715 | + case D3DTRANSFORMSTATE_PROJECTION:
|
| 716 | + strcpy(str,"D3DTRANSFORMSTATE_PROJECTION");
|
| 717 | + break;
|
| 718 | + case D3DTRANSFORMSTATE_WORLD1:
|
| 719 | + strcpy(str,"D3DTRANSFORMSTATE_WORLD1");
|
| 720 | + break;
|
| 721 | + case D3DTRANSFORMSTATE_WORLD2:
|
| 722 | + strcpy(str,"D3DTRANSFORMSTATE_WORLD2");
|
| 723 | + break;
|
| 724 | + case D3DTRANSFORMSTATE_WORLD3:
|
| 725 | + strcpy(str,"D3DTRANSFORMSTATE_WORLD3");
|
| 726 | + break;
|
| 727 | + case D3DTRANSFORMSTATE_TEXTURE0:
|
| 728 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE0");
|
| 729 | + break;
|
| 730 | + case D3DTRANSFORMSTATE_TEXTURE1:
|
| 731 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE1");
|
| 732 | + break;
|
| 733 | + case D3DTRANSFORMSTATE_TEXTURE2:
|
| 734 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE2");
|
| 735 | + break;
|
| 736 | + case D3DTRANSFORMSTATE_TEXTURE3:
|
| 737 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE3");
|
| 738 | + break;
|
| 739 | + case D3DTRANSFORMSTATE_TEXTURE4:
|
| 740 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE4");
|
| 741 | + break;
|
| 742 | + case D3DTRANSFORMSTATE_TEXTURE5:
|
| 743 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE5");
|
| 744 | + break;
|
| 745 | + case D3DTRANSFORMSTATE_TEXTURE6:
|
| 746 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE6");
|
| 747 | + break;
|
| 748 | + case D3DTRANSFORMSTATE_TEXTURE7:
|
| 749 | + strcpy(str,"D3DTRANSFORMSTATE_TEXTURE7");
|
| 750 | + break;
|
| 751 | + default:
|
| 752 | + sprintf(str,"(D3DTRANSFORMSTATETYPE)%u",ts);
|
| 753 | + break;
|
| 754 | + }
|
| 755 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 756 | +}
|
| 757 | +
|
| 758 | +static void trace_decode_d3dlightstate(DWORD ls)
|
| 759 | +{
|
| 760 | + DWORD byteswritten;
|
| 761 | + char str[64];
|
| 762 | + switch(ls)
|
| 763 | + {
|
| 764 | + case D3DLIGHTSTATE_MATERIAL:
|
| 765 | + strcpy(str,"D3DLIGHTSTATE_MATERIAL");
|
| 766 | + break;
|
| 767 | + case D3DLIGHTSTATE_AMBIENT:
|
| 768 | + strcpy(str,"D3DLIGHTSTATE_AMBIENT");
|
| 769 | + break;
|
| 770 | + case D3DLIGHTSTATE_COLORMODEL:
|
| 771 | + strcpy(str,"D3DLIGHTSTATE_COLORMODEL");
|
| 772 | + break;
|
| 773 | + case D3DLIGHTSTATE_FOGMODE:
|
| 774 | + strcpy(str,"D3DLIGHTSTATE_FOGMODE");
|
| 775 | + break;
|
| 776 | + case D3DLIGHTSTATE_FOGSTART:
|
| 777 | + strcpy(str,"D3DLIGHTSTATE_FOGSTART");
|
| 778 | + break;
|
| 779 | + case D3DLIGHTSTATE_FOGEND:
|
| 780 | + strcpy(str,"D3DLIGHTSTATE_FOGEND");
|
| 781 | + break;
|
| 782 | + case D3DLIGHTSTATE_FOGDENSITY:
|
| 783 | + strcpy(str,"D3DLIGHTSTATE_FOGDENSITY");
|
| 784 | + break;
|
| 785 | + case D3DLIGHTSTATE_COLORVERTEX:
|
| 786 | + strcpy(str,"D3DLIGHTSTATE_COLORVERTEX");
|
| 787 | + break;
|
| 788 | + default:
|
| 789 | + sprintf(str,"(D3DTRANSFORMSTATETYPE)%u",ls);
|
| 790 | + break;
|
| 791 | + }
|
| 792 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 793 | +}
|
| 794 | +
|
| 795 | +static void trace_decode_guid(GUID *guid)
|
| 796 | +{
|
| 797 | + DWORD byteswritten;
|
| 798 | + char str[64];
|
| 799 | + if(!memcmp(guid,&CLSID_DirectDraw,sizeof(GUID))) strcpy(str,"CLSID_DirectDraw");
|
| 800 | + else if(!memcmp(guid,&CLSID_DirectDraw7,sizeof(GUID))) strcpy(str,"CLSID_DirectDraw7");
|
| 801 | + else if(!memcmp(guid,&CLSID_DirectDrawClipper,sizeof(GUID))) strcpy(str,"CLSID_DirectDrawClipper");
|
| 802 | + else if(!memcmp(guid,&IID_IDirectDraw,sizeof(GUID))) strcpy(str,"IID_IDirectDraw");
|
| 803 | + else if(!memcmp(guid,&IID_IDirectDraw2,sizeof(GUID))) strcpy(str,"IID_IDirectDraw2");
|
| 804 | + else if(!memcmp(guid,&IID_IDirectDraw4,sizeof(GUID))) strcpy(str,"IID_IDirectDraw4");
|
| 805 | + else if(!memcmp(guid,&IID_IDirectDraw7,sizeof(GUID))) strcpy(str,"IID_IDirectDraw7");
|
| 806 | + else if(!memcmp(guid,&IID_IDirectDrawSurface,sizeof(GUID))) strcpy(str,"IID_IDirectDrawSurface");
|
| 807 | + else if(!memcmp(guid,&IID_IDirectDrawSurface2,sizeof(GUID))) strcpy(str,"IID_IDirectDrawSurface2");
|
| 808 | + else if(!memcmp(guid,&IID_IDirectDrawSurface3,sizeof(GUID))) strcpy(str,"IID_IDirectDrawSurface3");
|
| 809 | + else if(!memcmp(guid,&IID_IDirectDrawSurface4,sizeof(GUID))) strcpy(str,"IID_IDirectDrawSurface4");
|
| 810 | + else if(!memcmp(guid,&IID_IDirectDrawSurface7,sizeof(GUID))) strcpy(str,"IID_IDirectDrawSurface7");
|
| 811 | + else if(!memcmp(guid,&IID_IDirectDrawPalette,sizeof(GUID))) strcpy(str,"IID_IDirectDrawPalette");
|
| 812 | + else if(!memcmp(guid,&IID_IDirectDrawClipper,sizeof(GUID))) strcpy(str,"IID_IDirectDrawClipper");
|
| 813 | + else if(!memcmp(guid,&IID_IDirectDrawColorControl,sizeof(GUID))) strcpy(str,"IID_IDirectDrawColorControl");
|
| 814 | + else if(!memcmp(guid,&IID_IDirectDrawGammaControl,sizeof(GUID))) strcpy(str,"IID_IDirectDrawGammaControl");
|
| 815 | + else if(!memcmp(guid,&IID_IDirect3D,sizeof(GUID))) strcpy(str,"IID_IDirect3D");
|
| 816 | + else if(!memcmp(guid,&IID_IDirect3D2,sizeof(GUID))) strcpy(str,"IID_IDirect3D2");
|
| 817 | + else if(!memcmp(guid,&IID_IDirect3D3,sizeof(GUID))) strcpy(str,"IID_IDirect3D3");
|
| 818 | + else if(!memcmp(guid,&IID_IDirect3D7,sizeof(GUID))) strcpy(str,"IID_IDirect3D7");
|
| 819 | + else
|
| 820 | + {
|
| 821 | + OLECHAR guidstr[41] = {0};
|
| 822 | + StringFromGUID2(guid,guidstr,40);
|
| 823 | + WideCharToMultiByte(CP_UTF8,0,guidstr,-1,str,64,NULL,NULL);
|
| 824 | + }
|
| 825 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 826 | +}
|
| 827 | +static void trace_decode_size(SIZE *size)
|
| 828 | +{
|
| 829 | + DWORD byteswritten;
|
| 830 | + char str[64];
|
| 831 | + sprintf(str,"{%d,%d}",size->cx,size->cy);
|
| 832 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 833 | +}
|
| 834 | +static void trace_decode_rect(RECT *rect)
|
| 835 | +{
|
| 836 | + DWORD byteswritten;
|
| 837 | + char str[64];
|
| 838 | + sprintf(str,"{%d,%d,%d,%d}",rect->left,rect->top,rect->right,rect->bottom);
|
| 839 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 840 | +}
|
| 841 | +static void init_trace()
|
| 842 | +{
|
| 843 | + TCHAR path[MAX_PATH+1];
|
| 844 | + TCHAR *path_truncate;
|
| 845 | + InitializeCriticalSection(&trace_cs);
|
| 846 | + GetModuleFileName(NULL,path,MAX_PATH);
|
| 847 | + path_truncate = _tcsrchr(path,_T('\\'));
|
| 848 | + if(path_truncate) *(path_truncate+1) = 0;
|
| 849 | + _tcscat(path,_T("dxgl.log"));
|
| 850 | + outfile = CreateFile(path,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
|
| 851 | + if(outfile == INVALID_HANDLE_VALUE)
|
| 852 | + {
|
| 853 | + trace_fail = TRUE;
|
| 854 | + return;
|
| 855 | + }
|
| 856 | + trace_ready = TRUE;
|
| 857 | +}
|
| 858 | +static void trace_decode_arg(int type, void *arg)
|
| 859 | +{
|
| 860 | + DWORD byteswritten;
|
| 861 | + char str[128];
|
| 862 | + char *mbcsbuffer;
|
| 863 | + int buffersize;
|
| 864 | + str[0] = 0;
|
| 865 | + switch(type)
|
| 866 | + {
|
| 867 | + case -1: // C++ constructor/destructor
|
| 868 | + // No return type in a constructor or destructor.
|
| 869 | + break;
|
| 870 | + case 0: // void
|
| 871 | + WriteFile(outfile,"void",4,&byteswritten,NULL);
|
| 872 | + break;
|
| 873 | + case 1: // 8-bit signed
|
| 874 | + sprintf(str,"%d",(signed char)arg);
|
| 875 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 876 | + break;
|
| 877 | + case 2: // 8-bit unsigned
|
| 878 | + sprintf(str,"%u",(unsigned char)arg);
|
| 879 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 880 | + break;
|
| 881 | + case 3: // 8-bit hex
|
| 882 | + sprintf(str,"0x%02X",(unsigned char)arg);
|
| 883 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 884 | + break;
|
| 885 | + case 4: // 16-bit signed
|
| 886 | + sprintf(str,"%d",(signed short)arg);
|
| 887 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 888 | + break;
|
| 889 | + case 5: // 16-bit unsigned
|
| 890 | + sprintf(str,"%u",(unsigned short)arg);
|
| 891 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 892 | + break;
|
| 893 | + case 6: // 16-bit hex
|
| 894 | + sprintf(str,"0x%04X",(unsigned short)arg);
|
| 895 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 896 | + break;
|
| 897 | + case 7: // 32-bit signed
|
| 898 | + sprintf(str,"%d",(signed long)arg);
|
| 899 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 900 | + break;
|
| 901 | + case 8: // 32-bit unsigned
|
| 902 | + sprintf(str,"%u",(unsigned long)arg);
|
| 903 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 904 | + break;
|
| 905 | + case 9: // 32-bit hex
|
| 906 | + sprintf(str,"0x%08X",(unsigned long)arg);
|
| 907 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 908 | + break;
|
| 909 | + case 10: // pointer to 64-bit hex
|
| 910 | + sprintf(str,"0x%016I64X",(unsigned __int64)*(unsigned __int64*)arg);
|
| 911 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 912 | + break;
|
| 913 | + case 11: // native signed
|
| 914 | + sprintf(str,"%d",(signed int)arg);
|
| 915 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 916 | + break;
|
| 917 | + case 12: // native unsigned
|
| 918 | + sprintf(str,"%u",(unsigned int)arg);
|
| 919 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 920 | + break;
|
| 921 | + case 13: // native hex
|
| 922 | + sprintf(str,"0x%08X",(unsigned int)arg);
|
| 923 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 924 | + break;
|
| 925 | + case 14: // generic pointer
|
| 926 | + if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
| 927 | + else
|
| 928 | + {
|
| 929 | +#ifdef _M_X64
|
| 930 | + sprintf(str,"0x%016I64X",arg);
|
| 931 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 932 | +#else
|
| 933 | + sprintf(str,"0x%08X",arg);
|
| 934 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 935 | +#endif
|
| 936 | + }
|
| 937 | + break;
|
| 938 | + case 15: // ASCII string
|
| 939 | + if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
| 940 | + else
|
| 941 | + {
|
| 942 | + WriteFile(outfile,"\"",1,&byteswritten,NULL);
|
| 943 | + WriteFile(outfile,arg,strlen((char*)arg),&byteswritten,NULL);
|
| 944 | + WriteFile(outfile,"\"",1,&byteswritten,NULL);
|
| 945 | + }
|
| 946 | + break;
|
| 947 | + case 16: // Unicode string
|
| 948 | + if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
| 949 | + else
|
| 950 | + {
|
| 951 | + WriteFile(outfile,"L\"",1,&byteswritten,NULL);
|
| 952 | + buffersize = WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,NULL,0,NULL,NULL);
|
| 953 | + mbcsbuffer = (char*)malloc(buffersize);
|
| 954 | + if(!mbcsbuffer) WriteFile(outfile,"OUT OF MEMORY",13,&byteswritten,NULL);
|
| 955 | + else
|
| 956 | + {
|
| 957 | + WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,mbcsbuffer,buffersize,NULL,NULL);
|
| 958 | + WriteFile(outfile,mbcsbuffer,strlen(mbcsbuffer),&byteswritten,NULL);
|
| 959 | + free(mbcsbuffer);
|
| 960 | + }
|
| 961 | + WriteFile(outfile,"\"",1,&byteswritten,NULL);
|
| 962 | + }
|
| 963 | + break;
|
| 964 | + case 17: // TCHAR string
|
| 965 | + if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
| 966 | +#ifdef _UNICODE
|
| 967 | + else
|
| 968 | + {
|
| 969 | + WriteFile(outfile,"_T(\"",1,&byteswritten,NULL);
|
| 970 | + buffersize = WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,NULL,0,NULL,NULL);
|
| 971 | + mbcsbuffer = (char*)malloc(buffersize);
|
| 972 | + if(!mbcsbuffer) WriteFile(outfile,"OUT OF MEMORY",13,&byteswritten,NULL);
|
| 973 | + else
|
| 974 | + {
|
| 975 | + WideCharToMultiByte(CP_UTF8,0,(wchar_t*)arg,-1,mbcsbuffer,buffersize,NULL,NULL);
|
| 976 | + WriteFile(outfile,mbcsbuffer,strlen(mbcsbuffer),&byteswritten,NULL);
|
| 977 | + free(mbcsbuffer);
|
| 978 | + }
|
| 979 | + WriteFile(outfile,"\")",1,&byteswritten,NULL);
|
| 980 | + }
|
| 981 | +#else
|
| 982 | + else
|
| 983 | + {
|
| 984 | + WriteFile(outfile,"_T(\"",1,&byteswritten,NULL);
|
| 985 | + WriteFile(outfile,arg,strlen((char*)arg),&byteswritten,NULL);
|
| 986 | + WriteFile(outfile,"\")",1,&byteswritten,NULL);
|
| 987 | + }
|
| 988 | +#endif
|
| 989 | + break;
|
| 990 | + case 18: // ASCII character
|
| 991 | + if(!(unsigned char)arg) WriteFile(outfile,"\'\\0\'",4,&byteswritten,NULL);
|
| 992 | + else
|
| 993 | + {
|
| 994 | + str[0] = str[2] = '\'';
|
| 995 | + str[1] = (unsigned char)arg;
|
| 996 | + str[3] = 0;
|
| 997 | + WriteFile(outfile,str,3,&byteswritten,NULL);
|
| 998 | + }
|
| 999 | + break;
|
| 1000 | + case 19: // pointer to 32 bit float
|
| 1001 | + sprintf(str,"%f",arg);
|
| 1002 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 1003 | + break;
|
| 1004 | + case 20: // pointer to 64 bit float
|
| 1005 | + sprintf(str,"%lf",arg);
|
| 1006 | + WriteFile(outfile,str,strlen(str),&byteswritten,NULL);
|
| 1007 | + break;
|
| 1008 | + case 21: // c++ bool
|
| 1009 | + if((unsigned char)arg) WriteFile(outfile,"true",4,&byteswritten,NULL);
|
| 1010 | + else WriteFile(outfile,"false",5,&byteswritten,NULL);
|
| 1011 | + break;
|
| 1012 | + case 22: // c++ bool
|
| 1013 | + if(arg) WriteFile(outfile,"TRUE",4,&byteswritten,NULL);
|
| 1014 | + else WriteFile(outfile,"FALSE",5,&byteswritten,NULL);
|
| 1015 | + break;
|
| 1016 | + case 23: // HRESULT
|
| 1017 | + trace_decode_hresult((HRESULT)arg);
|
| 1018 | + break;
|
| 1019 | + case 24: // GUID pointer
|
| 1020 | + if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
| 1021 | + else if(arg == (void*)DDCREATE_HARDWAREONLY) WriteFile(outfile,"DDCREATE_HARDWAREONLY",21,&byteswritten,NULL);
|
| 1022 | + else if(arg == (void*)DDCREATE_EMULATIONONLY) WriteFile(outfile,"DDCREATE_EMULATIONONLY",22,&byteswritten,NULL);
|
| 1023 | + else trace_decode_guid((GUID*)arg);
|
| 1024 | + break;
|
| 1025 | + case 25: // SIZE or POINT pointer
|
| 1026 | + if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
| 1027 | + else trace_decode_size((SIZE*)arg);
|
| 1028 | + break;
|
| 1029 | + case 26: // RECT pointer
|
| 1030 | + if(!arg) WriteFile(outfile,"NULL",4,&byteswritten,NULL);
|
| 1031 | + else trace_decode_rect((RECT*)arg);
|
| 1032 | + break;
|
| 1033 | + case 27: // D3DRENDERSTATETYPE
|
| 1034 | + trace_decode_d3drenderstate((DWORD)arg);
|
| 1035 | + break;
|
| 1036 | + case 28: // D3DTEXTURESTAGESTATETYPE
|
| 1037 | + trace_decode_d3dtexturestagestate((DWORD)arg);
|
| 1038 | + break;
|
| 1039 | + case 29: // D3DTRANSFORMSTATETYPE
|
| 1040 | + trace_decode_d3dtransformstate((DWORD)arg);
|
| 1041 | + break;
|
| 1042 | + case 30: // D3DLIGHTSTATETYPE
|
| 1043 | + trace_decode_d3dlightstate((DWORD)arg);
|
| 1044 | + break;
|
| 1045 | + default:
|
| 1046 | + WriteFile(outfile,"Unknown type",12,&byteswritten,NULL);
|
| 1047 | + break;
|
| 1048 | + }
|
| 1049 | +}
|
| 1050 | +static void end_trace()
|
| 1051 | +{
|
| 1052 | + DWORD byteswritten;
|
| 1053 | + WriteFile(outfile,"Trace cancelled by CTRL+Break\r\n",31,&byteswritten,NULL);
|
| 1054 | + CloseHandle(outfile);
|
| 1055 | + outfile = INVALID_HANDLE_VALUE;
|
| 1056 | + trace_fail = TRUE;
|
| 1057 | +}
|
| 1058 | +void trace_enter(const char *function, int paramcount, ...)
|
| 1059 | +{
|
| 1060 | + va_list args;
|
| 1061 | + DWORD byteswritten;
|
| 1062 | + unsigned int i;
|
| 1063 | + int argtype;
|
| 1064 | + if (trace_fail) return;
|
| 1065 | + if(!trace_ready) init_trace();
|
| 1066 | + EnterCriticalSection(&trace_cs);
|
| 1067 | + if(trace_end)
|
| 1068 | + {
|
| 1069 | + end_trace();
|
| 1070 | + LeaveCriticalSection(&trace_cs);
|
| 1071 | + return;
|
| 1072 | + }
|
| 1073 | + va_start(args,paramcount);
|
| 1074 | + for(i = 0; i < trace_depth; i++)
|
| 1075 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1076 | + WriteFile(outfile,function,strlen(function),&byteswritten,NULL);
|
| 1077 | + WriteFile(outfile,"(",1,&byteswritten,NULL);
|
| 1078 | + for(i = 0; i < (unsigned)paramcount; i++)
|
| 1079 | + {
|
| 1080 | + if(i != 0) WriteFile(outfile,", ",2,&byteswritten,NULL);
|
| 1081 | + argtype = va_arg(args,int);
|
| 1082 | + trace_decode_arg(argtype,va_arg(args,void*));
|
| 1083 | + }
|
| 1084 | + WriteFile(outfile,");\r\n",4,&byteswritten,NULL);
|
| 1085 | + trace_depth++;
|
| 1086 | + LeaveCriticalSection(&trace_cs);
|
| 1087 | +}
|
| 1088 | +void trace_exit(const char *function, int argtype, void *arg)
|
| 1089 | +{
|
| 1090 | + DWORD byteswritten;
|
| 1091 | + unsigned int i;
|
| 1092 | + if (trace_fail) return;
|
| 1093 | + if(!trace_ready) init_trace();
|
| 1094 | + EnterCriticalSection(&trace_cs);
|
| 1095 | + if(trace_end)
|
| 1096 | + {
|
| 1097 | + end_trace();
|
| 1098 | + LeaveCriticalSection(&trace_cs);
|
| 1099 | + return;
|
| 1100 | + }
|
| 1101 | + if(trace_depth) trace_depth--;
|
| 1102 | + for(i = 0; i < trace_depth; i++)
|
| 1103 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1104 | + WriteFile(outfile,function,strlen(function),&byteswritten,NULL);
|
| 1105 | + WriteFile(outfile," returned ",10,&byteswritten,NULL);
|
| 1106 | + trace_decode_arg(argtype,arg);
|
| 1107 | + WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
| 1108 | + LeaveCriticalSection(&trace_cs);
|
| 1109 | +}
|
| 1110 | +void *trace_ret(const char *function, int argtype, void *arg)
|
| 1111 | +{
|
| 1112 | + trace_exit(function,argtype,arg);
|
| 1113 | + return arg;
|
| 1114 | +}
|
| 1115 | +void trace_var(const char *function, const char *var, int argtype, void *arg)
|
| 1116 | +{
|
| 1117 | + DWORD byteswritten;
|
| 1118 | + unsigned int i;
|
| 1119 | + if (trace_fail) return;
|
| 1120 | + if(!trace_ready) init_trace();
|
| 1121 | + EnterCriticalSection(&trace_cs);
|
| 1122 | + if(trace_end)
|
| 1123 | + {
|
| 1124 | + end_trace();
|
| 1125 | + LeaveCriticalSection(&trace_cs);
|
| 1126 | + return;
|
| 1127 | + }
|
| 1128 | + for(i = 0; i < trace_depth-1; i++)
|
| 1129 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1130 | + WriteFile(outfile,function,strlen(function),&byteswritten,NULL);
|
| 1131 | + WriteFile(outfile,": ",2,&byteswritten,NULL);
|
| 1132 | + WriteFile(outfile,var,strlen(var),&byteswritten,NULL);
|
| 1133 | + WriteFile(outfile," set to ",8,&byteswritten,NULL);
|
| 1134 | + trace_decode_arg(argtype,arg);
|
| 1135 | + WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
| 1136 | + LeaveCriticalSection(&trace_cs);
|
| 1137 | +}
|
| 1138 | +
|
| 1139 | +void trace_sysinfo()
|
| 1140 | +{
|
| 1141 | + DWORD byteswritten;
|
| 1142 | + OSVERSIONINFOA osver;
|
| 1143 | + DWORD buildver;
|
| 1144 | + char osstring[256];
|
| 1145 | + HMODULE hKernel32;
|
| 1146 | + BOOL(WINAPI *iswow64)(HANDLE, PBOOL);
|
| 1147 | + BOOL is64;
|
| 1148 | + unsigned int i;
|
| 1149 | + const GLubyte *glstring;
|
| 1150 | + if (trace_fail) return;
|
| 1151 | + if(!trace_ready) init_trace();
|
| 1152 | + EnterCriticalSection(&trace_cs);
|
| 1153 | + if(trace_end)
|
| 1154 | + {
|
| 1155 | + end_trace();
|
| 1156 | + LeaveCriticalSection(&trace_cs);
|
| 1157 | + return;
|
| 1158 | + }
|
| 1159 | + osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
|
| 1160 | + GetVersionExA(&osver);
|
| 1161 | + if(osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) buildver = LOWORD(osver.dwBuildNumber);
|
| 1162 | + else buildver = osver.dwBuildNumber;
|
| 1163 | + if((osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) || (osver.dwPlatformId == VER_PLATFORM_WIN32s))
|
| 1164 | + sprintf(osstring,"Windows %u.%u.%u",osver.dwMajorVersion,osver.dwMinorVersion,buildver);
|
| 1165 | + else sprintf(osstring,"Windows NT %u.%u.%u",osver.dwMajorVersion,osver.dwMinorVersion,buildver);
|
| 1166 | + if(osver.szCSDVersion[0])
|
| 1167 | + {
|
| 1168 | + strcat(osstring,", ");
|
| 1169 | + strcat(osstring,osver.szCSDVersion);
|
| 1170 | + }
|
| 1171 | + if(((osver.dwMajorVersion == 5) && (osver.dwMinorVersion >= 1)) || (osver.dwMajorVersion >= 6))
|
| 1172 | + {
|
| 1173 | + strcat(osstring,", ");
|
| 1174 | + hKernel32 = LoadLibrary(_T("kernel32.dll"));
|
| 1175 | + iswow64 = NULL;
|
| 1176 | + if(hKernel32) iswow64 = (BOOL(WINAPI*)(HANDLE,PBOOL))GetProcAddress(hKernel32,"IsWow64Process");
|
| 1177 | + is64 = FALSE;
|
| 1178 | + if(iswow64) iswow64(GetCurrentProcess(),&is64);
|
| 1179 | + if(hKernel32) FreeLibrary(hKernel32);
|
| 1180 | + if(is64) strcat(osstring,"64-bit");
|
| 1181 | + else strcat(osstring,"32-bit");
|
| 1182 | + }
|
| 1183 | + strcat(osstring,"\r\n");
|
| 1184 | + for(i = 0; i < trace_depth-1; i++)
|
| 1185 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1186 | + WriteFile(outfile,"Windows version: ",18,&byteswritten,NULL);
|
| 1187 | + WriteFile(outfile,osstring,strlen(osstring),&byteswritten,NULL);
|
| 1188 | + for(i = 0; i < trace_depth-1; i++)
|
| 1189 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1190 | + WriteFile(outfile,"GL_VENDOR: ",12,&byteswritten,NULL);
|
| 1191 | + glstring = glGetString(GL_VENDOR);
|
| 1192 | + if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
| 1193 | + WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
| 1194 | + for(i = 0; i < trace_depth-1; i++)
|
| 1195 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1196 | + WriteFile(outfile,"GL_RENDERER: ",14,&byteswritten,NULL);
|
| 1197 | + glstring = glGetString(GL_RENDERER);
|
| 1198 | + if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
| 1199 | + WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
| 1200 | + for(i = 0; i < trace_depth-1; i++)
|
| 1201 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1202 | + WriteFile(outfile,"GL_VERSION: ",13,&byteswritten,NULL);
|
| 1203 | + glstring = glGetString(GL_VERSION);
|
| 1204 | + if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
| 1205 | + WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
| 1206 | + for(i = 0; i < trace_depth-1; i++)
|
| 1207 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1208 | + WriteFile(outfile,"GL_SHADING_LANGUAGE_VERSION: ",30,&byteswritten,NULL);
|
| 1209 | + glstring = glGetString(GL_SHADING_LANGUAGE_VERSION);
|
| 1210 | + if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
| 1211 | + WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
| 1212 | + for(i = 0; i < trace_depth-1; i++)
|
| 1213 | + WriteFile(outfile," ",4,&byteswritten,NULL);
|
| 1214 | + WriteFile(outfile,"GL_EXTENSIONS: ",16,&byteswritten,NULL);
|
| 1215 | + glstring = glGetString(GL_EXTENSIONS);
|
| 1216 | + if(glstring) WriteFile(outfile,glstring,strlen((const char*)glstring),&byteswritten,NULL);
|
| 1217 | + WriteFile(outfile,"\r\n",2,&byteswritten,NULL);
|
| 1218 | + LeaveCriticalSection(&trace_cs);
|
| 1219 | +}
|
| 1220 | +#endif |
\ No newline at end of file |
Index: ddraw/trace.h |
— | — | @@ -19,9 +19,13 @@ |
20 | 20 | #ifndef _TRACE_H
|
21 | 21 | #define _TRACE_H
|
22 | 22 |
|
| 23 | +#ifdef __cplusplus
|
| 24 | +extern "C" {
|
| 25 | +#endif
|
23 | 26 |
|
| 27 | +
|
24 | 28 | #ifdef _TRACE
|
25 | | -extern bool trace_end;
|
| 29 | +extern BOOL trace_end;
|
26 | 30 | #define TRACE_ENTER(paramcount,...) trace_enter(__FUNCTION__,paramcount,__VA_ARGS__)
|
27 | 31 | #define TRACE_EXIT(argtype,arg) trace_exit(__FUNCTION__,argtype,(void*)arg)
|
28 | 32 | #define TRACE_VAR(var,argtype,arg) trace_var(__FUNCTION__,var,argtype,(void*)arg)
|
— | — | @@ -40,4 +44,8 @@ |
41 | 45 | #define TRACE_SYSINFO()
|
42 | 46 | #endif
|
43 | 47 |
|
| 48 | +#ifdef __cplusplus
|
| 49 | +}
|
| 50 | +#endif
|
| 51 | +
|
44 | 52 | #endif //_TRACE_H |
\ No newline at end of file |