add /client gpuinfo to C client

This commit is contained in:
UnknownShadow200 2018-08-04 21:11:32 +10:00
parent c2ab0f8141
commit 334abc47fd
7 changed files with 64 additions and 14 deletions

View File

@ -548,7 +548,7 @@ namespace ClassicalSharp.GraphicsAPI {
GL.GetIntegerv(GetPName.DepthBits, &depthBits);
ApiInfo = new string[] {
"--Using OpenGL --",
"-- Using OpenGL --",
"Vendor: " + vendor,
"Renderer: " + renderer,
"GL version: " + version,

View File

@ -606,12 +606,9 @@ void Gfx_BeginFrame(void) {
void Gfx_EndFrame(void) {
IDirect3DDevice9_EndScene(device);
ReturnCode code = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
if ((Int32)code >= 0) return;
if (code != D3DERR_DEVICELOST) {
ErrorHandler_FailWithCode(code, "D3D9_EndFrame");
}
ReturnCode result = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
if ((Int32)result >= 0) return;
if (result != D3DERR_DEVICELOST) ErrorHandler_FailWithCode(result, "D3D9_EndFrame");
/* TODO: Make sure this actually works on all graphics cards.*/
GfxCommon_LoseContext(" (Direct3D9 device lost)");
@ -619,6 +616,46 @@ void Gfx_EndFrame(void) {
D3D9_RecreateDevice();
}
const UChar* D3D9_StrFlags(void) {
if (createFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING) return "HardwareVertexProcessing";
if (createFlags & D3DCREATE_MIXED_VERTEXPROCESSING) return "MixedVertexProcessing";
if (createFlags & D3DCREATE_SOFTWARE_VERTEXPROCESSING) return "SoftwareVertexProcessing";
return "(none)";
}
const UChar* D3D9_StrFormat(D3DFORMAT format) {
switch (format) {
case D3DFMT_D32: return "D32";
case D3DFMT_D24X8: return "D24X8";
case D3DFMT_D24S8: return "D24S8";
case D3DFMT_D24X4S4: return "D24X4S4";
case D3DFMT_D16: return "D16";
case D3DFMT_D15S1: return "D15S1";
case D3DFMT_X8R8G8B8: return "X8R8G8B8";
case D3DFMT_R8G8B8: return "R8G8B8";
case D3DFMT_R5G6B5: return "R5G6B5";
case D3DFMT_X1R5G5B5: return "X1R5G5B5";
}
return "(unknown)";
}
void Gfx_MakeApiInfo(void) {
D3DADAPTER_IDENTIFIER9 adapter;
ReturnCode result = IDirect3D9_GetAdapterIdentifier(d3d, D3DADAPTER_DEFAULT, 0, &adapter);
ErrorHandler_CheckOrFail(result, "D3D9_GetAdapterDetails");
UInt32 texMemBytes = IDirect3DDevice9_GetAvailableTextureMem(device);
Real32 texMem = texMemBytes / (1024.0f * 1024.0f);
String_AppendConst(&Gfx_ApiInfo[0],"-- Using Direct3D9 --");
String_Format1(&Gfx_ApiInfo[1], "Adapter: %c", adapter.Description);
String_Format1(&Gfx_ApiInfo[2], "Mode: %c", D3D9_StrFlags());
String_Format1(&Gfx_ApiInfo[3], "Texture memory: %f2 MB", &texMem);
String_Format1(&Gfx_ApiInfo[4], "Max 2D texture dimensions: %i", &Gfx_MaxTextureDimensions);
String_Format1(&Gfx_ApiInfo[5], "Depth buffer format: %c", D3D9_StrFormat(d3d9_depthFormat));
String_Format1(&Gfx_ApiInfo[6], "Back buffer format: %c", D3D9_StrFormat(d3d9_viewFormat));
}
void Gfx_OnWindowResize(void) {
GfxCommon_LoseContext(" (resizing window)");
D3D9_RecreateDevice();

View File

@ -765,8 +765,6 @@ void Audio_SetMusic(Int32 volume) { }
void Audio_SetSounds(Int32 volume) { }
void Audio_PlayDigSound(UInt8 type) { }
void Audio_PlayStepSound(UInt8 type) { }
void Gfx_MakeApiInfo(void) { }
void AdvLightingBuilder_SetActive(void) { }
/* TODO: Initalise Shell, see https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx

View File

@ -7,12 +7,12 @@
#include "ExtMath.h"
#include "Texture.h"
UChar Gfx_ApiBuffer[8][String_BufferSize(STRING_SIZE)];
String Gfx_ApiInfo[8] = {
UChar Gfx_ApiBuffer[7][String_BufferSize(STRING_SIZE)];
String Gfx_ApiInfo[7] = {
{ Gfx_ApiBuffer[0], 0, STRING_SIZE }, { Gfx_ApiBuffer[1], 0, STRING_SIZE },
{ Gfx_ApiBuffer[2], 0, STRING_SIZE }, { Gfx_ApiBuffer[3], 0, STRING_SIZE },
{ Gfx_ApiBuffer[4], 0, STRING_SIZE }, { Gfx_ApiBuffer[5], 0, STRING_SIZE },
{ Gfx_ApiBuffer[6], 0, STRING_SIZE }, { Gfx_ApiBuffer[7], 0, STRING_SIZE },
{ Gfx_ApiBuffer[6], 0, STRING_SIZE },
};
void GfxCommon_Init(void) {

View File

@ -8,7 +8,7 @@
*/
struct Texture;
extern String Gfx_ApiInfo[8];
extern String Gfx_ApiInfo[7];
GfxResourceID GfxCommon_defaultIb;
void GfxCommon_Init(void);

View File

@ -539,6 +539,21 @@ void Gfx_TakeScreenshot(struct Stream* output, Int32 width, Int32 height) {
Platform_MemFree(&bmp.Scan0);
}
void Gfx_MakeApiInfo(void) {
const UChar* vendor = glGetString(GL_VENDOR);
const UChar* renderer = glGetString(GL_RENDERER);
const UChar* version = glGetString(GL_VERSION);
Int32 depthBits = 0;
glGetIntegerv(GL_DEPTH_BITS, &depthBits);
String_AppendConst(&Gfx_ApiInfo[0],"-- Using OpenGL --");
String_Format1(&Gfx_ApiInfo[1], "Vendor: %c", vendor);
String_Format1(&Gfx_ApiInfo[2], "Renderer: %c", renderer);
String_Format1(&Gfx_ApiInfo[3], "GL version: %c", version);
String_Format1(&Gfx_ApiInfo[4], "Max 2D texture dimensions: %i", &Gfx_MaxTextureDimensions);
String_Format1(&Gfx_ApiInfo[5], "Depth buffer bits: %i", &depthBits);
}
bool Gfx_WarnIfNecessary(void) {
#if CC_BUILD_GL11
Chat_AddRaw(tmp1, "&cYou are using the very outdated OpenGL backend.");

View File

@ -59,7 +59,7 @@ struct FontDesc { void* Handle; UInt16 Size, Style; };
#define UInt32_MaxValue ((UInt32)4294967295UL)
#define CC_BUILD_GL11 false
#define CC_BUILD_D3D9 false
#define CC_BUILD_D3D9 true
#define CC_BUILD_WIN true
#define CC_BUILD_OSX false