Code:
diff --git a/pts-core/functions/pts-functions_system_graphics.php b/pts-core/functions/pts-functions_system_graphics.php
index 84de190..fa1c696 100644
--- a/pts-core/functions/pts-functions_system_graphics.php
+++ b/pts-core/functions/pts-functions_system_graphics.php
@@ -26,10 +26,15 @@ function pts_record_gpu_temperature()
}
function graphics_processor_temperature()
{
- $temp_c = read_nvidia_extension("GPUCoreTemp");
+ $temp_c = -1;
- if(empty($temp_c))
- $temp_c = -1;
+ $nv_temp_c = read_nvidia_extension("GPUCoreTemp");
+ $ati_temp_c = read_ati_extension("CoreTemperature");
+
+ if(!empty($nv_temp_c))
+ $temp_c = $nv_temp_c;
+ elseif(!empty($ati_temp_c))
+ $temp_c = $ati_temp_c;
return $temp_c;
}
@@ -145,13 +150,20 @@ function graphics_processor_stock_frequency()
$core_freq = 0;
$mem_freq = 0;
- $freq = read_nvidia_extension("GPUDefault3DClockFreqs");
+ $nvfreq = read_nvidia_extension("GPUDefault3DClockFreqs");
+ $atifreq = read_ati_extension("Stock3DFrequencies");
- if(!empty($freq)) // NVIDIA GPU
+ if(!empty($nvfreq)) // NVIDIA GPU
+ {
+ $nvfreq = explode(',', $nvfreq);
+ $core_freq = $nvfreq[0];
+ $mem_freq = $nvfreq[1];
+ }
+ elseif(!empty($atifreq)) // ATI GPU
{
- $freq = explode(',', $freq);
- $core_freq = $freq[0];
- $mem_freq = $freq[1];
+ $atifreq = explode(',', $atifreq);
+ $core_freq = $atifreq[0];
+ $mem_freq = $atifreq[1];
}
return array($core_freq, $mem_freq);
@@ -161,13 +173,20 @@ function graphics_processor_frequency()
$core_freq = 0;
$mem_freq = 0;
- $freq = read_nvidia_extension("GPUCurrentClockFreqs");
+ $nvfreq = read_nvidia_extension("GPUCurrentClockFreqs");
+ $atifreq = read_ati_extension("Current3DFrequencies");
- if(!empty($freq)) // NVIDIA GPU
+ if(!empty($nvfreq)) // NVIDIA GPU
+ {
+ $nvfreq = explode(',', $nvfreq);
+ $core_freq = $nvfreq[0];
+ $mem_freq = $nvfreq[1];
+ }
+ elseif(!empty($atifreq)) // ATI GPU
{
- $freq = explode(',', $freq);
- $core_freq = $freq[0];
- $mem_freq = $freq[1];
+ $atifreq = explode(',', $atifreq);
+ $core_freq = $atifreq[0];
+ $mem_freq = $atifreq[1];
}
return array($core_freq, $mem_freq);
diff --git a/pts-core/functions/pts-functions_system_parsing.php b/pts-core/functions/pts-functions_system_parsing.php
index 1d0cb7f..75197b0 100644
--- a/pts-core/functions/pts-functions_system_parsing.php
+++ b/pts-core/functions/pts-functions_system_parsing.php
@@ -159,5 +159,50 @@ function read_nvidia_extension($attribute)
return $nv_info;
}
+function read_ati_extension($attribute)
+{
+ $ati_info = "";
+
+ //mangler to get correct info out of aticonfig
+ if("CoreTemperature" == $attribute)
+ {
+ $info = shell_exec("aticonfig --pplib-cmd \"get temperature 0\" 2>&1");
+ if(($pos = strpos($info, "thermal")) > 0)
+ {
+ $ati_info = substr($info, strpos($info, "is") + 3);
+ $ati_info = substr($ati_info, 0, strpos($ati_info, "\n"));
+ $ati_info = trim(substr($ati_info, 0, strrpos($ati_info, ".")));
+ }
+ }
+ elseif("Stock3DFrequencies" == $attribute)
+ {
+ $info = shell_exec("aticonfig --pplib-cmd \"get clock\" 2>&1");
+ if(($pos = strpos($info, "Engine")) > 0)
+ {
+ $core_info = substr($info, strpos($info, "-") + 2);
+ $core_info = substr($core_info, 0, strpos($core_info, " "));
+ $mem_info = substr($info, strpos($info, "Memory Clock"));
+ $mem_info = substr($mem_info, strpos($mem_info, "-") + 2);
+ $mem_info = trim(substr($mem_info, 0, strpos($mem_info, " ")));
+ $ati_info = $core_info . "," . $mem_info;
+ }
+ }
+ elseif("Current3DFrequencies" == $attribute)
+ {
+ $info = shell_exec("aticonfig --pplib-cmd \"get activity\" 2>&1");
+ if(($pos = strpos($info, "Activity")) > 0)
+ {
+ $core_info = substr($info, strpos($info, "Core Clock:") + 12);
+ $core_info = substr($core_info, 0, strpos($core_info, "\n"));
+ $core_info = trim(substr($core_info, 0, strrpos($core_info, "MHZ")));
+ $mem_info = substr($info, strpos($info, "Memory Clock:") + 14);
+ $mem_info = substr($mem_info, 0, strpos($mem_info, "\n"));
+ $mem_info = trim(substr($mem_info, 0, strrpos($mem_info, "MHZ")));
+ $ati_info = $core_info . "," . $mem_info;
+ }
+ }
+
+ return $ati_info;
+}
?>
I now get my 2D clocks reported in system-info: