Back to the OpenGL extension cross reference

WGL_I3D_swap_frame_usage


Name


    WGL_I3D_swap_frame_usage

Name Strings


    WGL_I3D_swap_frame_usage

Version


    Date: 5/1/2000   Revision: 1.3

Number


    ???

Dependencies


    WGL_EXT_extensions_string is required.
WGL_EXT_swap_control affects the definition of this extension

Overview


    This extension allows an application to obtain the percent of time
used to draw a frame. A floating-point value in the range [0,max]
is returned which is calculated as follows:

td
percent = ----
tf

where td is the time measured from the last buffer swap (or call to
enable the statistic) to when the application issued a buffer swap,
tf is the entire time for a frame which may be multiple screen
refreshes depending on the swap interval as set by the
WGL_swap_control extension.

The value, percent, indicates the amount of time spent during the
draw. If the value is in the range [0,1], the buffer swap occurred
within the time period required to maintain a constant frame rate.
If the value is in the range (1,max], a constant frame rate was not
achieved. The value indicates the number of frames required to
draw.

There is also a mechanism to determine whether a frame swap was
missed.

New Procedures and Functions


    BOOL wglGetFrameUsageI3D(float *pUsage)

BOOL wglBeginFrameTrackingI3D(void)

BOOL wglEndFrameTrackingI3D(void)

BOOL wglQueryFrameTrackingI3D(DWORD *pFrameCount,
DWORD *pMissedFrames,
float *pLastMissedUsage)

New Tokens


    None

Additions to Chapter 2 of the 1.2 GL Specification (OpenGL Operation)


    None

Additions to Chapter 3 of the 1.2 GL Specification (Rasterization)


    None

Additions to Chapter 4 of the 1.2 GL Specification (Per-Fragment Operations and the Framebuffer)


    None

Additions to Chapter 5 of the 1.2 GL Specification (Special Functions)


    None

Additions to Chapter 6 of the 1.2 GL Specification (State and State Requests)


    None

Additions to the WGL Specification


    wglGetFrameUsageI3D returns a floating-point value in <pUsage>
that represents the percentage of time that the application spent
drawing a scene. The percentage is calculated as the time spent
within the time available.

The time available is the frame refresh time unless a swap interval
has been established. In this case, the time available is an
integer multiple of the frame time as established by the swap
interval.

Missed frame swaps can be tracked by calling the following function:

BOOL wglBeginFrameTrackingI3D(void)

wglBeginFrameTrackingI3D resets a "missed frame" count and
synchronizes with the next frame vertical sync before it returns.
If a swap is missed based in the rate control specified by the
<interval> set by wglSwapIntervalEXT or the default swap of once
per frame, the missed frame count is incremented.

The current missed frame count and total number of swaps since
the last call to wglBeginFrameTrackingI3D can be obtained by
callling the following function:

BOOL wglQueryFrameTrackingI3D(DWORD *pFrameCount,
DWORD *pMissedFrames,
float *pLastMissedUsage)

The location pointed to by <pFrameCount> will be updated with the
number of swaps that have occurred. This value may not match the
number of swaps that have been requested since swaps may be
queued by the implementation. This function can be called at any
time and does not synchronize to vertical blank.

The location pointed to by <pMissedFrames> will contain the number
swaps that missed the specified frame. The frame usage for the
last missed frame is returned in the location pointed to by
<pLastMissedUsage>.

Frame tracking is disabled by calling the function

BOOL wglEndFrameTrackingI3D(void)

This function will not return until all swaps have occurred. The
application can call wglQueryFrameTrackingI3D for a final swap and
missed frame count.

If these functions fail, FALSE is returned. To get extended
error information, call GetLastError.

Dependencies on WGL_EXT_extensions_string


    Because there is no way to extend wgl, these calls are defined in
the ICD and can be called by obtaining the address with
wglGetProcAddress. Because this extension is a WGL extension, it
is not included in the GL_EXTENSIONS string. Its existence can be
determined with the WGL_EXT_extensions_string extension.

Errors


    If the function succeeds, the return value is TRUE. If the function
fails, the return value is FALSE. To get extended error information,
call GetLastError.

ERROR_DC_NOT_FOUND An RC was not current to the calling
thread; therefore, no DC could be
obtained.

ERROR_BUSY The resource used for obtaining usage
was currently in use by another
application.

New State


    None

New Implementation Dependent State


    None

Implementation Support


   List of OpenGL implementations supporting the WGL_I3D_swap_frame_usage extension

Original File


   Original text file for the WGL_I3D_swap_frame_usage extension


Page generated on Sun Nov 20 18:40:41 2005