QString ToQStr(const ShaderStageType stage, const GraphicsAPI apitype) { if(IsD3D(apitype)) { switch(stage) { case eShaderStage_Vertex: return "Vertex"; case eShaderStage_Hull: return "Hull"; case eShaderStage_Domain: return "Domain"; case eShaderStage_Geometry: return "Geometry"; case eShaderStage_Pixel: return "Pixel"; case eShaderStage_Compute: return "Compute"; default: break; } } else if(apitype == eGraphicsAPI_OpenGL || apitype == eGraphicsAPI_Vulkan) { switch(stage) { case eShaderStage_Vertex: return "Vertex"; case eShaderStage_Tess_Control: return "Tess. Control"; case eShaderStage_Tess_Eval: return "Tess. Eval"; case eShaderStage_Geometry: return "Geometry"; case eShaderStage_Fragment: return "Fragment"; case eShaderStage_Compute: return "Compute"; default: break; } } return "Unknown"; }
HRESULT STDMETHODCALLTYPE CD3DX12AffinityObject::SetPrivateDataInterface( REFGUID guid, const IUnknown* pData, UINT AffinityIndex) { if (IsD3D()) { return ((ID3D12Object*)mObjects[AffinityIndex])->SetPrivateDataInterface(guid, pData); } else { return ((IDXGIObject*)mObjects[AffinityIndex])->SetPrivateDataInterface(guid, pData); } }
HRESULT STDMETHODCALLTYPE CD3DX12AffinityObject::SetPrivateData( REFGUID guid, UINT DataSize, const void* pData, UINT AffinityIndex) { if (IsD3D()) { return ((ID3D12Object*)mObjects[AffinityIndex])->SetPrivateData(guid, DataSize, pData); } else { return ((IDXGIObject*)mObjects[AffinityIndex])->SetPrivateData(guid, DataSize, pData); } }
HRESULT STDMETHODCALLTYPE CD3DX12AffinityObject::SetName( LPCWSTR Name, UINT AffinityIndex) { if (IsD3D()) { for (UINT i = 0; i < D3DX12_MAX_ACTIVE_NODES; ++i) { if (mObjects[i]) { ((ID3D12Object*)mObjects[i])->SetName(Name); } else { break; } } } #ifdef DEBUG_OBJECT_NAME mObjectDebugName = Name; #endif return S_OK; }
QString ToQStr(const ResourceUsage usage, const GraphicsAPI apitype) { if(IsD3D(apitype)) { switch(usage) { case eUsage_VertexBuffer: return "Vertex Buffer"; case eUsage_IndexBuffer: return "Index Buffer"; case eUsage_VS_Constants: return "VS - Constant Buffer"; case eUsage_GS_Constants: return "GS - Constant Buffer"; case eUsage_HS_Constants: return "HS - Constant Buffer"; case eUsage_DS_Constants: return "DS - Constant Buffer"; case eUsage_CS_Constants: return "CS - Constant Buffer"; case eUsage_PS_Constants: return "PS - Constant Buffer"; case eUsage_All_Constants: return "All - Constant Buffer"; case eUsage_SO: return "Stream Out"; case eUsage_VS_Resource: return "VS - Resource"; case eUsage_GS_Resource: return "GS - Resource"; case eUsage_HS_Resource: return "HS - Resource"; case eUsage_DS_Resource: return "DS - Resource"; case eUsage_CS_Resource: return "CS - Resource"; case eUsage_PS_Resource: return "PS - Resource"; case eUsage_All_Resource: return "All - Resource"; case eUsage_VS_RWResource: return "VS - UAV"; case eUsage_HS_RWResource: return "HS - UAV"; case eUsage_DS_RWResource: return "DS - UAV"; case eUsage_GS_RWResource: return "GS - UAV"; case eUsage_PS_RWResource: return "PS - UAV"; case eUsage_CS_RWResource: return "CS - UAV"; case eUsage_All_RWResource: return "All - UAV"; case eUsage_InputTarget: return "Colour Input"; case eUsage_ColourTarget: return "Rendertarget"; case eUsage_DepthStencilTarget: return "Depthstencil"; case eUsage_Indirect: return "Indirect argument"; case eUsage_Clear: return "Clear"; case eUsage_GenMips: return "Generate Mips"; case eUsage_Resolve: return "Resolve"; case eUsage_ResolveSrc: return "Resolve - Source"; case eUsage_ResolveDst: return "Resolve - Dest"; case eUsage_Copy: return "Copy"; case eUsage_CopySrc: return "Copy - Source"; case eUsage_CopyDst: return "Copy - Dest"; case eUsage_Barrier: return "Barrier"; default: break; } } else if(apitype == eGraphicsAPI_OpenGL || apitype == eGraphicsAPI_Vulkan) { const bool vk = (apitype == eGraphicsAPI_Vulkan); switch(usage) { case eUsage_VertexBuffer: return "Vertex Buffer"; case eUsage_IndexBuffer: return "Index Buffer"; case eUsage_VS_Constants: return "VS - Uniform Buffer"; case eUsage_GS_Constants: return "GS - Uniform Buffer"; case eUsage_HS_Constants: return "HS - Uniform Buffer"; case eUsage_DS_Constants: return "DS - Uniform Buffer"; case eUsage_CS_Constants: return "CS - Uniform Buffer"; case eUsage_PS_Constants: return "PS - Uniform Buffer"; case eUsage_All_Constants: return "All - Uniform Buffer"; case eUsage_SO: return "Transform Feedback"; case eUsage_VS_Resource: return "VS - Texture"; case eUsage_GS_Resource: return "GS - Texture"; case eUsage_HS_Resource: return "HS - Texture"; case eUsage_DS_Resource: return "DS - Texture"; case eUsage_CS_Resource: return "CS - Texture"; case eUsage_PS_Resource: return "PS - Texture"; case eUsage_All_Resource: return "All - Texture"; case eUsage_VS_RWResource: return "VS - Image/SSBO"; case eUsage_HS_RWResource: return "HS - Image/SSBO"; case eUsage_DS_RWResource: return "DS - Image/SSBO"; case eUsage_GS_RWResource: return "GS - Image/SSBO"; case eUsage_PS_RWResource: return "PS - Image/SSBO"; case eUsage_CS_RWResource: return "CS - Image/SSBO"; case eUsage_All_RWResource: return "All - Image/SSBO"; case eUsage_InputTarget: return "FBO Input"; case eUsage_ColourTarget: return "FBO Colour"; case eUsage_DepthStencilTarget: return "FBO Depthstencil"; case eUsage_Indirect: return "Indirect argument"; case eUsage_Clear: return "Clear"; case eUsage_GenMips: return "Generate Mips"; case eUsage_Resolve: return vk ? "Resolve" : "Framebuffer blit"; case eUsage_ResolveSrc: return vk ? "Resolve - Source" : "Framebuffer blit - Source"; case eUsage_ResolveDst: return vk ? "Resolve - Dest" : "Framebuffer blit - Dest"; case eUsage_Copy: return "Copy"; case eUsage_CopySrc: return "Copy - Source"; case eUsage_CopyDst: return "Copy - Dest"; case eUsage_Barrier: return "Barrier"; default: break; } } return "Unknown"; }
//Get the system information and print everything on screen (and in the log file) void GameDebugger::GetSystemSpecs(ALLEGRO_DISPLAY* mydisplay) { GetSystemInfo(&SystemInfo); struct tm* mytime = GetDateAndTime(); fprintf(OutputFile, "-- START OF LOG FILE --\nTIMESTAMP: %02i/%02i/%02i - %02i:%02i:%02i\n\n",1+mytime->tm_mday, 1+mytime->tm_mon, 1900+mytime->tm_year, mytime->tm_hour, mytime->tm_min, mytime->tm_sec); GetPhysicallyInstalledSystemMemory(&pMemory); myMemory.dwLength = sizeof(myMemory); GlobalMemoryStatus(&myMemory); fprintf(OutputFile, "-- SYSTEM SPECS --\n\n"); fprintf(OutputFile, "CPU: %s\n", cpuInstInfo.cpusignature); fprintf(OutputFile, "Cores: %i\n", SystemInfo.dwNumberOfProcessors); #ifdef _DEBUG printf("-- SYSTEM SPECS --\n\n"); printf("CPU: %s\n", cpuInstInfo.cpusignature); printf("Cores: %i\n", SystemInfo.dwNumberOfProcessors); #endif if(cpuInstInfo.PFLAGS.PYSICAL_ADDRESS_E) { fprintf(OutputFile, "Physical Address Extension (PAE) Available (x86_64)\n"); #ifdef _DEBUG printf("Physical Address Extension (PAE) Available (x86_64)\n"); #endif } fprintf(OutputFile, "Other processor extensions: "); printf("Other processor extensions: "); if(cpuInstInfo.PFLAGS.LONGMODE) { fprintf(OutputFile, "lm "); #ifdef _DEBUG printf("lm "); #endif } if(cpuInstInfo.PFLAGS.MMX_INSTRUCTIONS) { fprintf(OutputFile, "mmx "); #ifdef _DEBUG printf("mmx "); #endif } if(cpuInstInfo.PFLAGS.EXT_MMX) { fprintf(OutputFile, "mmxext "); #ifdef _DEBUG printf("mmxext "); #endif } if(cpuInstInfo.PFLAGS.B3DNOW) { fprintf(OutputFile, "3dnow "); #ifdef _DEBUG printf("3dnow "); #endif } if(cpuInstInfo.PFLAGS.EXT_3DNOW) { fprintf(OutputFile, "3dnowext "); #ifdef _DEBUG printf("3dnowext "); #endif } if(cpuInstInfo.PFLAGS.MULTIPROCESSOR_CAPABLE) { fprintf(OutputFile, "mp "); #ifdef _DEBUG printf("mp "); #endif } fprintf(OutputFile, "\n\n -- RAM INFORMATION -- \n\n"); fprintf(OutputFile, "Physical RAM: %I64u Mb\n",pMemory/1024); fprintf(OutputFile, "Available RAM: %i Mb\n",myMemory.dwAvailPhys / 1024 / 1024); fprintf(OutputFile, "Total PageFile: %i Mb\n",myMemory.dwTotalPageFile / 1024 / 1024); fprintf(OutputFile, "Available PageFile: %i Mb\n",myMemory.dwAvailPageFile / 1024 / 1024); fprintf(OutputFile, "Total Virtual Memory: %i Mb\n",myMemory.dwTotalVirtual / 1024 / 1024); fprintf(OutputFile, "Available Virtual Memory: %i Mb\n",myMemory.dwAvailVirtual / 1024 / 1024); #ifdef _DEBUG printf("\n\n -- RAM INFORMATION -- \n\n"); printf("Physical RAM: %I64u Mb\n",pMemory/1024); printf("Available RAM: %i Mb\n",myMemory.dwAvailPhys / 1024 / 1024); printf("Total PageFile: %i Mb\n",myMemory.dwTotalPageFile / 1024 / 1024); printf("Available PageFile: %i Mb\n",myMemory.dwAvailPageFile / 1024 / 1024); printf("Total Virtual Memory: %i Mb\n",myMemory.dwTotalVirtual / 1024 / 1024); printf("Available Virtual Memory: %i Mb\n",myMemory.dwAvailVirtual / 1024 / 1024); #endif if(IsD3D(mydisplay)) { #ifdef _DEBUG printf("Using Direct 3D\n"); #endif fprintf(OutputFile, "Using Direct 3D\n"); GetD3DInfo(mydisplay); }else{ #ifdef _DEBUG printf("Using OpenGL 3D\n"); #endif fprintf(OutputFile, "Using OpenGL\n"); GetGLInfo(mydisplay); } return; }