1 2 #include "nine_debug.h" 3 #include "nine_pipe.h" 4 5 #include <stdio.h> 6 #include "util/u_memory.h" 7 #include "util/u_math.h" 8 9 #include "nine_dump.h" 10 11 #ifdef DEBUG 12 13 static char __thread tls[128]; 14 15 const char *nine_D3DDEVTYPE_to_str(D3DDEVTYPE type) 16 { 17 switch (type) { 18 case D3DDEVTYPE_HAL: return "HAL"; 19 case D3DDEVTYPE_NULLREF: return "NULLREF"; 20 case D3DDEVTYPE_REF: return "REF"; 21 case D3DDEVTYPE_SW: return "SW"; 22 default: 23 return "(D3DDEVTYPE_?)"; 24 } 25 } 26 27 const char *nine_D3DPOOL_to_str(D3DPOOL pool) 28 { 29 switch (pool) { 30 case D3DPOOL_DEFAULT: return "DEFAULT"; 31 case D3DPOOL_MANAGED: return "MANAGED"; 32 case D3DPOOL_SYSTEMMEM: return "SYSTEMMEM"; 33 case D3DPOOL_SCRATCH: return "SCRATCH"; 34 default: 35 return "(D3DPOOL_?)"; 36 } 37 } 38 39 const char *nine_D3DSAMP_to_str(DWORD samp) 40 { 41 switch (samp) { 42 case D3DSAMP_ADDRESSU: return "ADDRESSU"; 43 case D3DSAMP_ADDRESSV: return "ADDRESSV"; 44 case D3DSAMP_ADDRESSW: return "ADDRESSW"; 45 case D3DSAMP_BORDERCOLOR: return "BORDERCOLOR"; 46 case D3DSAMP_MAGFILTER: return "MAGFILTER"; 47 case D3DSAMP_MINFILTER: return "MINFILTER"; 48 case D3DSAMP_MIPFILTER: return "MIPFILTER"; 49 case D3DSAMP_MIPMAPLODBIAS: return "MIPMAPLODBIAS"; 50 case D3DSAMP_MAXMIPLEVEL: return "MAXMIPLEVEL"; 51 case D3DSAMP_MAXANISOTROPY: return "MAXANISOTROPY"; 52 case D3DSAMP_SRGBTEXTURE: return "SRGBTEXTURE"; 53 case D3DSAMP_ELEMENTINDEX: return "ELEMENTINDEX"; 54 case D3DSAMP_DMAPOFFSET: return "DMAPOFFSET"; 55 default: 56 return "(D3DSAMP_?)"; 57 } 58 } 59 60 #define C2S(n,s) \ 61 do { \ 62 if (usage & D3DUSAGE_##n) p += snprintf(&tls[p], sizeof(tls) - p, s); \ 63 } while(0) 64 const char *nine_D3DUSAGE_to_str(DWORD usage) 65 { 66 int p = 0; 67 tls[0] = 0; 68 C2S(AUTOGENMIPMAP, "MIPGEN"); 69 C2S(WRITEONLY, "WO"); 70 C2S(DYNAMIC, "DYNAMIC"); 71 C2S(DEPTHSTENCIL, "DS"); 72 C2S(RENDERTARGET, "RT"); 73 C2S(SOFTWAREPROCESSING, "SW"); 74 C2S(DONOTCLIP, "NOCLIP"); 75 C2S(POINTS, "POINTS"); 76 C2S(DMAP, "DMAP"); 77 C2S(NPATCHES, "NPATCHES"); 78 C2S(RTPATCHES, "RTPATCHES"); 79 C2S(TEXTAPI, "TEXTAPI"); 80 C2S(NONSECURE, "NONSECURE"); 81 C2S(RESTRICTED_CONTENT, "RESTRICTED_CONTENT"); 82 C2S(RESTRICT_SHARED_RESOURCE, "RESTRICT_SHARED_RESOURCE"); 83 C2S(RESTRICT_SHARED_RESOURCE_DRIVER, "RESTRICT_SHARED_RESOURCE_DRIVER"); 84 return tls; 85 } 86 #undef C2S 87 88 #define C2S(n) \ 89 do { \ 90 if (flags & D3DPRESENTFLAG_##n) \ 91 p += snprintf(&tls[p], sizeof(tls) - p, #n); \ 92 } while(0) 93 const char *nine_D3DPRESENTFLAG_to_str(DWORD flags) 94 { 95 int p = 0; 96 tls[0] = 0; 97 C2S(DEVICECLIP); 98 C2S(DISCARD_DEPTHSTENCIL); 99 C2S(LOCKABLE_BACKBUFFER); 100 C2S(NOAUTOROTATE); 101 C2S(UNPRUNEDMODE); 102 C2S(VIDEO); 103 C2S(OVERLAY_LIMITEDRGB); 104 C2S(OVERLAY_YCbCr_BT709); 105 C2S(OVERLAY_YCbCr_xvYCC); 106 C2S(RESTRICTED_CONTENT); 107 C2S(RESTRICT_SHARED_RESOURCE_DRIVER); 108 return tls; 109 } 110 #undef C2S 111 112 #define C2S(n) \ 113 do { \ 114 if (lock & D3DLOCK_##n) p += snprintf(&tls[p], sizeof(tls) - p, #n"|"); \ 115 } while(0) 116 const char *nine_D3DLOCK_to_str(DWORD lock) 117 { 118 int p = 0; 119 tls[0] = 0; 120 C2S(DISCARD); 121 C2S(DONOTWAIT); 122 C2S(NO_DIRTY_UPDATE); 123 C2S(NOOVERWRITE); 124 C2S(NOSYSLOCK); 125 C2S(READONLY); 126 return tls; 127 } 128 #undef C2S 129 130 const char *nine_D3DRTYPE_to_str(D3DRESOURCETYPE type) 131 { 132 switch (type) { 133 case D3DRTYPE_SURFACE: return "SURFACE"; 134 case D3DRTYPE_VOLUME: return "VOLUME"; 135 case D3DRTYPE_TEXTURE: return "TEXTURE"; 136 case D3DRTYPE_VOLUMETEXTURE: return "VOLUMETEXTURE"; 137 case D3DRTYPE_CUBETEXTURE: return "CUBETEXTURE"; 138 case D3DRTYPE_VERTEXBUFFER: return "VERTEXBUFFER"; 139 case D3DRTYPE_INDEXBUFFER: return "INDEXBUFFER"; 140 default: 141 return "(D3DRTYPE_?)"; 142 } 143 } 144 145 const char *nine_D3DQUERYTYPE_to_str(D3DQUERYTYPE type) 146 { 147 switch (type) { 148 case D3DQUERYTYPE_VCACHE: return "VCACHE"; 149 case D3DQUERYTYPE_RESOURCEMANAGER: return "RESOURCEMANAGER"; 150 case D3DQUERYTYPE_VERTEXSTATS: return "VERTEXSTATS"; 151 case D3DQUERYTYPE_EVENT: return "EVENT"; 152 case D3DQUERYTYPE_OCCLUSION: return "OCCLUSION"; 153 case D3DQUERYTYPE_TIMESTAMP: return "TIMESTAMP"; 154 case D3DQUERYTYPE_TIMESTAMPDISJOINT: return "TIMESTAMPDISJOINT"; 155 case D3DQUERYTYPE_TIMESTAMPFREQ: return "TIMESTAMPFREQ"; 156 case D3DQUERYTYPE_PIPELINETIMINGS: return "PIPELINETIMINGS"; 157 case D3DQUERYTYPE_INTERFACETIMINGS: return "INTERFACETIMINGS"; 158 case D3DQUERYTYPE_VERTEXTIMINGS: return "VERTEXTIMINGS"; 159 case D3DQUERYTYPE_PIXELTIMINGS: return "PIXELTIMINGS"; 160 case D3DQUERYTYPE_BANDWIDTHTIMINGS: return "BANDWIDTHTIMINGS"; 161 case D3DQUERYTYPE_CACHEUTILIZATION: return "CACHEUTILIZATION"; 162 default: 163 return "(D3DQUERYTYPE_?)"; 164 } 165 } 166 167 const char *nine_D3DTSS_to_str(D3DTEXTURESTAGESTATETYPE type) 168 { 169 switch (type) { 170 case D3DTSS_COLOROP: return "COLOROP"; 171 case D3DTSS_ALPHAOP: return "ALPHAOP"; 172 case D3DTSS_COLORARG0: return "COLORARG0"; 173 case D3DTSS_COLORARG1: return "COLORARG1"; 174 case D3DTSS_COLORARG2: return "COLORARG2"; 175 case D3DTSS_ALPHAARG0: return "ALPHAARG0"; 176 case D3DTSS_ALPHAARG1: return "ALPHAARG1"; 177 case D3DTSS_ALPHAARG2: return "ALPHAARG2"; 178 case D3DTSS_RESULTARG: return "RESULTARG"; 179 case D3DTSS_BUMPENVMAT00: return "BUMPENVMAT00"; 180 case D3DTSS_BUMPENVMAT01: return "BUMPENVMAT01"; 181 case D3DTSS_BUMPENVMAT10: return "BUMPENVMAT10"; 182 case D3DTSS_BUMPENVMAT11: return "BUMPENVMAT11"; 183 case D3DTSS_BUMPENVLSCALE: return "BUMPENVLSCALE"; 184 case D3DTSS_BUMPENVLOFFSET: return "BUMPENVLOFFSET"; 185 case D3DTSS_TEXCOORDINDEX: return "TEXCOORDINDEX"; 186 case D3DTSS_TEXTURETRANSFORMFLAGS: return "TEXTURETRANSFORMFLAGS"; 187 case D3DTSS_CONSTANT: return "CONSTANT"; 188 default: 189 return "(D3DTSS_?)"; 190 } 191 } 192 193 #define D3DTOP_TO_STR_CASE(n) case D3DTOP_##n: return #n 194 const char *nine_D3DTOP_to_str(D3DTEXTUREOP top) 195 { 196 switch (top) { 197 D3DTOP_TO_STR_CASE(DISABLE); 198 D3DTOP_TO_STR_CASE(SELECTARG1); 199 D3DTOP_TO_STR_CASE(SELECTARG2); 200 D3DTOP_TO_STR_CASE(MODULATE); 201 D3DTOP_TO_STR_CASE(MODULATE2X); 202 D3DTOP_TO_STR_CASE(MODULATE4X); 203 D3DTOP_TO_STR_CASE(ADD); 204 D3DTOP_TO_STR_CASE(ADDSIGNED); 205 D3DTOP_TO_STR_CASE(ADDSIGNED2X); 206 D3DTOP_TO_STR_CASE(SUBTRACT); 207 D3DTOP_TO_STR_CASE(ADDSMOOTH); 208 D3DTOP_TO_STR_CASE(BLENDDIFFUSEALPHA); 209 D3DTOP_TO_STR_CASE(BLENDTEXTUREALPHA); 210 D3DTOP_TO_STR_CASE(BLENDFACTORALPHA); 211 D3DTOP_TO_STR_CASE(BLENDTEXTUREALPHAPM); 212 D3DTOP_TO_STR_CASE(BLENDCURRENTALPHA); 213 D3DTOP_TO_STR_CASE(PREMODULATE); 214 D3DTOP_TO_STR_CASE(MODULATEALPHA_ADDCOLOR); 215 D3DTOP_TO_STR_CASE(MODULATECOLOR_ADDALPHA); 216 D3DTOP_TO_STR_CASE(MODULATEINVALPHA_ADDCOLOR); 217 D3DTOP_TO_STR_CASE(MODULATEINVCOLOR_ADDALPHA); 218 D3DTOP_TO_STR_CASE(BUMPENVMAP); 219 D3DTOP_TO_STR_CASE(BUMPENVMAPLUMINANCE); 220 D3DTOP_TO_STR_CASE(DOTPRODUCT3); 221 D3DTOP_TO_STR_CASE(MULTIPLYADD); 222 D3DTOP_TO_STR_CASE(LERP); 223 default: 224 return "(D3DTOP_?)"; 225 } 226 } 227 228 static const char * 229 nine_D3DLIGHTTYPE_to_str(D3DLIGHTTYPE type) 230 { 231 switch (type) { 232 case D3DLIGHT_POINT: return "POINT"; 233 case D3DLIGHT_SPOT: return "SPOT"; 234 case D3DLIGHT_DIRECTIONAL: return "DIRECTIONAL"; 235 default: 236 return "(D3DLIGHT_?)"; 237 } 238 } 239 240 static const char * 241 nine_D3DTA_to_str(DWORD value) 242 { 243 switch (value & D3DTA_SELECTMASK) { 244 case D3DTA_DIFFUSE: return "DIFFUSE"; 245 case D3DTA_CURRENT: return "CURRENT"; 246 case D3DTA_TEXTURE: return "TEXTURE"; 247 case D3DTA_TFACTOR: return "TFACTOR"; 248 case D3DTA_SPECULAR: return "SPECULAR"; 249 case D3DTA_TEMP: return "TEMP"; 250 case D3DTA_CONSTANT: return "CONSTANT"; 251 default: 252 return "(D3DTA_?)"; 253 } 254 } 255 256 static const char * 257 nine_D3DTSS_TCI_to_str(DWORD value) 258 { 259 switch (value & 0xf0000) { 260 case D3DTSS_TCI_PASSTHRU: return "PASSTHRU"; 261 case D3DTSS_TCI_CAMERASPACENORMAL: return "CAMERASPACENORMAL"; 262 case D3DTSS_TCI_CAMERASPACEPOSITION: return "CAMERASPACEPOSITION"; 263 case D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR: 264 return "CAMERASPACEREFLECTIONVECTOR"; 265 case D3DTSS_TCI_SPHEREMAP: return "SPHEREMAP"; 266 default: 267 return "(D3DTSS_TCI_?)"; 268 } 269 } 270 271 static const char * 272 nine_D3DTTFF_to_str(DWORD value) 273 { 274 switch (value) { 275 case D3DTTFF_DISABLE: return "DISABLE"; 276 case D3DTTFF_COUNT1: return "COUNT1"; 277 case D3DTTFF_COUNT2: return "COUNT2"; 278 case D3DTTFF_COUNT3: return "COUNT3"; 279 case D3DTTFF_COUNT4: return "COUNT4"; 280 case D3DTTFF_PROJECTED: return "PROJECTED"; 281 default: 282 return "(D3DTTFF_?)"; 283 } 284 } 285 286 void 287 nine_dump_D3DLIGHT9(unsigned ch, const D3DLIGHT9 *lit) 288 { 289 DBG_FLAG(ch, "D3DLIGHT9(%p):\n" 290 "Type: %s\n" 291 "Diffuse: (%f %f %f %f)\n" 292 "Specular: (%f %f %f %f)\n" 293 "Ambient: (%f %f %f %f)\n" 294 "Position: (%f %f %f)\n" 295 "Direction: (%f %f %f)\n" 296 "Range: %f\n" 297 "Falloff: %f\n" 298 "Attenuation: %f + %f * d + %f * d^2\n" 299 "Theta: %f deg\n" 300 "Phi: %f deg\n", lit, 301 nine_D3DLIGHTTYPE_to_str(lit->Type), 302 lit->Diffuse.r,lit->Diffuse.r,lit->Diffuse.g,lit->Diffuse.a, 303 lit->Specular.r,lit->Specular.r,lit->Specular.g,lit->Specular.a, 304 lit->Ambient.r,lit->Ambient.r,lit->Ambient.g,lit->Ambient.a, 305 lit->Position.x,lit->Position.y,lit->Position.z, 306 lit->Direction.x,lit->Direction.y,lit->Direction.z, 307 lit->Range,lit->Falloff, 308 lit->Attenuation0,lit->Attenuation1,lit->Attenuation2, 309 lit->Theta * 360.0f / M_PI,lit->Phi * 360.0f / M_PI); 310 } 311 312 void 313 nine_dump_D3DMATERIAL9(unsigned ch, const D3DMATERIAL9 *mat) 314 { 315 DBG_FLAG(ch, "D3DMATERIAL9(%p):\n" 316 "Diffuse: (%f %f %f %f)\n" 317 "Specular: (%f %f %f %f)\n" 318 "Ambient: (%f %f %f %f)\n" 319 "Emissive: (%f %f %f %f)\n" 320 "Power: %f\n", mat, 321 mat->Diffuse.r,mat->Diffuse.r,mat->Diffuse.g,mat->Diffuse.a, 322 mat->Specular.r,mat->Specular.r,mat->Specular.g,mat->Specular.a, 323 mat->Ambient.r,mat->Ambient.r,mat->Ambient.g,mat->Ambient.a, 324 mat->Emissive.r,mat->Emissive.r,mat->Emissive.g,mat->Emissive.a, 325 mat->Power); 326 } 327 328 void 329 nine_dump_D3DTSS_value(unsigned ch, D3DTEXTURESTAGESTATETYPE type, DWORD value) 330 { 331 float rgba[4]; 332 333 switch (type) { 334 case D3DTSS_COLOROP: 335 case D3DTSS_ALPHAOP: 336 DBG_FLAG(ch, "D3DTSS_%s = %s\n", 337 nine_D3DTSS_to_str(type), nine_D3DTOP_to_str(value)); 338 break; 339 case D3DTSS_COLORARG0: 340 case D3DTSS_COLORARG1: 341 case D3DTSS_COLORARG2: 342 case D3DTSS_ALPHAARG0: 343 case D3DTSS_ALPHAARG1: 344 case D3DTSS_ALPHAARG2: 345 case D3DTSS_RESULTARG: 346 DBG_FLAG(ch, "D3DTSS_%s = %s%s%s\n", 347 nine_D3DTSS_to_str(type), 348 (value & D3DTA_COMPLEMENT) ? "COMPLEMENT " : "", 349 (value & D3DTA_ALPHAREPLICATE) ? "ALPHAREPLICATE " : "", 350 nine_D3DTA_to_str(value)); 351 break; 352 case D3DTSS_BUMPENVMAT00: 353 case D3DTSS_BUMPENVMAT01: 354 case D3DTSS_BUMPENVMAT10: 355 case D3DTSS_BUMPENVMAT11: 356 case D3DTSS_BUMPENVLSCALE: 357 case D3DTSS_BUMPENVLOFFSET: 358 DBG_FLAG(ch, "D3DTSS_%s = %f\n", 359 nine_D3DTSS_to_str(type), asfloat(value)); 360 break; 361 case D3DTSS_TEXCOORDINDEX: 362 DBG_FLAG(ch, "D3DTSS_TEXCOORDINDEX = %s %u\n", 363 nine_D3DTSS_TCI_to_str(value), 364 value & 0xffff); 365 break; 366 case D3DTSS_TEXTURETRANSFORMFLAGS: 367 DBG_FLAG(ch, "D3DTSS_TEXTURETRANSFORMFLAGS = %s\n", 368 nine_D3DTTFF_to_str(value)); 369 break; 370 case D3DTSS_CONSTANT: 371 d3dcolor_to_rgba(rgba, value); 372 DBG_FLAG(ch, "D3DTSS_CONSTANT = %f %f %f %F\n", 373 rgba[0],rgba[1],rgba[2],rgba[3]); 374 break; 375 default: 376 DBG_FLAG(ch, "D3DTSS_? = 0x%08x\n", value); 377 break; 378 } 379 } 380 381 void 382 nine_dump_D3DADAPTER_IDENTIFIER9(unsigned ch, const D3DADAPTER_IDENTIFIER9 *id) 383 { 384 DBG_FLAG(ch, "D3DADAPTER_IDENTIFIER9(%p):\n" 385 "Driver: %s\n" 386 "Description: %s\n" 387 "DeviceName: %s\n" 388 "DriverVersion: %08x.%08x\n" 389 "VendorId: %x\n" 390 "DeviceId: %x\n" 391 "SubSysId: %x\n" 392 "Revision: %u\n" 393 "GUID: %08x.%04x.%04x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x\n" 394 "WHQLLevel: %u\n", id, id->Driver, id->Description, 395 id->DeviceName, 396 id->DriverVersionLowPart, id->DriverVersionHighPart, 397 id->VendorId, id->DeviceId, id->SubSysId, 398 id->Revision, 399 id->DeviceIdentifier.Data1, 400 id->DeviceIdentifier.Data2, 401 id->DeviceIdentifier.Data3, 402 id->DeviceIdentifier.Data4[0], 403 id->DeviceIdentifier.Data4[1], 404 id->DeviceIdentifier.Data4[2], 405 id->DeviceIdentifier.Data4[3], 406 id->DeviceIdentifier.Data4[4], 407 id->DeviceIdentifier.Data4[5], 408 id->DeviceIdentifier.Data4[6], 409 id->DeviceIdentifier.Data4[7], 410 id->WHQLLevel); 411 } 412 413 #define C2S(args...) p += snprintf(&s[p],c-p,args) 414 415 #define CAP_CASE(m,p,n) \ 416 do { \ 417 if (caps->m & p##_##n) \ 418 C2S(" "#n); \ 419 else \ 420 C2S(" ("#n")"); \ 421 } while(0) 422 423 void 424 nine_dump_D3DCAPS9(unsigned ch, const D3DCAPS9 *caps) 425 { 426 const int c = 1 << 17; 427 int p = 0; 428 char *s = (char *)MALLOC(c); 429 430 if (!s) { 431 DBG_FLAG(ch, "D3DCAPS9(%p): (out of memory)\n", caps); 432 return; 433 } 434 435 C2S("DeviceType: %s\n", nine_D3DDEVTYPE_to_str(caps->DeviceType)); 436 437 C2S("AdapterOrdinal: %u\nCaps:", caps->AdapterOrdinal); 438 if (caps->Caps & 0x20000) 439 C2S(" READ_SCANLINE"); 440 if (caps->Caps & ~0x20000) 441 C2S(" %x", caps->Caps & ~0x20000); 442 443 C2S("\nCaps2:"); 444 CAP_CASE(Caps2, D3DCAPS2, CANAUTOGENMIPMAP); 445 CAP_CASE(Caps2, D3DCAPS2, CANCALIBRATEGAMMA); 446 CAP_CASE(Caps2, D3DCAPS2, CANSHARERESOURCE); 447 CAP_CASE(Caps2, D3DCAPS2, CANMANAGERESOURCE); 448 CAP_CASE(Caps2, D3DCAPS2, DYNAMICTEXTURES); 449 CAP_CASE(Caps2, D3DCAPS2, FULLSCREENGAMMA); 450 451 C2S("\nCaps3:"); 452 CAP_CASE(Caps3, D3DCAPS3, ALPHA_FULLSCREEN_FLIP_OR_DISCARD); 453 CAP_CASE(Caps3, D3DCAPS3, COPY_TO_VIDMEM); 454 CAP_CASE(Caps3, D3DCAPS3, COPY_TO_SYSTEMMEM); 455 CAP_CASE(Caps3, D3DCAPS3, DXVAHD); 456 CAP_CASE(Caps3, D3DCAPS3, LINEAR_TO_SRGB_PRESENTATION); 457 458 C2S("\nPresentationIntervals:"); 459 CAP_CASE(PresentationIntervals, D3DPRESENT_INTERVAL, ONE); 460 CAP_CASE(PresentationIntervals, D3DPRESENT_INTERVAL, TWO); 461 CAP_CASE(PresentationIntervals, D3DPRESENT_INTERVAL, THREE); 462 CAP_CASE(PresentationIntervals, D3DPRESENT_INTERVAL, FOUR); 463 CAP_CASE(PresentationIntervals, D3DPRESENT_INTERVAL, IMMEDIATE); 464 465 C2S("\nCursorCaps:"); 466 CAP_CASE(CursorCaps, D3DCURSORCAPS, COLOR); 467 CAP_CASE(CursorCaps, D3DCURSORCAPS, LOWRES); 468 469 C2S("\nDevCaps:"); 470 CAP_CASE(DevCaps, D3DDEVCAPS, CANBLTSYSTONONLOCAL); 471 CAP_CASE(DevCaps, D3DDEVCAPS, CANRENDERAFTERFLIP); 472 CAP_CASE(DevCaps, D3DDEVCAPS, DRAWPRIMITIVES2); 473 CAP_CASE(DevCaps, D3DDEVCAPS, DRAWPRIMITIVES2EX); 474 CAP_CASE(DevCaps, D3DDEVCAPS, DRAWPRIMTLVERTEX); 475 CAP_CASE(DevCaps, D3DDEVCAPS, EXECUTESYSTEMMEMORY); 476 CAP_CASE(DevCaps, D3DDEVCAPS, EXECUTEVIDEOMEMORY); 477 CAP_CASE(DevCaps, D3DDEVCAPS, HWRASTERIZATION); 478 CAP_CASE(DevCaps, D3DDEVCAPS, HWTRANSFORMANDLIGHT); 479 CAP_CASE(DevCaps, D3DDEVCAPS, NPATCHES); 480 CAP_CASE(DevCaps, D3DDEVCAPS, PUREDEVICE); 481 CAP_CASE(DevCaps, D3DDEVCAPS, QUINTICRTPATCHES); 482 CAP_CASE(DevCaps, D3DDEVCAPS, RTPATCHES); 483 CAP_CASE(DevCaps, D3DDEVCAPS, RTPATCHHANDLEZERO); 484 CAP_CASE(DevCaps, D3DDEVCAPS, SEPARATETEXTUREMEMORIES); 485 CAP_CASE(DevCaps, D3DDEVCAPS, TEXTURENONLOCALVIDMEM); 486 CAP_CASE(DevCaps, D3DDEVCAPS, TEXTURESYSTEMMEMORY); 487 CAP_CASE(DevCaps, D3DDEVCAPS, TEXTUREVIDEOMEMORY); 488 CAP_CASE(DevCaps, D3DDEVCAPS, TLVERTEXSYSTEMMEMORY); 489 CAP_CASE(DevCaps, D3DDEVCAPS, TLVERTEXVIDEOMEMORY); 490 491 C2S("\nPrimitiveMiscCaps:"); 492 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, MASKZ); 493 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, CULLNONE); 494 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, CULLCW); 495 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, CULLCCW); 496 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, COLORWRITEENABLE); 497 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, CLIPPLANESCALEDPOINTS); 498 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, CLIPTLVERTS); 499 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, TSSARGTEMP); 500 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, BLENDOP); 501 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, NULLREFERENCE); 502 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, INDEPENDENTWRITEMASKS); 503 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, PERSTAGECONSTANT); 504 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, POSTBLENDSRGBCONVERT); 505 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, FOGANDSPECULARALPHA); 506 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, SEPARATEALPHABLEND); 507 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, MRTINDEPENDENTBITDEPTHS); 508 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, MRTPOSTPIXELSHADERBLENDING); 509 CAP_CASE(PrimitiveMiscCaps, D3DPMISCCAPS, FOGVERTEXCLAMPED); 510 511 C2S("\nRasterCaps:"); 512 CAP_CASE(RasterCaps, D3DPRASTERCAPS, ANISOTROPY); 513 CAP_CASE(RasterCaps, D3DPRASTERCAPS, COLORPERSPECTIVE); 514 CAP_CASE(RasterCaps, D3DPRASTERCAPS, DITHER); 515 CAP_CASE(RasterCaps, D3DPRASTERCAPS, DEPTHBIAS); 516 CAP_CASE(RasterCaps, D3DPRASTERCAPS, FOGRANGE); 517 CAP_CASE(RasterCaps, D3DPRASTERCAPS, FOGTABLE); 518 CAP_CASE(RasterCaps, D3DPRASTERCAPS, FOGVERTEX); 519 CAP_CASE(RasterCaps, D3DPRASTERCAPS, MIPMAPLODBIAS); 520 CAP_CASE(RasterCaps, D3DPRASTERCAPS, MULTISAMPLE_TOGGLE); 521 CAP_CASE(RasterCaps, D3DPRASTERCAPS, SCISSORTEST); 522 CAP_CASE(RasterCaps, D3DPRASTERCAPS, SLOPESCALEDEPTHBIAS); 523 CAP_CASE(RasterCaps, D3DPRASTERCAPS, WBUFFER); 524 CAP_CASE(RasterCaps, D3DPRASTERCAPS, WFOG); 525 CAP_CASE(RasterCaps, D3DPRASTERCAPS, ZBUFFERLESSHSR); 526 CAP_CASE(RasterCaps, D3DPRASTERCAPS, ZFOG); 527 CAP_CASE(RasterCaps, D3DPRASTERCAPS, ZTEST); 528 529 C2S("\nZCmpCaps:"); 530 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, ALWAYS); 531 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, EQUAL); 532 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, GREATER); 533 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, GREATEREQUAL); 534 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, LESS); 535 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, LESSEQUAL); 536 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, NEVER); 537 CAP_CASE(ZCmpCaps, D3DPCMPCAPS, NOTEQUAL); 538 539 C2S("\nSrcBlendCaps"); 540 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, BLENDFACTOR); 541 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, BOTHINVSRCALPHA); 542 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, BOTHSRCALPHA); 543 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, DESTALPHA); 544 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, DESTCOLOR); 545 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, INVDESTALPHA); 546 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, INVDESTCOLOR); 547 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, INVSRCALPHA); 548 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, INVSRCCOLOR); 549 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, INVSRCCOLOR2); 550 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, ONE); 551 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, SRCALPHA); 552 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, SRCALPHASAT); 553 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, SRCCOLOR); 554 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, SRCCOLOR2); 555 CAP_CASE(SrcBlendCaps, D3DPBLENDCAPS, ZERO); 556 557 C2S("\nDestBlendCaps"); 558 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, BLENDFACTOR); 559 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, BOTHINVSRCALPHA); 560 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, BOTHSRCALPHA); 561 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, DESTALPHA); 562 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, DESTCOLOR); 563 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, INVDESTALPHA); 564 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, INVDESTCOLOR); 565 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, INVSRCALPHA); 566 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, INVSRCCOLOR); 567 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, INVSRCCOLOR2); 568 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, ONE); 569 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, SRCALPHA); 570 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, SRCALPHASAT); 571 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, SRCCOLOR); 572 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, SRCCOLOR2); 573 CAP_CASE(DestBlendCaps, D3DPBLENDCAPS, ZERO); 574 575 C2S("\nAlphaCmpCaps:"); 576 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, ALWAYS); 577 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, EQUAL); 578 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, GREATER); 579 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, GREATEREQUAL); 580 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, LESS); 581 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, LESSEQUAL); 582 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, NEVER); 583 CAP_CASE(AlphaCmpCaps, D3DPCMPCAPS, NOTEQUAL); 584 585 C2S("\nShadeCaps:"); 586 CAP_CASE(ShadeCaps, D3DPSHADECAPS, ALPHAGOURAUDBLEND); 587 CAP_CASE(ShadeCaps, D3DPSHADECAPS, COLORGOURAUDRGB); 588 CAP_CASE(ShadeCaps, D3DPSHADECAPS, FOGGOURAUD); 589 CAP_CASE(ShadeCaps, D3DPSHADECAPS, SPECULARGOURAUDRGB); 590 591 C2S("\nTextureCaps:"); 592 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, ALPHA); 593 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, ALPHAPALETTE); 594 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, CUBEMAP); 595 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, CUBEMAP_POW2); 596 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, MIPCUBEMAP); 597 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, MIPMAP); 598 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, MIPVOLUMEMAP); 599 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, NONPOW2CONDITIONAL); 600 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, NOPROJECTEDBUMPENV); 601 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, PERSPECTIVE); 602 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, POW2); 603 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, PROJECTED); 604 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, SQUAREONLY); 605 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, TEXREPEATNOTSCALEDBYSIZE); 606 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, VOLUMEMAP); 607 CAP_CASE(TextureCaps, D3DPTEXTURECAPS, VOLUMEMAP_POW2); 608 609 C2S("\nTextureFilterCaps:"); 610 /* CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, CONVOLUTIONMONO); */ 611 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MAGFPOINT); 612 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MAGFLINEAR); 613 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MAGFANISOTROPIC); 614 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MAGFPYRAMIDALQUAD); 615 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MAGFGAUSSIANQUAD); 616 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MINFPOINT); 617 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MINFLINEAR); 618 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MINFANISOTROPIC); 619 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MINFPYRAMIDALQUAD); 620 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MINFGAUSSIANQUAD); 621 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MIPFPOINT); 622 CAP_CASE(TextureFilterCaps, D3DPTFILTERCAPS, MIPFLINEAR); 623 624 C2S("\nCubeTextureFilterCaps:"); 625 /* CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, CONVOLUTIONMONO); */ 626 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MAGFPOINT); 627 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MAGFLINEAR); 628 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MAGFANISOTROPIC); 629 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MAGFPYRAMIDALQUAD); 630 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MAGFGAUSSIANQUAD); 631 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MINFPOINT); 632 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MINFLINEAR); 633 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MINFANISOTROPIC); 634 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MINFPYRAMIDALQUAD); 635 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MINFGAUSSIANQUAD); 636 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MIPFPOINT); 637 CAP_CASE(CubeTextureFilterCaps, D3DPTFILTERCAPS, MIPFLINEAR); 638 639 C2S("\nVolumeTextureFilterCaps:"); 640 /* CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, CONVOLUTIONMONO); */ 641 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MAGFPOINT); 642 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MAGFLINEAR); 643 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MAGFANISOTROPIC); 644 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MAGFPYRAMIDALQUAD); 645 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MAGFGAUSSIANQUAD); 646 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MINFPOINT); 647 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MINFLINEAR); 648 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MINFANISOTROPIC); 649 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MINFPYRAMIDALQUAD); 650 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MINFGAUSSIANQUAD); 651 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MIPFPOINT); 652 CAP_CASE(VolumeTextureFilterCaps, D3DPTFILTERCAPS, MIPFLINEAR); 653 654 C2S("\nTextureAddressCaps:"); 655 CAP_CASE(TextureAddressCaps, D3DPTADDRESSCAPS, BORDER); 656 CAP_CASE(TextureAddressCaps, D3DPTADDRESSCAPS, CLAMP); 657 CAP_CASE(TextureAddressCaps, D3DPTADDRESSCAPS, INDEPENDENTUV); 658 CAP_CASE(TextureAddressCaps, D3DPTADDRESSCAPS, MIRROR); 659 CAP_CASE(TextureAddressCaps, D3DPTADDRESSCAPS, MIRRORONCE); 660 CAP_CASE(TextureAddressCaps, D3DPTADDRESSCAPS, WRAP); 661 662 C2S("\nVolumeTextureAddressCaps:"); 663 CAP_CASE(VolumeTextureAddressCaps, D3DPTADDRESSCAPS, BORDER); 664 CAP_CASE(VolumeTextureAddressCaps, D3DPTADDRESSCAPS, CLAMP); 665 CAP_CASE(VolumeTextureAddressCaps, D3DPTADDRESSCAPS, INDEPENDENTUV); 666 CAP_CASE(VolumeTextureAddressCaps, D3DPTADDRESSCAPS, MIRROR); 667 CAP_CASE(VolumeTextureAddressCaps, D3DPTADDRESSCAPS, MIRRORONCE); 668 CAP_CASE(VolumeTextureAddressCaps, D3DPTADDRESSCAPS, WRAP); 669 670 C2S("\nLineCaps:"); 671 CAP_CASE(LineCaps, D3DLINECAPS, ALPHACMP); 672 CAP_CASE(LineCaps, D3DLINECAPS, ANTIALIAS); 673 CAP_CASE(LineCaps, D3DLINECAPS, BLEND); 674 CAP_CASE(LineCaps, D3DLINECAPS, FOG); 675 CAP_CASE(LineCaps, D3DLINECAPS, TEXTURE); 676 CAP_CASE(LineCaps, D3DLINECAPS, ZTEST); 677 678 C2S("\nMaxTextureWidth: %u", caps->MaxTextureWidth); 679 C2S("\nMaxTextureHeight: %u", caps->MaxTextureHeight); 680 C2S("\nMaxVolumeExtent: %u", caps->MaxVolumeExtent); 681 C2S("\nMaxTextureRepeat: %u", caps->MaxTextureRepeat); 682 C2S("\nMaxTextureAspectRatio: %u", caps->MaxTextureAspectRatio); 683 C2S("\nMaxAnisotropy: %u", caps->MaxAnisotropy); 684 C2S("\nMaxVertexW: %f", caps->MaxVertexW); 685 686 C2S("\nGuardBandLef,Top,Right,Bottom: %f %f %f %f", 687 caps->GuardBandLeft, caps->GuardBandTop, 688 caps->GuardBandRight, caps->GuardBandBottom); 689 690 C2S("\nExtentsAdjust: %f", caps->ExtentsAdjust); 691 692 C2S("\nStencilCaps:"); 693 CAP_CASE(StencilCaps, D3DSTENCILCAPS, KEEP); 694 CAP_CASE(StencilCaps, D3DSTENCILCAPS, ZERO); 695 CAP_CASE(StencilCaps, D3DSTENCILCAPS, REPLACE); 696 CAP_CASE(StencilCaps, D3DSTENCILCAPS, INCRSAT); 697 CAP_CASE(StencilCaps, D3DSTENCILCAPS, DECRSAT); 698 CAP_CASE(StencilCaps, D3DSTENCILCAPS, INVERT); 699 CAP_CASE(StencilCaps, D3DSTENCILCAPS, INCR); 700 CAP_CASE(StencilCaps, D3DSTENCILCAPS, DECR); 701 CAP_CASE(StencilCaps, D3DSTENCILCAPS, TWOSIDED); 702 703 C2S("\nFVFCaps:"); 704 CAP_CASE(FVFCaps, D3DFVFCAPS, DONOTSTRIPELEMENTS); 705 CAP_CASE(FVFCaps, D3DFVFCAPS, PSIZE); 706 CAP_CASE(FVFCaps, D3DFVFCAPS, TEXCOORDCOUNTMASK); 707 708 C2S("\nTextureOpCaps:"); 709 CAP_CASE(TextureOpCaps, D3DTEXOPCAPS, ADD); 710 CAP_CASE(TextureOpCaps, D3DTEXOPCAPS, ADDSIGNED); 711 C2S(" ..."); 712 713 C2S("\nMaxTextureBlendStages: %u", caps->MaxTextureBlendStages); 714 C2S("\nMaxSimultaneousTextures: %u", caps->MaxTextureBlendStages); 715 716 C2S("\nVertexProcessingCaps:"); 717 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, DIRECTIONALLIGHTS); 718 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, LOCALVIEWER); 719 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, MATERIALSOURCE7); 720 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, NO_TEXGEN_NONLOCALVIEWER); 721 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, POSITIONALLIGHTS); 722 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, TEXGEN); 723 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, TEXGEN_SPHEREMAP); 724 CAP_CASE(VertexProcessingCaps, D3DVTXPCAPS, TWEENING); 725 726 C2S("\nMaxActiveLights: %u", caps->MaxActiveLights); 727 C2S("\nMaxUserClipPlanes: %u", caps->MaxUserClipPlanes); 728 C2S("\nMaxVertexBlendMatrices: %u", caps->MaxVertexBlendMatrices); 729 C2S("\nMaxVertexBlendMatrixIndex: %u", caps->MaxVertexBlendMatrixIndex); 730 C2S("\nMaxPointSize: %f", caps->MaxPointSize); 731 C2S("\nMaxPrimitiveCount: 0x%x", caps->MaxPrimitiveCount); 732 C2S("\nMaxVertexIndex: 0x%x", caps->MaxVertexIndex); 733 C2S("\nMaxStreams: %u", caps->MaxStreams); 734 C2S("\nMaxStreamStride: 0x%x", caps->MaxStreamStride); 735 736 C2S("\nVertexShaderVersion: %08x", caps->VertexShaderVersion); 737 C2S("\nMaxVertexShaderConst: %u", caps->MaxVertexShaderConst); 738 C2S("\nPixelShaderVersion: %08x", caps->PixelShaderVersion); 739 C2S("\nPixelShader1xMaxValue: %f", caps->PixelShader1xMaxValue); 740 741 DBG_FLAG(ch, "D3DCAPS9(%p) part 1:\n%s\n", caps, s); 742 p = 0; 743 744 C2S("DevCaps2:"); 745 CAP_CASE(DevCaps2, D3DDEVCAPS2, ADAPTIVETESSRTPATCH); 746 CAP_CASE(DevCaps2, D3DDEVCAPS2, ADAPTIVETESSNPATCH); 747 CAP_CASE(DevCaps2, D3DDEVCAPS2, CAN_STRETCHRECT_FROM_TEXTURES); 748 CAP_CASE(DevCaps2, D3DDEVCAPS2, DMAPNPATCH); 749 CAP_CASE(DevCaps2, D3DDEVCAPS2, PRESAMPLEDDMAPNPATCH); 750 CAP_CASE(DevCaps2, D3DDEVCAPS2, STREAMOFFSET); 751 CAP_CASE(DevCaps2, D3DDEVCAPS2, VERTEXELEMENTSCANSHARESTREAMOFFSET); 752 753 C2S("\nMasterAdapterOrdinal: %u", caps->MasterAdapterOrdinal); 754 C2S("\nAdapterOrdinalInGroup: %u", caps->AdapterOrdinalInGroup); 755 C2S("\nNumberOfAdaptersInGroup: %u", caps->NumberOfAdaptersInGroup); 756 757 C2S("\nDeclTypes:"); 758 CAP_CASE(DeclTypes, D3DDTCAPS, UBYTE4); 759 CAP_CASE(DeclTypes, D3DDTCAPS, UBYTE4N); 760 CAP_CASE(DeclTypes, D3DDTCAPS, SHORT2N); 761 CAP_CASE(DeclTypes, D3DDTCAPS, SHORT4N); 762 CAP_CASE(DeclTypes, D3DDTCAPS, USHORT2N); 763 CAP_CASE(DeclTypes, D3DDTCAPS, USHORT4N); 764 CAP_CASE(DeclTypes, D3DDTCAPS, UDEC3); 765 CAP_CASE(DeclTypes, D3DDTCAPS, DEC3N); 766 CAP_CASE(DeclTypes, D3DDTCAPS, FLOAT16_2); 767 CAP_CASE(DeclTypes, D3DDTCAPS, FLOAT16_4); 768 769 C2S("\nNumSimultaneousRTs: %u", caps->NumSimultaneousRTs); 770 771 C2S("\nStretchRectFilterCaps:"); 772 CAP_CASE(StretchRectFilterCaps, D3DPTFILTERCAPS, MINFPOINT); 773 CAP_CASE(StretchRectFilterCaps, D3DPTFILTERCAPS, MINFLINEAR); 774 CAP_CASE(StretchRectFilterCaps, D3DPTFILTERCAPS, MAGFPOINT); 775 CAP_CASE(StretchRectFilterCaps, D3DPTFILTERCAPS, MAGFLINEAR); 776 777 C2S("\nVS20Caps.Caps: Predication=%s", caps->VS20Caps.Caps ? "yes" : "no"); 778 C2S("\nVS20Caps.DynamicFlowControlDepth: %u", caps->VS20Caps.DynamicFlowControlDepth); 779 C2S("\nVS20Caps.NumTemps: %u", caps->VS20Caps.NumTemps); 780 C2S("\nVS20Caps.StaticFlowControlDepth: %u", caps->VS20Caps.StaticFlowControlDepth); 781 782 C2S("\nPS20Caps.Caps: Predication=%s", caps->VS20Caps.Caps ? "yes" : "no"); 783 C2S("\nPS20Caps.DynamicFlowControlDepth: %u", caps->PS20Caps.DynamicFlowControlDepth); 784 C2S("\nPS20Caps.NumTemps: %u", caps->PS20Caps.NumTemps); 785 C2S("\nPS20Caps.StaticFlowControlDepth: %u", caps->PS20Caps.StaticFlowControlDepth); 786 C2S("\nPS20Caps.NumInstructionSlots: %u", caps->PS20Caps.NumInstructionSlots); 787 788 C2S("\nVertexTextureFilterCaps"); 789 /* CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, CONVOLUTIONMONO); */ 790 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MAGFPOINT); 791 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MAGFLINEAR); 792 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MAGFANISOTROPIC); 793 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MAGFPYRAMIDALQUAD); 794 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MAGFGAUSSIANQUAD); 795 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MINFPOINT); 796 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MINFLINEAR); 797 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MINFANISOTROPIC); 798 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MINFPYRAMIDALQUAD); 799 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MINFGAUSSIANQUAD); 800 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MIPFPOINT); 801 CAP_CASE(VertexTextureFilterCaps, D3DPTFILTERCAPS, MIPFLINEAR); 802 803 C2S("\nMaxVShaderInstructionsExecuted: %u", caps->MaxVShaderInstructionsExecuted); 804 C2S("\nMaxPShaderInstructionsExecuted: %u", caps->MaxPShaderInstructionsExecuted); 805 C2S("\nMaxVertexShader30InstructionSlots: %u >= 512", caps->MaxVertexShader30InstructionSlots); 806 C2S("\nMaxPixelShader30InstructionSlots: %u >= 512", caps->MaxPixelShader30InstructionSlots); 807 808 DBG_FLAG(ch, "D3DCAPS9(%p) part 2:\n%s\n", caps, s); 809 810 FREE(s); 811 } 812 813 #endif /* DEBUG */ 814