Signed-off-by: Nicolai Hähnle <[email protected]>
---
 src/app/gui/waves_panel.cpp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/app/gui/waves_panel.cpp b/src/app/gui/waves_panel.cpp
index 68b06ea..cc37a1b 100644
--- a/src/app/gui/waves_panel.cpp
+++ b/src/app/gui/waves_panel.cpp
@@ -153,26 +153,30 @@ public:
 
                ImGui::Separator();
                if (!waves.empty()) {
                        ImGui::BeginChild("Waves", ImVec2(avail.x / 2, 0), 
false, ImGuiWindowFlags_NoTitleBar);
                        bool force_scroll = false;
                        for (size_t i = 0; i < waves.size(); ++i) {
                                JSON_Object *wave = waves[i].wave;
                                JSON_Object *status = 
json_object(json_object_get_value(wave, "status"));
 
                                int active_threads = -1;
+                               uint64_t exec = 0;
                                JSON_Array *threads = 
json_object_get_array(wave, "threads");
                                if (threads) {
                                        active_threads = 0;
                                        int s = json_array_get_count(threads);
                                        for (int i = 0; i < s; i++) {
-                                               active_threads += 
json_array_get_boolean(threads, i);
+                                               bool active = 
json_array_get_boolean(threads, i) == 1;
+                                               active_threads += active ? 1 : 
0;
+                                               if (active)
+                                                       exec |= (uint64_t)1 << 
i;
                                        }
                                }
                                const char *shader_address_str = 
json_object_get_string(wave, "shader");
 
                                char label[256];
                                if (active_threads < 0)
                                        sprintf(label, "Wave %s", 
waves[i].id.c_str());
                                else if (shader_address_str)
                                        sprintf(label, "Wave %s (#dbde79%d 
threads, valid PC)", waves[i].id.c_str(), active_threads);
                                else
@@ -288,21 +292,22 @@ public:
                                                                ImGui::PopID();
                                                                
ImGui::NextColumn();
                                                        }
                                                        ImGui::PopID();
                                                        ImGui::Columns(1);
                                                        ImGui::TreePop();
                                                }
                                        }
 
                                        {
-                                               static const char *formats[] = 
{ "#6c71c4%d", "#6c71c4%u", "#6c71c4%08x" };
+                                               static const char 
*formats_active[] = { "#6c71c4%d", "#6c71c4%u", "#6c71c4%08x", "#6c71c4%f" };
+                                               static const char 
*formats_inactive[] = { "#818181%d", "#818181%u", "#818181%08x", "#818181%f" };
                                                JSON_Array *vgpr = 
json_object_get_array(wave, "vgpr");
                                                if (vgpr && 
ImGui::TreeNodeEx("#6c71c4VGPRs")) {
                                                        int s = 
json_array_get_count(vgpr);
 
                                                        
ImGui::BeginTable("vgprvalues", 5, ImGuiTableFlags_Borders);
                                                        
ImGui::TableSetupColumn("Base");
                                                        
ImGui::TableSetupColumn("+ 0");
                                                        
ImGui::TableSetupColumn("+ 1");
                                                        
ImGui::TableSetupColumn("+ 2");
                                                        
ImGui::TableSetupColumn("+ 3");
@@ -330,26 +335,28 @@ public:
                                                                        int 
num_thread = json_array_get_count(vgp);
 
                                                                        for 
(int t = 0; t < num_thread; t++) {
                                                                                
if (t % 4 == 0) {
                                                                                
        ImGui::TableNextRow();
                                                                                
        ImGui::TableSetColumnIndex(0);
                                                                                
        ImGui::Text("%d", t);
                                                                                
}
                                                                                
ImGui::TableSetColumnIndex(1 + t % 4);
 
+                                                                               
const char **formats = (exec >> t) & 1 ? formats_active : formats_inactive;
+
                                                                                
JSON_Value *v = json_array_get_value(vgp, t);
                                                                                
ImGui::PushID(v);
                                                                                
int aaa = (int)json_number(v);
                                                                                
if (*mode == 3) {
                                                                                
        float f = reinterpret_cast<float&>(aaa);
-                                                                               
        ImGui::Text("#6c71c4%f", f);
+                                                                               
        ImGui::Text(formats[3], f);
                                                                                
} else {
                                                                                
        ImGui::Text(formats[*mode], aaa);
                                                                                
}
                                                                                
ImGui::PopID();
                                                                        }
                                                                }
                                                                ImGui::PopID();
                                                        }
                                                        ImGui::EndTable();
                                                        ImGui::TreePop();
-- 
2.40.0

Reply via email to