#include #include #include void dump_caps(FILE *out, D3DCAPS9 *c) { fprintf(out, "static void init_caps(WINED3DCAPS *caps) {\n"); fprintf(out, " *caps->DeviceType = %#x;\n", c->DeviceType); fprintf(out, " *caps->AdapterOrdinal = %#x;\n", c->AdapterOrdinal); fprintf(out, " *caps->Caps = %#x;\n", c->Caps); fprintf(out, " *caps->Caps2 = %#x;\n", c->Caps2); fprintf(out, " *caps->Caps3 = %#x;\n", c->Caps3); fprintf(out, " *caps->PresentationIntervals = %#x;\n", c->PresentationIntervals); fprintf(out, " *caps->CursorCaps = %#x;\n", c->CursorCaps); fprintf(out, " *caps->DevCaps = %#x;\n", c->DevCaps); fprintf(out, " *caps->PrimitiveMiscCaps = %#x;\n", c->PrimitiveMiscCaps); fprintf(out, " *caps->RasterCaps = %#x;\n", c->RasterCaps); fprintf(out, " *caps->ZCmpCaps = %#x;\n", c->ZCmpCaps); fprintf(out, " *caps->SrcBlendCaps = %#x;\n", c->SrcBlendCaps); fprintf(out, " *caps->DestBlendCaps = %#x;\n", c->DestBlendCaps); fprintf(out, " *caps->AlphaCmpCaps = %#x;\n", c->AlphaCmpCaps); fprintf(out, " *caps->ShadeCaps = %#x;\n", c->ShadeCaps); fprintf(out, " *caps->TextureCaps = %#x;\n", c->TextureCaps); fprintf(out, " *caps->TextureFilterCaps = %#x;\n", c->TextureFilterCaps); fprintf(out, " *caps->CubeTextureFilterCaps = %#x;\n", c->CubeTextureFilterCaps); fprintf(out, " *caps->VolumeTextureFilterCaps = %#x;\n", c->VolumeTextureFilterCaps); fprintf(out, " *caps->TextureAddressCaps = %#x;\n", c->TextureAddressCaps); fprintf(out, " *caps->VolumeTextureAddressCaps = %#x;\n", c->VolumeTextureAddressCaps); fprintf(out, " *caps->LineCaps = %#x;\n", c->LineCaps); fprintf(out, " *caps->MaxTextureWidth = %#x;\n", c->MaxTextureWidth); fprintf(out, " *caps->MaxTextureHeight = %#x;\n", c->MaxTextureHeight); fprintf(out, " *caps->MaxVolumeExtent = %#x;\n", c->MaxVolumeExtent); fprintf(out, " *caps->MaxTextureRepeat = %#x;\n", c->MaxTextureRepeat); fprintf(out, " *caps->MaxTextureAspectRatio = %#x;\n", c->MaxTextureAspectRatio); fprintf(out, " *caps->MaxAnisotropy = %#x;\n", c->MaxAnisotropy); fprintf(out, " *caps->MaxVertexW = %ff;\n", c->MaxVertexW); fprintf(out, " *caps->GuardBandLeft = %ff;\n", c->GuardBandLeft); fprintf(out, " *caps->GuardBandTop = %ff;\n", c->GuardBandTop); fprintf(out, " *caps->GuardBandRight = %ff;\n", c->GuardBandRight); fprintf(out, " *caps->GuardBandBottom = %ff;\n", c->GuardBandBottom); fprintf(out, " *caps->ExtentsAdjust = %ff;\n", c->ExtentsAdjust); fprintf(out, " *caps->StencilCaps = %#x;\n", c->StencilCaps); fprintf(out, " *caps->FVFCaps = %#x;\n", c->FVFCaps); fprintf(out, " *caps->TextureOpCaps = %#x;\n", c->TextureOpCaps); fprintf(out, " *caps->MaxTextureBlendStages = %#x;\n", c->MaxTextureBlendStages); fprintf(out, " *caps->MaxSimultaneousTextures = %#x;\n", c->MaxSimultaneousTextures); fprintf(out, " *caps->VertexProcessingCaps = %#x;\n", c->VertexProcessingCaps); fprintf(out, " *caps->MaxActiveLights = %#x;\n", c->MaxActiveLights); fprintf(out, " *caps->MaxUserClipPlanes = %#x;\n", c->MaxUserClipPlanes); fprintf(out, " *caps->MaxVertexBlendMatrices = %#x;\n", c->MaxVertexBlendMatrices); fprintf(out, " *caps->MaxVertexBlendMatrixIndex = %#x;\n", c->MaxVertexBlendMatrixIndex); fprintf(out, " *caps->MaxPointSize = %ff;\n", c->MaxPointSize); fprintf(out, " *caps->MaxPrimitiveCount = %#x;\n", c->MaxPrimitiveCount); fprintf(out, " *caps->MaxVertexIndex = %#x;\n", c->MaxVertexIndex); fprintf(out, " *caps->MaxStreams = %#x;\n", c->MaxStreams); fprintf(out, " *caps->MaxStreamStride = %#x;\n", c->MaxStreamStride); fprintf(out, " *caps->VertexShaderVersion = %#x;\n", c->VertexShaderVersion); fprintf(out, " *caps->MaxVertexShaderConst = %#x;\n", c->MaxVertexShaderConst); fprintf(out, " *caps->PixelShaderVersion = %#x;\n", c->PixelShaderVersion); fprintf(out, " *caps->PixelShader1xMaxValue = %ff;\n", c->PixelShader1xMaxValue); fprintf(out, " *caps->DevCaps2 = %#x;\n", c->DevCaps2); fprintf(out, " *caps->MaxNpatchTessellationLevel = %ff;\n", c->MaxNpatchTessellationLevel); fprintf(out, " *caps->MasterAdapterOrdinal = %#x;\n", c->MasterAdapterOrdinal); fprintf(out, " *caps->AdapterOrdinalInGroup = %#x;\n", c->AdapterOrdinalInGroup); fprintf(out, " *caps->NumberOfAdaptersInGroup = %#x;\n", c->NumberOfAdaptersInGroup); fprintf(out, " *caps->DeclTypes = %#x;\n", c->DeclTypes); fprintf(out, " *caps->NumSimultaneousRTs = %#x;\n", c->NumSimultaneousRTs); fprintf(out, " *caps->StretchRectFilterCaps = %#x;\n", c->StretchRectFilterCaps); fprintf(out, " *caps->VS20Caps.Caps = %#x;\n", c->VS20Caps.Caps); fprintf(out, " *caps->VS20Caps.DynamicFlowControlDepth = %#x;\n", c->VS20Caps.DynamicFlowControlDepth); fprintf(out, " *caps->VS20Caps.NumTemps = %#x;\n", c->VS20Caps.NumTemps); fprintf(out, " *caps->VS20Caps.StaticFlowControlDepth = %#x;\n", c->VS20Caps.StaticFlowControlDepth); fprintf(out, " *caps->PS20Caps.Caps = %#x;\n", c->PS20Caps.Caps); fprintf(out, " *caps->PS20Caps.DynamicFlowControlDepth = %#x;\n", c->PS20Caps.DynamicFlowControlDepth); fprintf(out, " *caps->PS20Caps.NumTemps = %#x;\n", c->PS20Caps.NumTemps); fprintf(out, " *caps->PS20Caps.StaticFlowControlDepth = %#x;\n", c->PS20Caps.StaticFlowControlDepth); fprintf(out, " *caps->PS20Caps.NumInstructionSlots = %#x;\n", c->PS20Caps.NumInstructionSlots); fprintf(out, " *caps->VertexTextureFilterCaps = %#x;\n", c->VertexTextureFilterCaps); fprintf(out, " *caps->MaxVShaderInstructionsExecuted = %#x;\n", c->MaxVShaderInstructionsExecuted); fprintf(out, " *caps->MaxPShaderInstructionsExecuted = %#x;\n", c->MaxPShaderInstructionsExecuted); fprintf(out, " *caps->MaxVertexShader30InstructionSlots = %#x;\n", c->MaxVertexShader30InstructionSlots); fprintf(out, " *caps->MaxPixelShader30InstructionSlots = %#x;\n", c->MaxPixelShader30InstructionSlots); fprintf(out, "}\n"); } int main(void) { HMODULE d3d9_handle; IDirect3D9 * (__stdcall * d3d9_create)(UINT SDKVersion) = 0; IDirect3D9 *d3d9_ptr = 0; D3DCAPS9 caps; d3d9_handle = LoadLibraryA("d3d9.dll"); if (!d3d9_handle) { fprintf(stderr, "Failed to load d3d9.dll\n"); return EXIT_FAILURE; } d3d9_create = (void *)GetProcAddress(d3d9_handle, "Direct3DCreate9"); if (!d3d9_create) { fprintf(stderr, "Failed to resolve Direct3DCreate9\n"); return EXIT_FAILURE; } d3d9_ptr = d3d9_create(D3D_SDK_VERSION); if (!d3d9_ptr) { fprintf(stderr, "Failed to create IDirect3D9 object\n"); return EXIT_FAILURE; } IDirect3D9_GetDeviceCaps(d3d9_ptr, 0, D3DDEVTYPE_HAL, &caps); dump_caps(stdout, &caps); return EXIT_SUCCESS; }