mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-13 17:49:29 +01:00
1 parent
2031b2a4cd
commit
c76f2ba310
1 file changed
+56
-59
+56
-59
@@ -337,6 +337,8 @@ void SystemInfoScreen::CreateViews() {
|
||||
|
||||
// NOTE: Do not translate this section. It will change a lot and will be impossible to keep up.
|
||||
I18NCategory *di = GetI18NCategory("Dialog");
|
||||
I18NCategory *si = GetI18NCategory("SysInfo");
|
||||
I18NCategory *gr = GetI18NCategory("Graphics");
|
||||
root_ = new AnchorLayout(new LayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
|
||||
ViewGroup *leftColumn = new AnchorLayout(new LinearLayoutParams(1.0f));
|
||||
@@ -353,81 +355,82 @@ void SystemInfoScreen::CreateViews() {
|
||||
LinearLayout *deviceSpecs = new LinearLayout(ORIENT_VERTICAL);
|
||||
deviceSpecs->SetSpacing(0);
|
||||
deviceSpecsScroll->Add(deviceSpecs);
|
||||
tabHolder->AddTab("Device Info", deviceSpecsScroll);
|
||||
tabHolder->AddTab(si->T("Device Info"), deviceSpecsScroll);
|
||||
|
||||
deviceSpecs->Add(new ItemHeader("System Information"));
|
||||
deviceSpecs->Add(new InfoItem("Name", System_GetProperty(SYSPROP_NAME)));
|
||||
deviceSpecs->Add(new InfoItem("Lang/Region", System_GetProperty(SYSPROP_LANGREGION)));
|
||||
deviceSpecs->Add(new ItemHeader(si->T("System Information")));
|
||||
deviceSpecs->Add(new InfoItem(si->T("System Name", "Name"), System_GetProperty(SYSPROP_NAME)));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Lang/Region"), System_GetProperty(SYSPROP_LANGREGION)));
|
||||
std::string board = System_GetProperty(SYSPROP_BOARDNAME);
|
||||
if (!board.empty())
|
||||
deviceSpecs->Add(new InfoItem("Board", board));
|
||||
deviceSpecs->Add(new InfoItem("ABI", GetCompilerABI()));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Board"), board));
|
||||
deviceSpecs->Add(new InfoItem(si->T("ABI"), GetCompilerABI()));
|
||||
#ifdef _WIN32
|
||||
if (IsDebuggerPresent()) {
|
||||
deviceSpecs->Add(new InfoItem("Debugger Present", "Yes"));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Debugger Present"), si->T("Yes")));
|
||||
}
|
||||
#endif
|
||||
|
||||
deviceSpecs->Add(new ItemHeader("CPU Information"));
|
||||
deviceSpecs->Add(new InfoItem("Name", cpu_info.brand_string));
|
||||
deviceSpecs->Add(new ItemHeader(si->T("CPU Information")));
|
||||
deviceSpecs->Add(new InfoItem(si->T("CPU Name", "Name"), cpu_info.brand_string));
|
||||
#if defined(ARM) || defined(ARM64) || defined(MIPS)
|
||||
deviceSpecs->Add(new InfoItem("Cores", StringFromInt(cpu_info.num_cores)));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Cores"), StringFromInt(cpu_info.num_cores)));
|
||||
#else
|
||||
int totalThreads = cpu_info.num_cores * cpu_info.logical_cpu_count;
|
||||
std::string cores = StringFromFormat("%d (%d per core, %d cores)", totalThreads, cpu_info.logical_cpu_count, cpu_info.num_cores);
|
||||
deviceSpecs->Add(new InfoItem("Threads", cores));
|
||||
std::string cores = StringFromFormat(si->T("%d (%d per core, %d cores)"), totalThreads, cpu_info.logical_cpu_count, cpu_info.num_cores);
|
||||
deviceSpecs->Add(new InfoItem(si->T("Threads"), cores));
|
||||
#endif
|
||||
deviceSpecs->Add(new ItemHeader("GPU Information"));
|
||||
deviceSpecs->Add(new ItemHeader(si->T("GPU Information")));
|
||||
|
||||
DrawContext *draw = screenManager()->getDrawContext();
|
||||
|
||||
deviceSpecs->Add(new InfoItem("3D API", std::string(draw->GetInfoString(InfoField::APINAME))));
|
||||
deviceSpecs->Add(new InfoItem("Vendor", std::string(draw->GetInfoString(InfoField::VENDORSTRING))));
|
||||
const char *apiName = gr->T(screenManager()->getDrawContext()->GetInfoString(InfoField::APINAME));
|
||||
deviceSpecs->Add(new InfoItem(si->T("3D API"), apiName));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Vendor"), draw->GetInfoString(InfoField::VENDORSTRING)));
|
||||
std::string vendor = draw->GetInfoString(InfoField::VENDOR);
|
||||
if (vendor.size())
|
||||
deviceSpecs->Add(new InfoItem("Vendor (detected)", vendor));
|
||||
deviceSpecs->Add(new InfoItem("Driver Version", draw->GetInfoString(InfoField::DRIVER)));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Vendor (detected)"), vendor));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Driver Version"), draw->GetInfoString(InfoField::DRIVER)));
|
||||
#ifdef _WIN32
|
||||
if (g_Config.iGPUBackend != GPU_BACKEND_VULKAN)
|
||||
deviceSpecs->Add(new InfoItem("Driver Version", System_GetProperty(SYSPROP_GPUDRIVER_VERSION)));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Driver Version"), System_GetProperty(SYSPROP_GPUDRIVER_VERSION)));
|
||||
#if !PPSSPP_PLATFORM(UWP)
|
||||
if (GetGPUBackend() == GPUBackend::DIRECT3D9) {
|
||||
deviceSpecs->Add(new InfoItem("D3DX Version", StringFromFormat("%d", GetD3DXVersion())));
|
||||
deviceSpecs->Add(new InfoItem(si->T("D3DX Version"), StringFromFormat("%d", GetD3DXVersion())));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if (g_Config.iGPUBackend == GPU_BACKEND_OPENGL) {
|
||||
deviceSpecs->Add(new InfoItem("Core Context", gl_extensions.IsCoreContext ? "Yes" : "No"));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Core Context"), gl_extensions.IsCoreContext ? si->T("Yes") : si->T("No")));
|
||||
}
|
||||
deviceSpecs->Add(new ItemHeader("OS Information"));
|
||||
deviceSpecs->Add(new InfoItem("Memory Page Size", StringFromFormat("%d bytes", GetMemoryProtectPageSize())));
|
||||
deviceSpecs->Add(new InfoItem("RW/RX exclusive: ", PlatformIsWXExclusive() ? "Yes" : "No"));
|
||||
deviceSpecs->Add(new ItemHeader(si->T("OS Information")));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Memory Page Size"), StringFromFormat(si->T("%d bytes"), GetMemoryProtectPageSize())));
|
||||
deviceSpecs->Add(new InfoItem(si->T("RW/RX exclusive"), PlatformIsWXExclusive() ? si->T("Yes") : si->T("No")));
|
||||
#ifdef ANDROID
|
||||
deviceSpecs->Add(new InfoItem("Sustained perf mode: ", System_GetPropertyBool(SYSPROP_SUPPORTS_SUSTAINED_PERF_MODE) ? "Yes" : "No"));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Sustained perf mode"), System_GetPropertyBool(SYSPROP_SUPPORTS_SUSTAINED_PERF_MODE) ? si->T("Yes") : si->T("No")));
|
||||
#endif
|
||||
|
||||
const char *build = "Release";
|
||||
const char *build = si->T("Release");
|
||||
#ifdef _DEBUG
|
||||
build = "Debug";
|
||||
build = si->T("Debug");
|
||||
#endif
|
||||
deviceSpecs->Add(new InfoItem("PPSSPP build: ", build));
|
||||
deviceSpecs->Add(new InfoItem(si->T("PPSSPP build"), build));
|
||||
|
||||
#ifdef __ANDROID__
|
||||
deviceSpecs->Add(new ItemHeader("Audio Information"));
|
||||
deviceSpecs->Add(new InfoItem("Sample rate", StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_SAMPLE_RATE))));
|
||||
deviceSpecs->Add(new InfoItem("Frames per buffer", StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_FRAMES_PER_BUFFER))));
|
||||
deviceSpecs->Add(new InfoItem("Optimal sample rate", StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_SAMPLE_RATE))));
|
||||
deviceSpecs->Add(new InfoItem("Optimal frames per buffer", StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_FRAMES_PER_BUFFER))));
|
||||
deviceSpecs->Add(new ItemHeader(si->T("Audio Information")));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Sample rate"), StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_SAMPLE_RATE))));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Frames per buffer"), StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_FRAMES_PER_BUFFER))));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Optimal sample rate"), StringFromFormat("%d Hz", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_SAMPLE_RATE))));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Optimal frames per buffer"), StringFromFormat("%d", System_GetPropertyInt(SYSPROP_AUDIO_OPTIMAL_FRAMES_PER_BUFFER))));
|
||||
|
||||
deviceSpecs->Add(new ItemHeader("Display Information"));
|
||||
deviceSpecs->Add(new InfoItem("Native Resolution", StringFromFormat("%dx%d",
|
||||
deviceSpecs->Add(new ItemHeader(si->T("Display Information")));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Native Resolution"), StringFromFormat("%dx%d",
|
||||
System_GetPropertyInt(SYSPROP_DISPLAY_XRES),
|
||||
System_GetPropertyInt(SYSPROP_DISPLAY_YRES))));
|
||||
deviceSpecs->Add(new InfoItem("Refresh rate", StringFromFormat("%0.3f Hz", (float)System_GetPropertyInt(SYSPROP_DISPLAY_REFRESH_RATE) / 1000.0f)));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Refresh rate"), StringFromFormat("%0.3f Hz", (float)System_GetPropertyInt(SYSPROP_DISPLAY_REFRESH_RATE) / 1000.0f)));
|
||||
#endif
|
||||
|
||||
|
||||
deviceSpecs->Add(new ItemHeader("Version Information"));
|
||||
deviceSpecs->Add(new ItemHeader(si->T("Version Information")));
|
||||
std::string apiVersion;
|
||||
if (GetGPUBackend() == GPUBackend::OPENGL) {
|
||||
if (gl_extensions.IsGLES) {
|
||||
@@ -440,33 +443,27 @@ void SystemInfoScreen::CreateViews() {
|
||||
if (apiVersion.size() > 30)
|
||||
apiVersion.resize(30);
|
||||
}
|
||||
deviceSpecs->Add(new InfoItem("API Version", apiVersion));
|
||||
deviceSpecs->Add(new InfoItem("Shading Language", draw->GetInfoString(InfoField::SHADELANGVERSION)));
|
||||
deviceSpecs->Add(new InfoItem(si->T("API Version"), apiVersion));
|
||||
deviceSpecs->Add(new InfoItem(si->T("Shading Language"), draw->GetInfoString(InfoField::SHADELANGVERSION)));
|
||||
|
||||
#ifdef __ANDROID__
|
||||
std::string moga = System_GetProperty(SYSPROP_MOGA_VERSION);
|
||||
if (moga.empty()) {
|
||||
moga = "(none detected)";
|
||||
moga = si->T("(none detected)");
|
||||
}
|
||||
deviceSpecs->Add(new InfoItem("Moga", moga));
|
||||
#endif
|
||||
|
||||
#ifdef __ANDROID__
|
||||
char temp[256];
|
||||
sprintf(temp, "%dx%d", System_GetPropertyInt(SYSPROP_DISPLAY_XRES), System_GetPropertyInt(SYSPROP_DISPLAY_YRES));
|
||||
deviceSpecs->Add(new InfoItem("Display resolution", temp));
|
||||
#endif
|
||||
|
||||
ViewGroup *buildConfigScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
buildConfigScroll->SetTag("DevSystemInfoBuildConfig");
|
||||
LinearLayout *buildConfig = new LinearLayout(ORIENT_VERTICAL);
|
||||
buildConfig->SetSpacing(0);
|
||||
buildConfigScroll->Add(buildConfig);
|
||||
tabHolder->AddTab("Build Config", buildConfigScroll);
|
||||
tabHolder->AddTab(si->T("Build Config"), buildConfigScroll);
|
||||
|
||||
buildConfig->Add(new ItemHeader("Build Configuration"));
|
||||
buildConfig->Add(new ItemHeader(si->T("Build Configuration")));
|
||||
#ifdef JENKINS
|
||||
buildConfig->Add(new InfoItem("Built by", "Jenkins"));
|
||||
buildConfig->Add(new InfoItem(si->T("Built by"), "Jenkins"));
|
||||
#endif
|
||||
#ifdef _DEBUG
|
||||
buildConfig->Add(new InfoItem("_DEBUG", ""));
|
||||
@@ -489,9 +486,9 @@ void SystemInfoScreen::CreateViews() {
|
||||
cpuExtensions->SetSpacing(0);
|
||||
cpuExtensionsScroll->Add(cpuExtensions);
|
||||
|
||||
tabHolder->AddTab("CPU Extensions", cpuExtensionsScroll);
|
||||
tabHolder->AddTab(si->T("CPU Extensions"), cpuExtensionsScroll);
|
||||
|
||||
cpuExtensions->Add(new ItemHeader("CPU Extensions"));
|
||||
cpuExtensions->Add(new ItemHeader(si->T("CPU Extensions")));
|
||||
std::vector<std::string> exts;
|
||||
SplitString(cpu_info.Summarize(), ',', exts);
|
||||
for (size_t i = 2; i < exts.size(); i++) {
|
||||
@@ -505,14 +502,14 @@ void SystemInfoScreen::CreateViews() {
|
||||
gpuExtensionsScroll->Add(gpuExtensions);
|
||||
|
||||
if (g_Config.iGPUBackend == GPU_BACKEND_OPENGL) {
|
||||
tabHolder->AddTab("OGL Extensions", gpuExtensionsScroll);
|
||||
tabHolder->AddTab(si->T("OGL Extensions"), gpuExtensionsScroll);
|
||||
|
||||
if (!gl_extensions.IsGLES) {
|
||||
gpuExtensions->Add(new ItemHeader("OpenGL Extensions"));
|
||||
gpuExtensions->Add(new ItemHeader(si->T("OpenGL Extensions")));
|
||||
} else if (gl_extensions.GLES3) {
|
||||
gpuExtensions->Add(new ItemHeader("OpenGL ES 3.0 Extensions"));
|
||||
gpuExtensions->Add(new ItemHeader(si->T("OpenGL ES 3.0 Extensions")));
|
||||
} else {
|
||||
gpuExtensions->Add(new ItemHeader("OpenGL ES 2.0 Extensions"));
|
||||
gpuExtensions->Add(new ItemHeader(si->T("OpenGL ES 2.0 Extensions")));
|
||||
}
|
||||
exts.clear();
|
||||
SplitString(g_all_gl_extensions, ' ', exts);
|
||||
@@ -533,23 +530,23 @@ void SystemInfoScreen::CreateViews() {
|
||||
eglExtensions->SetSpacing(0);
|
||||
eglExtensionsScroll->Add(eglExtensions);
|
||||
|
||||
tabHolder->AddTab("EGL Extensions", eglExtensionsScroll);
|
||||
tabHolder->AddTab(si->T("EGL Extensions"), eglExtensionsScroll);
|
||||
|
||||
eglExtensions->Add(new ItemHeader("EGL Extensions"));
|
||||
eglExtensions->Add(new ItemHeader(si->T("EGL Extensions")));
|
||||
|
||||
for (size_t i = 0; i < exts.size(); i++) {
|
||||
eglExtensions->Add(new TextView(exts[i]))->SetFocusable(true);
|
||||
}
|
||||
}
|
||||
} else if (g_Config.iGPUBackend == GPU_BACKEND_VULKAN) {
|
||||
tabHolder->AddTab("Vulkan Features", gpuExtensionsScroll);
|
||||
tabHolder->AddTab(si->T("Vulkan Features"), gpuExtensionsScroll);
|
||||
|
||||
gpuExtensions->Add(new ItemHeader("Vulkan Features"));
|
||||
gpuExtensions->Add(new ItemHeader(si->T("Vulkan Features")));
|
||||
std::vector<std::string> features = draw->GetFeatureList();
|
||||
for (auto &feature : features) {
|
||||
gpuExtensions->Add(new TextView(feature))->SetFocusable(true);
|
||||
}
|
||||
gpuExtensions->Add(new ItemHeader("Vulkan Extensions"));
|
||||
gpuExtensions->Add(new ItemHeader(si->T("Vulkan Extensions")));
|
||||
std::vector<std::string> extensions = draw->GetExtensionList();
|
||||
for (auto &extension : extensions) {
|
||||
gpuExtensions->Add(new TextView(extension))->SetFocusable(true);
|
||||
|
||||
Reference in new issue
Block a user