Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ngscopeclient/scopehal-apps
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: bea78c34b555
Choose a base ref
...
head repository: ngscopeclient/scopehal-apps
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0d7ba553e5ba
Choose a head ref
  • 1 commit
  • 7 files changed
  • 1 contributor

Commits on Feb 23, 2020

  1. Refactoring: moved Cairo rendering code to another file. Some minor t…

    …weaks to remove redundant GL state changes
    azonenberg committed Feb 23, 2020
    Copy the full SHA
    0d7ba55 View commit details
1 change: 1 addition & 0 deletions glscopeclient/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ add_executable(glscopeclient
WaveformArea.cpp
WaveformArea_events.cpp
WaveformArea_rendering.cpp
WaveformArea_cairo.cpp
WaveformGroup.cpp

main.cpp
11 changes: 0 additions & 11 deletions glscopeclient/Texture.h
Original file line number Diff line number Diff line change
@@ -76,17 +76,6 @@ class Texture
{
glTexImage2D(target, mipmap, internalformat, width, height, 0, format, type, data);
}
void AllocateMultisample(
size_t width,
size_t height,
int samples = 4,
GLint internalformat = GL_RGBA32F,
GLenum target = GL_TEXTURE_2D_MULTISAMPLE,
GLboolean fixed_sample = GL_FALSE
)
{
glTexImage2DMultisample(target, samples, internalformat, width, height, fixed_sample);
}

protected:

41 changes: 27 additions & 14 deletions glscopeclient/WaveformArea.cpp
Original file line number Diff line number Diff line change
@@ -76,10 +76,11 @@ void WaveformArea::SharedCtorInit()
m_frameTime = 0;
m_frameCount = 0;
m_renderTime = 0;
m_underlayTime = 0;
m_overlayTime = 0;
m_prepareTime = 0;
m_downloadTime = 0;
m_cairoTime = 0;
m_texDownloadTime = 0;
m_compositeTime = 0;
m_indexTime = 0;
m_updatingContextMenu = false;
m_selectedChannel = m_channel;
@@ -116,18 +117,24 @@ WaveformArea::~WaveformArea()
double tavg = m_frameTime / m_frameCount;
LogDebug("Average frame interval: %.3f ms (%.2f FPS, %zu frames)\n",
tavg*1000, 1/tavg, m_frameCount);
LogDebug("Total render time: %.3f ms (average %.3f)\n",
m_renderTime * 1000, m_renderTime * 1000 / m_frameCount);
LogDebug("Cairo underlay : %.3f ms (%.1f %%)\n",
m_underlayTime * 1000, m_underlayTime * 100 / m_renderTime);
LogDebug("Cairo overlay : %.3f ms (%.1f %%)\n",
m_overlayTime * 1000, m_overlayTime * 100 / m_renderTime);
LogDebug("Prepare geometry : %.3f ms (%.1f %%)\n",
m_prepareTime * 1000, m_prepareTime * 100 / m_renderTime);
LogDebug("Build index : %.3f ms (%.1f %%)\n",
m_indexTime * 1000, m_indexTime * 100 / m_renderTime);
LogDebug("Download geometry: %.3f ms (%.1f %%)\n",
m_downloadTime * 1000, m_downloadTime * 100 / m_renderTime);

LogDebug("----------------------------------------------------------\n");
LogDebug("Task | Total (ms) | Average (ms) | Percentage\n");
LogDebug("----------------------------------------------------------\n");
LogDebug("Render | %10.1f | %10.3f | %.1f %%\n",
m_renderTime * 1000, m_renderTime * 1000 / m_frameCount, 100.0f);
LogDebug("Cairo | %10.1f | %10.3f | %.1f %%\n",
m_cairoTime * 1000, m_cairoTime * 1000 / m_frameCount, m_cairoTime * 100 / m_renderTime);
LogDebug("Texture download | %10.1f | %10.3f | %.1f %%\n",
m_texDownloadTime * 1000, m_texDownloadTime * 1000 / m_frameCount, m_texDownloadTime * 100 / m_renderTime);
LogDebug("Prepare | %10.1f | %10.3f | %.1f %%\n",
m_prepareTime * 1000, m_prepareTime * 1000 / m_frameCount, m_prepareTime * 100 / m_renderTime);
LogDebug("Build index | %10.1f | %10.3f | %.1f %%\n",
m_indexTime * 1000, m_indexTime * 1000 / m_frameCount, m_indexTime * 100 / m_renderTime);
LogDebug("Geometry download | %10.1f | %10.3f | %.1f %%\n",
m_downloadTime * 1000, m_downloadTime * 1000 / m_frameCount, m_downloadTime * 100 / m_renderTime);
LogDebug("Composite | %10.1f | %10.3f | %.1f %%\n",
m_compositeTime * 1000, m_compositeTime * 1000 / m_frameCount, m_compositeTime * 100 / m_renderTime);
}

m_channel->Release();
@@ -683,6 +690,12 @@ bool WaveformArea::IsWaterfall()
return (fall != NULL);
}

bool WaveformArea::IsAnalog()
{
auto pdat = m_channel->GetData();
return (dynamic_cast<AnalogCapture*>(pdat) != NULL);
}

bool WaveformArea::IsEye()
{
auto eye = dynamic_cast<EyeDecoder2*>(m_channel);
7 changes: 5 additions & 2 deletions glscopeclient/WaveformArea.h
Original file line number Diff line number Diff line change
@@ -103,6 +103,7 @@ class WaveformArea : public Gtk::GLArea
WaveformGroup* m_group;

//Helpers for figuring out what kind of signal our primary trace is
bool IsAnalog();
bool IsEye();
bool IsWaterfall();
bool IsFFT();
@@ -322,8 +323,10 @@ class WaveformArea : public Gtk::GLArea
double m_frameTime;
long m_frameCount;
double m_renderTime;
double m_underlayTime;
double m_overlayTime;
double m_cairoTime;
double m_texDownloadTime;
double m_compositeTime;

double m_prepareTime;
double m_indexTime;
double m_downloadTime;
Loading