ROOT logo
// $Id: GLTesterOne.cxx 2088 2008-11-23 20:26:46Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

//__________________________________________________________________________
// GLTesterOne
//
// Speed tests for GL operations. User can specify the number of outer and
// inner loops; the outer-loop timings are histogrammed with micro-second
// precision.
//
// Test(s) performed depend on value of mTestSelection variable:
//
// 1) TT_RnrAtom - point/line triangle rendering speed. Different modes
//    allow different ways of setting up the transformation matrix.
// 2) MatrixOps  - speed of retrieving matrices from GL.
//
// See also code of GLTesterOne_GL_Rnr.

#include "GLTesterOne.h"
#include "GLTesterOne.c7"

#include <Gled/GTime.h>

#include <TMath.h>
#include <TPad.h>

ClassImp(GLTesterOne);

/**************************************************************************/

void GLTesterOne::_init()
{
  mPupil = 0;

  mTestSelection = TT_RnrAtom;

  mRAtom  = RA_Point;
  mTMode  = TM_Vertex;
  mNSteps = 1000;
  mXMax   = 100;
  mTringU = 0.2;
  mTringV = 0.1;

  mMatrixOps = MO_GetFloat;

  bUseDispList = false;
  bPrint       = true;

  mNRedraws = 1000;
  mNTrial   = 20;

  h1TStat = new TH1F("TStat", "GlOne Time Statistics", 10, 0, 1);
}

/**************************************************************************/

void GLTesterOne::register_result(Double_t t)
{
  if(h1TStat != 0) {
    h1TStat->Fill(t);
  }
}

void GLTesterOne::RunTest()
{
  h1TStat->Reset();
  h1TStat->SetBins(200, 0, 1);

  for(int i=0; i<mNTrial; ++i) {
    mPupil->Redraw();
  }
  while(h1TStat->GetEntries() < mNTrial) GTime::SleepMiliSec(10);

  Double_t m = h1TStat->GetMean(), r = h1TStat->GetRMS();
  Double_t min = TMath::Max(m - 5*r, 0.0);
  Double_t max = m + 5*r;
  Int_t nbins = TMath::Min(200, Int_t((max - min)/1e-6)); // Have mu-sec precision.

  h1TStat->Reset();
  h1TStat->SetBins(nbins, min, max);

  for(int i=0; i<mNRedraws; ++i) {
    mPupil->Redraw();
  }
  while(h1TStat->GetEntries() < mNRedraws) GTime::SleepMiliSec(10);
  h1TStat->DrawCopy();
  gPad->Update();
}

/**************************************************************************/
 GLTesterOne.cxx:1
 GLTesterOne.cxx:2
 GLTesterOne.cxx:3
 GLTesterOne.cxx:4
 GLTesterOne.cxx:5
 GLTesterOne.cxx:6
 GLTesterOne.cxx:7
 GLTesterOne.cxx:8
 GLTesterOne.cxx:9
 GLTesterOne.cxx:10
 GLTesterOne.cxx:11
 GLTesterOne.cxx:12
 GLTesterOne.cxx:13
 GLTesterOne.cxx:14
 GLTesterOne.cxx:15
 GLTesterOne.cxx:16
 GLTesterOne.cxx:17
 GLTesterOne.cxx:18
 GLTesterOne.cxx:19
 GLTesterOne.cxx:20
 GLTesterOne.cxx:21
 GLTesterOne.cxx:22
 GLTesterOne.cxx:23
 GLTesterOne.cxx:24
 GLTesterOne.cxx:25
 GLTesterOne.cxx:26
 GLTesterOne.cxx:27
 GLTesterOne.cxx:28
 GLTesterOne.cxx:29
 GLTesterOne.cxx:30
 GLTesterOne.cxx:31
 GLTesterOne.cxx:32
 GLTesterOne.cxx:33
 GLTesterOne.cxx:34
 GLTesterOne.cxx:35
 GLTesterOne.cxx:36
 GLTesterOne.cxx:37
 GLTesterOne.cxx:38
 GLTesterOne.cxx:39
 GLTesterOne.cxx:40
 GLTesterOne.cxx:41
 GLTesterOne.cxx:42
 GLTesterOne.cxx:43
 GLTesterOne.cxx:44
 GLTesterOne.cxx:45
 GLTesterOne.cxx:46
 GLTesterOne.cxx:47
 GLTesterOne.cxx:48
 GLTesterOne.cxx:49
 GLTesterOne.cxx:50
 GLTesterOne.cxx:51
 GLTesterOne.cxx:52
 GLTesterOne.cxx:53
 GLTesterOne.cxx:54
 GLTesterOne.cxx:55
 GLTesterOne.cxx:56
 GLTesterOne.cxx:57
 GLTesterOne.cxx:58
 GLTesterOne.cxx:59
 GLTesterOne.cxx:60
 GLTesterOne.cxx:61
 GLTesterOne.cxx:62
 GLTesterOne.cxx:63
 GLTesterOne.cxx:64
 GLTesterOne.cxx:65
 GLTesterOne.cxx:66
 GLTesterOne.cxx:67
 GLTesterOne.cxx:68
 GLTesterOne.cxx:69
 GLTesterOne.cxx:70
 GLTesterOne.cxx:71
 GLTesterOne.cxx:72
 GLTesterOne.cxx:73
 GLTesterOne.cxx:74
 GLTesterOne.cxx:75
 GLTesterOne.cxx:76
 GLTesterOne.cxx:77
 GLTesterOne.cxx:78
 GLTesterOne.cxx:79
 GLTesterOne.cxx:80
 GLTesterOne.cxx:81
 GLTesterOne.cxx:82
 GLTesterOne.cxx:83
 GLTesterOne.cxx:84
 GLTesterOne.cxx:85
 GLTesterOne.cxx:86
 GLTesterOne.cxx:87
 GLTesterOne.cxx:88
 GLTesterOne.cxx:89
 GLTesterOne.cxx:90
 GLTesterOne.cxx:91
 GLTesterOne.cxx:92
 GLTesterOne.cxx:93