performance.h 2.95 KB
/*====================================================================
 * performance.h
 *
 * Copyright 1995, Silicon Graphics, Inc.
 * All Rights Reserved.
 *
 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
 * Inc.; the contents of this file may not be disclosed to third
 * parties, copied or duplicated in any form, in whole or in part,
 * without the prior written permission of Silicon Graphics, Inc.
 *
 * RESTRICTED RIGHTS LEGEND:
 * Use, duplication or disclosure by the Government is subject to
 * restrictions as set forth in subdivision (c)(1)(ii) of the Rights
 * in Technical Data and Computer Software clause at DFARS
 * 252.227-7013, and/or in similar or successor clauses in the FAR,
 * DOD or NASA FAR Supplement. Unpublished - rights reserved under the
 * Copyright Laws of the United States.
 *====================================================================*/

#ifndef __performance__
#define __performance__


/*
  performance.h

  Contains definitions and structures for performance measurements.
*/


#include "UI.h"
#include "UIpane.h"
#include "hist.h"       /* kHistSize */

/*
  UI item ids must start at zero since they are stored
  in an array and the ids are used to index the items.
*/
enum
{
    kCPUHistItemID = 0,
    kRSPHistItemID,
    kVoxHistItemID,
    kNumPerfItems
};



/*
  UI item locations are relative to the pane's origin.
*/

#define kPerf_l                28
#define kPerf_t                125
#define kPerf_delta            5
#define kPerf_w                (2*kHistSize + 2*kPerf_delta)

#define kCPUHistItem_l         kPerf_delta
#define kCPUHistItem_t         5
#define kCPUHistItem_w         (2*kHistSize)
#define kCPUHistItem_h         25

#define kRSPHistItem_l	       kCPUHistItem_l
#define kRSPHistItem_t	       (kCPUHistItem_t + kCPUHistItem_h + kPerf_delta)
#define kRSPHistItem_w	       kCPUHistItem_w
#define kRSPHistItem_h	       25

#define kVoxHistItem_l         kCPUHistItem_l
#define kVoxHistItem_t         (kRSPHistItem_t + kRSPHistItem_h + kPerf_delta)
#define kVoxHistItem_w         kCPUHistItem_w
#define kVoxHistItem_h         (MAX_SYNTH_VVOICES + 2)

#define kPerf_h                (kVoxHistItem_t + kVoxHistItem_h + kPerf_delta)


typedef struct
{
    s32		fFrameSample;			/* Stores the value from the last sampled frame. */
    f32		fAvgSample;			/* Stores the average sample value. */
    s32		fMaxSample;			/* Stores the maximum sample value. */
    s32		fLimit;				/* Stores the maximum limit of all sample values for display purposes. */

    Hist        fHist;
} Stats;


typedef struct
{
    Stats	fCPUStats;
    Stats	fRSPStats;
    Stats	fVoxStats;
    
    UIPane	fPane;                          /* Contains window pane data. */
    UIItem      fItemList[kNumPerfItems];       /* A list of control items in this pane. */
} Performance;


void Perf_Init (UIPane **ppPane);
void Perf_ClearStats (void);
void Perf_CPUSample (s32 frameSample);
void Perf_RSPSample (s32 frameSample);


#endif /* __performance__ */