blob: 3d7fd08c0df4b3177785c6bbe82162b5533afff4 [file] [log] [blame]
Name
PGI_misc_hints
Name Strings
GL_PGI_misc_hints
Version
$Date: 1996/04/22 23:24:16 $ $Revision: 1.1 $
Number
77
Dependencies
None
Overview
The extension allows the app to give various hints regarding
desired level of conformance, performance, features, etc.
New Procedures and Functions
HintPGI
New Tokens
Accepted by the <target> parameters of Hint and HintPGI:
PREFER_DOUBLEBUFFER_HINT_PGI 107000
STRICT_DEPTHFUNC_HINT_PGI 107030
STRICT_LIGHTING_HINT_PGI 107031
STRICT_SCISSOR_HINT_PGI 107032
FULL_STIPPLE_HINT_PGI 107033
NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011
NATIVE_GRAPHICS_END_HINT_PGI 107012
CONSERVE_MEMORY_HINT_PGI 107005
RECLAIM_MEMORY_HINT_PGI 107006
ALWAYS_FAST_HINT_PGI 107020
ALWAYS_SOFT_HINT_PGI 107021
ALLOW_DRAW_OBJ_HINT_PGI 107022
ALLOW_DRAW_WIN_HINT_PGI 107023
ALLOW_DRAW_FRG_HINT_PGI 107024
ALLOW_DRAW_MEM_HINT_PGI 107025
CLIP_NEAR_HINT_PGI 107040
CLIP_FAR_HINT_PGI 107041
WIDE_LINE_HINT_PGI 107042
BACK_NORMALS_HINT_PGI 107043
Accepted by the <pname> parameter of GetIntegerv
GL_NATIVE_GRAPHICS_HANDLE_PGI 107010
Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.0 Specification (Rasterization)
None
Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
and the Frame Buffer)
None
Additions to Chapter 5 of the 1.0 Specification (Special Functions)
Function HintPGI behaves the same as Hint, except it accepts
only the hints described below (and hints from the PGI_vertex_hints
extension). HintPGI also has a slightly different prototype
than Hint:
void HintPGI ( GLenum target, GLint mode )
HintPGI calls are sent to the server as Hint, so this function
does not require additional server protocol.
Functions Hint and HintPGI accept the following targets and modes:
[All hints are subject to Push/Pop with the HINT_BIT attributes,
except for these hints: PREFER_DOUBLEBUFFER_HINT_PGI,
NATIVE_GRAPHICS_BEGIN_HINT_PGI, NATIVE_GRAPHICS_END_HINT_PGI,
RECLAIM_MEMORY_HINT_PGI.]
<target> = PREFER_DOUBLEBUFFER_HINT_PGI
This is a client-only mode. In some cases the PGI client may
change the singlebuffer/doublebuffer attributes of some GLX
visuals. If <mode> is TRUE, the client will tend to choose
doublebuffer in these cases; if <mode> is FALSE, the client
will tend to choose singlebuffer attributes.
<target> = STRICT_DEPTHFUNC_HINT_PGI
This hint indicates whether the application is willing to accept
non-conformant depth functions. When <mode> is TRUE or NICEST,
GL uses strictly conformant depth functions. When <mode> is
FALSE, FASTEST, or DONT_CARE, GL may use an improper depth
function.
<target> = STRICT_LIGHTING_HINT_PGI
This hint indicates whether the application is willing to accept
non-conformant lighting operations. When <mode> is TRUE or NICEST,
GL uses strictly conformant lighting operations. When <mode> is
FALSE, FASTEST, or DONT_CARE, GL may use non-conformant lighting.
<target> = STRICT_SCISSOR_HINT_PGI
This hint indicates whether the application is willing to accept
non-conformant scissoring operations. When <mode> is TRUE or NICEST,
GL uses strictly conformant scissoring. When <mode> is FALSE,
FASTEST, or DONT_CARE, GL may use non-conformant scissoring.
<target> = FULL_STIPPLE_HINT_PGI
This hint indicates whether the application is willing to accept
non-conformant polygon stippling. When <mode> is TRUE or NICEST,
GL uses strictly conformant polygon stippling. When <mode> is FALSE,
FASTEST, or DONT_CARE, GL may use only a subset of the polygon
stipple pattern.
<target> = NATIVE_GRAPHICS_BEGIN_HINT_PGI
This hint indicates that the application is about to perform
rendering through the native API, outside the scope of GL. If
<mode> is one of the parameters POINT, LINE, or FILL, then GL
prepares the native API for rendering of that kind of primitive.
If <mode> is TRUE, NICEST, or DONT_CARE, GL prepares the native
API for rendering of any primitive. If <mode> is FASTEST, GL does
minimal preparation of the native API, and the API may not be in a
suitable state for any rendering. If <mode> is FALSE, GL does nothing.
<target> = NATIVE_GRAPHICS_END_HINT_PGI
This hint indicates that the application has completed native-API
rendering outside the scope of GL, and that the application will not
use native-API rendering until the next NATIVE_GRAPHICS_BEGIN_HINT_PGI
hint. When <mode> is NICEST, GL assumes that the entire native-API
state may be corrupted, and completely resets its state. When <mode>
is TRUE, DONT_CARE, or FASTEST, GL performs minimal synchronization
of the native-API state. When <mode> is FALSE, GL does not adjust
the native-API state.
<target> = CONSERVE_MEMORY_HINT_PGI
The hint indicates that the application should attempt to conserve
memory, perhaps at the cost of performance. The <mode> parameter
indicates the level of conservation, from least conservation to
most conservation: FALSE, FASTEST, DONT_CARE, TRUE, or NICEST.
When <mode> is FALSE, GL does little or no memory conservation;
when <mode> is NICEST, GL does the most agressive memory conservation.
<target> = RECLAIM_MEMORY_HINT_PGI
The hint indicates that the application should reclaim unused
memory immediately. The <mode> parameter indicates how aggressively
GL reclaims memory: FALSE, FASTEST, DONT_CARE, TRUE, or NICEST.
When <mode> is FALSE, GL reclaims little or no memory;
when <mode> is NICEST, GL does the most agressive memory reclaimation.
<target> = ALLOW_DRAW_OBJ_HINT_PGI
<target> = ALLOW_DRAW_WIN_HINT_PGI
<target> = ALLOW_DRAW_SPN_HINT_PGI
<target> = ALLOW_DRAW_MEM_HINT_PGI
<target> = ALWAYS_FAST_HINT_PGI
<target> = ALWAYS_SOFT_HINT_PGI
The <mode> for each of these hints may be TRUE or FALSE only.
Each of the ALLOW_DRAW_xxx_HINT_PGI hints indicates if OpenGL
low-level rendering may occur at the object-coordinate level,
window-coordinate level, fragment level, or plain-memory level.
If <mode> for a given <target> is TRUE, rendering may occur at
that level; if the <mode> is FALSE, rendering will not occur at
that level (perhaps at the expense of performance or conformance).
The two ALWAYS_xxxx_HINT_PGI hints describe combinations of the
ALLOW_DRAW_xxx_HINT_PGI hints. If ALWAYS_FAST_HINT_PGI is TRUE,
then ALLOW_DRAW_OBJ_HINT_PGI is set TRUE, and the other ALLOW_DRAW_-
xxx_HINT_PGI hints are set to FALSE. If ALWAYS_FAST_HINT_PGI is
FALSE, then all ALLOW_DRAW_xxx_HINT_PGI hints are set TRUE.
If ALWAYS_SOFT_HINT_PGI is TRUE, then ALLOW_DRAW_OBJ_HINT_PGI
is set FALSE, ALLOW_DRAW_MEM_HINT_PGI is set TRUE, and
ALLOW_DRAW_WIN_HINT_PGI and ALLOW_DRAW_SPN_HINT_PGI are set to
TRUE or FALSE in an implementation-dependent manner.
<target> = CLIP_NEAR_HINT_PGI
<target> = CLIP_FAR_HINT_PGI
These hints indicate that the application does not require
hither/yon clipping when the depth test is disabled. (The hint
has no effect when depth testing is enabled.) If <mode> is FALSE,
DONT_CARE, or FASTEST, GL may inhibit hither/yon clipping in some
situations. If <mode> is NICEST, or TRUE, GL performs ordinary
hither/yon clipping. If hither or yon clipping is disabled, and
if fragment depth values fall outside the range [0.0-1.0], then
rendering behavior is implementation-dependent.
<target> = LINE_WIDE_HINT_PGI
Indicates the rendering quality and speed of lines whose widths are
not equal to 1.0. Allowed values are GL_FASTEST, GL_NICEST, and
GL_DONT_CARE.
<target> = BACK_NORMALS_HINT
Indicates that normals of backfacing facets should be inverted
when lighting is enabled, even if LIGHT_MODEL_TWO_SIDE is disabled.
The hint has no effect when lighting is disabled, and when
LIGHT_MODEL_TWO_SIDE is enabled. If <mode> is FALSE, DONT_CARE,
or NICEST, GL inverts normals only when LIGHT_MODEL_TWO_SIDE is
enabled. If <mode> is FASTEST or TRUE, GL inverts the normals
of backfacing facets whenever lighting is enabled.
Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
None
Additions to the GLX Specification
None
GLX Protocol
None
Interactions with PGI_vertex_hints
If PGI_vertex_hints is available, then hints from that extension
may be used with the HintPGI function.
Errors
INVALID_ENUM is generated if <target> or <mode> for Hint or HintPGI
is not one of the GLenums discussed above.
New State
Initial
Get Value Get Command Type Value Attrib
--------- ----------- ---- ------- ------
STRICT_DEPTHFUNC_HINT_PGI GetIntegerv Z TRUE hint
STRICT_LIGHTING_HINT_PGI GetIntegerv Z TRUE hint
STRICT_SCISSOR_HINT_PGI GetIntegerv Z TRUE hint
FULL_STIPPLE_HINT_PGI GetIntegerv Z TRUE hint
CONSERVE_MEMORY_HINT_PGI GetIntegerv Z FALSE hint
ALWAYS_FAST_HINT_PGI GetIntegerv Z FALSE hint
ALWAYS_SOFT_HINT_PGI GetIntegerv Z FALSE hint
ALLOW_DRAW_OBJ_HINT_PGI GetIntegerv Z TRUE hint
ALLOW_DRAW_WIN_HINT_PGI GetIntegerv Z TRUE hint
ALLOW_DRAW_SPN_HINT_PGI GetIntegerv Z TRUE hint
ALLOW_DRAW_MEM_HINT_PGI GetIntegerv Z TRUE hint
WIDE_LINE_HINT_PGI GetIntegerv Z DONT_CARE hint
CLIP_NEAR_HINT_PGI GetIntegerv Z TRUE hint
CLIP_FAR_HINT_PGI GetIntegerv Z TRUE hint
BACK_NORMALS_HINT_PGI GetIntegerv Z FALSE hint
New Implementation Dependent State
Initial
Get Value Get Command Type Value Attrib
--------- ----------- ---- ------- ------
PREFER_DOUBLEBUFFER_HINT_PGI GetIntegerv Z +++ client
NATIVE_GRAPHICS_HANDLE_PGI GetIntegerv Z *** client
+++ Implementation-dependent. (TRUE preferred.)
*** 0 if direct rendering to native API is not available;
otherwise, this is the handle for direct rendering to native API