From a3c51f0e7e7c473214383d7d824e2beb17fe63bb Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 7 Jul 2020 21:16:08 +0200 Subject: [PATCH] Don't show drift adjustment for calibrated GPU contexts. --- server/TracyView.cpp | 105 ++++++++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 51 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 11fc23f7..370807b8 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -7906,80 +7906,83 @@ void View::DrawOptions() { ImGui::TextDisabled( "%s threads", RealToString( gpuData[i]->threadData.size() ) ); } - ImGui::TreePush(); - auto& drift = GpuDrift( gpuData[i] ); - ImGui::SetNextItemWidth( 120 ); - ImGui::PushID( i ); - ImGui::InputInt( "Drift (ns/s)", &drift ); - ImGui::PopID(); - if( timeline.size() > 1 ) + if( !gpuData[i]->hasCalibration ) { - ImGui::SameLine(); - if( ImGui::Button( ICON_FA_ROBOT " Auto" ) ) + ImGui::TreePush(); + auto& drift = GpuDrift( gpuData[i] ); + ImGui::SetNextItemWidth( 120 ); + ImGui::PushID( i ); + ImGui::InputInt( "Drift (ns/s)", &drift ); + ImGui::PopID(); + if( timeline.size() > 1 ) { - size_t lastidx = 0; - if( timeline.is_magic() ) + ImGui::SameLine(); + if( ImGui::Button( ICON_FA_ROBOT " Auto" ) ) { - auto& tl = *((Vector*)&timeline); - for( size_t j=tl.size()-1; j > 0; j-- ) + size_t lastidx = 0; + if( timeline.is_magic() ) { - if( tl[j].GpuEnd() >= 0 ) + auto& tl = *((Vector*)&timeline); + for( size_t j=tl.size()-1; j > 0; j-- ) { - lastidx = j; - break; + if( tl[j].GpuEnd() >= 0 ) + { + lastidx = j; + break; + } } } - } - else - { - for( size_t j=timeline.size()-1; j > 0; j-- ) + else { - if( timeline[j]->GpuEnd() >= 0 ) + for( size_t j=timeline.size()-1; j > 0; j-- ) { - lastidx = j; - break; + if( timeline[j]->GpuEnd() >= 0 ) + { + lastidx = j; + break; + } } } - } - enum { NumSlopes = 10000 }; - std::random_device rd; - std::default_random_engine gen( rd() ); - std::uniform_int_distribution dist( 0, lastidx - 1 ); - float slopes[NumSlopes]; - size_t idx = 0; - if( timeline.is_magic() ) - { - auto& tl = *((Vector*)&timeline); - do + enum { NumSlopes = 10000 }; + std::random_device rd; + std::default_random_engine gen( rd() ); + std::uniform_int_distribution dist( 0, lastidx - 1 ); + float slopes[NumSlopes]; + size_t idx = 0; + if( timeline.is_magic() ) { - const auto p0 = dist( gen ); - const auto p1 = dist( gen ); - if( p0 != p1 ) + auto& tl = *((Vector*)&timeline); + do { - slopes[idx++] = float( 1.0 - double( tl[p1].GpuStart() - tl[p0].GpuStart() ) / double( tl[p1].CpuStart() - tl[p0].CpuStart() ) ); + const auto p0 = dist( gen ); + const auto p1 = dist( gen ); + if( p0 != p1 ) + { + slopes[idx++] = float( 1.0 - double( tl[p1].GpuStart() - tl[p0].GpuStart() ) / double( tl[p1].CpuStart() - tl[p0].CpuStart() ) ); + } } + while( idx < NumSlopes ); } - while( idx < NumSlopes ); - } - else - { - do + else { - const auto p0 = dist( gen ); - const auto p1 = dist( gen ); - if( p0 != p1 ) + do { - slopes[idx++] = float( 1.0 - double( timeline[p1]->GpuStart() - timeline[p0]->GpuStart() ) / double( timeline[p1]->CpuStart() - timeline[p0]->CpuStart() ) ); + const auto p0 = dist( gen ); + const auto p1 = dist( gen ); + if( p0 != p1 ) + { + slopes[idx++] = float( 1.0 - double( timeline[p1]->GpuStart() - timeline[p0]->GpuStart() ) / double( timeline[p1]->CpuStart() - timeline[p0]->CpuStart() ) ); + } } + while( idx < NumSlopes ); } - while( idx < NumSlopes ); + std::sort( slopes, slopes+NumSlopes ); + drift = int( 1000000000 * -slopes[NumSlopes/2] ); } - std::sort( slopes, slopes+NumSlopes ); - drift = int( 1000000000 * -slopes[NumSlopes/2] ); } + ImGui::TreePop(); } - ImGui::TreePop(); } ImGui::TreePop(); }