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: c0758fbfb2d0
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: 12f5004ab83b
Choose a head ref
  • 1 commit
  • 3 files changed
  • 1 contributor

Commits on Sep 6, 2020

  1. Copy the full SHA
    12f5004 View commit details
Showing with 3 additions and 59 deletions.
  1. +3 −30 src/glscopeclient/WaveformArea.cpp
  2. +0 −4 src/glscopeclient/WaveformArea.h
  3. +0 −25 src/glscopeclient/WaveformArea_rendering.cpp
33 changes: 3 additions & 30 deletions src/glscopeclient/WaveformArea.cpp
Original file line number Diff line number Diff line change
@@ -75,12 +75,6 @@ void WaveformArea::SharedCtorInit()
//performance counters
m_frameTime = 0;
m_frameCount = 0;
m_renderTime = 0;
m_prepareTime = 0;
m_cairoTime = 0;
m_texDownloadTime = 0;
m_compositeTime = 0;
m_indexTime = 0;
m_lastFrameStart = -1;

m_updatingContextMenu = false;
@@ -126,30 +120,9 @@ void WaveformArea::SharedCtorInit()

WaveformArea::~WaveformArea()
{
LogDebug("Shutting down view for waveform %s\n", m_channel.m_channel->m_displayname.c_str());
{
LogIndenter li;

double tavg = m_frameTime / m_frameCount;
LogDebug("Average frame interval: %.3f ms (%.2f FPS, %zu frames)\n",
tavg*1000, 1/tavg, m_frameCount);

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("Composite | %10.1f | %10.3f | %.1f %%\n",
m_compositeTime * 1000, m_compositeTime * 1000 / m_frameCount, m_compositeTime * 100 / m_renderTime);
}
double tavg = m_frameTime / m_frameCount;
LogDebug("Average frame interval for %s: %.3f ms (%.2f FPS, %zu frames)\n",
m_channel.m_channel->m_displayname.c_str(), tavg*1000, 1/tavg, m_frameCount);

m_channel.m_channel->Release();

4 changes: 0 additions & 4 deletions src/glscopeclient/WaveformArea.h
Original file line number Diff line number Diff line change
@@ -437,10 +437,6 @@ class WaveformArea : public Gtk::GLArea
double m_lastFrameStart;
double m_frameTime;
long m_frameCount;
double m_renderTime;
double m_cairoTime;
double m_texDownloadTime;
double m_compositeTime;

double m_prepareTime;
double m_indexTime;
25 changes: 0 additions & 25 deletions src/glscopeclient/WaveformArea_rendering.cpp
Original file line number Diff line number Diff line change
@@ -425,9 +425,6 @@ bool WaveformArea::on_render(const Glib::RefPtr<Gdk::GLContext>& /*context*/)
if(err != 0)
LogNotice("Render: err = %x\n", err);

dt = GetTime() - start;
m_renderTime += dt;

//If our channel is digital, set us to minimal size
if(m_channel.m_channel->GetType() == OscilloscopeChannel::CHANNEL_TYPE_DIGITAL)
{
@@ -615,8 +612,6 @@ void WaveformArea::RenderTraceColorCorrection(WaveformRenderData* data)

void WaveformArea::ComputeAndDownloadCairoUnderlays()
{
double tstart = GetTime();

//Create the Cairo surface we're drawing on
Cairo::RefPtr< Cairo::ImageSurface > surface =
Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, m_width, m_height);
@@ -634,9 +629,6 @@ void WaveformArea::ComputeAndDownloadCairoUnderlays()
//Software rendering
DoRenderCairoUnderlays(cr);

m_cairoTime += (GetTime() - tstart);
tstart = GetTime();

//Update the texture
//Tell GL it's RGBA even though it's BGRA, faster to invert in the shader than when downloading
m_cairoTexture.Bind();
@@ -645,14 +637,10 @@ void WaveformArea::ComputeAndDownloadCairoUnderlays()
m_width,
m_height,
surface->get_data());

m_texDownloadTime += (GetTime() - tstart);
}

void WaveformArea::RenderCairoUnderlays()
{
double tstart = GetTime();

glDisable(GL_BLEND);

//Draw the actual image
@@ -661,14 +649,10 @@ void WaveformArea::RenderCairoUnderlays()
m_cairoProgram.SetUniform(m_cairoTexture, "fbtex");
m_cairoTexture.Bind();
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

m_compositeTime += (GetTime() - tstart);
}

void WaveformArea::ComputeAndDownloadCairoOverlays()
{
double tstart = GetTime();

//Create the Cairo surface we're drawing on
Cairo::RefPtr< Cairo::ImageSurface > surface =
Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, m_width, m_height);
@@ -687,9 +671,6 @@ void WaveformArea::ComputeAndDownloadCairoOverlays()

DoRenderCairoOverlays(cr);

m_cairoTime += GetTime() - tstart;
tstart = GetTime();

//Get the image data and make a texture from it
//Tell GL it's RGBA even though it's BGRA, faster to invert in the shader than when downloading
m_cairoTextureOver.Bind();
@@ -698,14 +679,10 @@ void WaveformArea::ComputeAndDownloadCairoOverlays()
m_width,
m_height,
surface->get_data());

m_texDownloadTime += GetTime() - tstart;
}

void WaveformArea::RenderCairoOverlays()
{
double tstart = GetTime();

//Configure blending for Cairo's premultiplied alpha
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
@@ -718,8 +695,6 @@ void WaveformArea::RenderCairoOverlays()
m_cairoVAO.Bind();
m_cairoProgram.SetUniform(m_cairoTextureOver, "fbtex");
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

m_compositeTime += GetTime() - tstart;
}

int64_t WaveformArea::XPositionToXAxisUnits(float pix)