mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-23 06:44:35 +00:00
Magic vectors in GPU children list.
This commit is contained in:
parent
c65d524725
commit
226a7b7cfb
@ -6678,6 +6678,31 @@ void View::DrawGpuInfoWindow()
|
|||||||
ImGui::TextDisabled( "(%s)", RealToString( children.size(), true ) );
|
ImGui::TextDisabled( "(%s)", RealToString( children.size(), true ) );
|
||||||
if( expand )
|
if( expand )
|
||||||
{
|
{
|
||||||
|
if( children.is_magic() )
|
||||||
|
{
|
||||||
|
DrawGpuInfoChildren<VectorAdapterDirect<GpuEvent>>( *(Vector<GpuEvent>*)( &children ), ztime );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DrawGpuInfoChildren<VectorAdapterPointer<GpuEvent>>( children, ztime );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::EndChild();
|
||||||
|
ImGui::End();
|
||||||
|
|
||||||
|
if( !show )
|
||||||
|
{
|
||||||
|
m_gpuInfoWindow = nullptr;
|
||||||
|
m_gpuInfoStack.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename Adapter, typename V>
|
||||||
|
void View::DrawGpuInfoChildren( const V& children, int64_t ztime )
|
||||||
|
{
|
||||||
|
Adapter a;
|
||||||
const auto rztime = 1.0 / ztime;
|
const auto rztime = 1.0 / ztime;
|
||||||
const auto ty = ImGui::GetTextLineHeight();
|
const auto ty = ImGui::GetTextLineHeight();
|
||||||
|
|
||||||
@ -6697,7 +6722,7 @@ void View::DrawGpuInfoWindow()
|
|||||||
cmap.reserve( 128 );
|
cmap.reserve( 128 );
|
||||||
for( size_t i=0; i<children.size(); i++ )
|
for( size_t i=0; i<children.size(); i++ )
|
||||||
{
|
{
|
||||||
const auto& child = *children[i];
|
const auto& child = a(children[i]);
|
||||||
const auto cend = m_worker.GetZoneEnd( child );
|
const auto cend = m_worker.GetZoneEnd( child );
|
||||||
const auto ct = cend - child.GpuStart();
|
const auto ct = cend - child.GpuStart();
|
||||||
const auto srcloc = child.SrcLoc();
|
const auto srcloc = child.SrcLoc();
|
||||||
@ -6736,7 +6761,7 @@ void View::DrawGpuInfoWindow()
|
|||||||
const auto txt = m_worker.GetZoneName( srcloc );
|
const auto txt = m_worker.GetZoneName( srcloc );
|
||||||
if( cgr.v.size() == 1 )
|
if( cgr.v.size() == 1 )
|
||||||
{
|
{
|
||||||
auto& cev = *children[cgr.v.front()];
|
auto& cev = a(children[cgr.v.front()]);
|
||||||
const auto txt = m_worker.GetZoneName( cev );
|
const auto txt = m_worker.GetZoneName( cev );
|
||||||
bool b = false;
|
bool b = false;
|
||||||
ImGui::PushID( (int)cgr.v.front() );
|
ImGui::PushID( (int)cgr.v.front() );
|
||||||
@ -6787,7 +6812,7 @@ void View::DrawGpuInfoWindow()
|
|||||||
auto cti = std::make_unique<uint32_t[]>( cgr.v.size() );
|
auto cti = std::make_unique<uint32_t[]>( cgr.v.size() );
|
||||||
for( size_t i=0; i<cgr.v.size(); i++ )
|
for( size_t i=0; i<cgr.v.size(); i++ )
|
||||||
{
|
{
|
||||||
const auto& child = *children[cgr.v[i]];
|
const auto& child = a(children[cgr.v[i]]);
|
||||||
const auto cend = m_worker.GetZoneEnd( child );
|
const auto cend = m_worker.GetZoneEnd( child );
|
||||||
const auto ct = cend - child.GpuStart();
|
const auto ct = cend - child.GpuStart();
|
||||||
ctt[i] = ct;
|
ctt[i] = ct;
|
||||||
@ -6798,7 +6823,7 @@ void View::DrawGpuInfoWindow()
|
|||||||
|
|
||||||
for( size_t i=0; i<cgr.v.size(); i++ )
|
for( size_t i=0; i<cgr.v.size(); i++ )
|
||||||
{
|
{
|
||||||
auto& cev = *children[cgr.v[cti[i]]];
|
auto& cev = a(children[cgr.v[cti[i]]]);
|
||||||
const auto txt = m_worker.GetZoneName( cev );
|
const auto txt = m_worker.GetZoneName( cev );
|
||||||
bool b = false;
|
bool b = false;
|
||||||
ImGui::Indent();
|
ImGui::Indent();
|
||||||
@ -6837,7 +6862,7 @@ void View::DrawGpuInfoWindow()
|
|||||||
uint64_t ctime = 0;
|
uint64_t ctime = 0;
|
||||||
for( size_t i=0; i<children.size(); i++ )
|
for( size_t i=0; i<children.size(); i++ )
|
||||||
{
|
{
|
||||||
const auto& child = *children[i];
|
const auto& child = a(children[i]);
|
||||||
const auto cend = m_worker.GetZoneEnd( child );
|
const auto cend = m_worker.GetZoneEnd( child );
|
||||||
const auto ct = cend - child.GpuStart();
|
const auto ct = cend - child.GpuStart();
|
||||||
ctime += ct;
|
ctime += ct;
|
||||||
@ -6857,7 +6882,7 @@ void View::DrawGpuInfoWindow()
|
|||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
for( size_t i=0; i<children.size(); i++ )
|
for( size_t i=0; i<children.size(); i++ )
|
||||||
{
|
{
|
||||||
auto& cev = *children[cti[i]];
|
auto& cev = a(children[cti[i]]);
|
||||||
bool b = false;
|
bool b = false;
|
||||||
ImGui::PushID( (int)i );
|
ImGui::PushID( (int)i );
|
||||||
if( ImGui::Selectable( m_worker.GetZoneName( cev ), &b, ImGuiSelectableFlags_SpanAllColumns ) )
|
if( ImGui::Selectable( m_worker.GetZoneName( cev ), &b, ImGuiSelectableFlags_SpanAllColumns ) )
|
||||||
@ -6884,17 +6909,6 @@ void View::DrawGpuInfoWindow()
|
|||||||
ImGui::EndColumns();
|
ImGui::EndColumns();
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui::EndChild();
|
|
||||||
ImGui::End();
|
|
||||||
|
|
||||||
if( !show )
|
|
||||||
{
|
|
||||||
m_gpuInfoWindow = nullptr;
|
|
||||||
m_gpuInfoStack.clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void View::DrawOptions()
|
void View::DrawOptions()
|
||||||
|
@ -168,6 +168,8 @@ private:
|
|||||||
|
|
||||||
template<typename Adapter, typename V>
|
template<typename Adapter, typename V>
|
||||||
void DrawZoneInfoChildren( const V& children, int64_t ztime );
|
void DrawZoneInfoChildren( const V& children, int64_t ztime );
|
||||||
|
template<typename Adapter, typename V>
|
||||||
|
void DrawGpuInfoChildren( const V& children, int64_t ztime );
|
||||||
|
|
||||||
void HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, double& pxns );
|
void HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, double& pxns );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user