1Name 2 3 PGI_misc_hints 4 5Name Strings 6 7 GL_PGI_misc_hints 8 9Version 10 11 $Date: 1996/04/22 23:24:16 $ $Revision: 1.1 $ 12 13Number 14 15 77 16 17Dependencies 18 19 None 20 21Overview 22 23 The extension allows the app to give various hints regarding 24 desired level of conformance, performance, features, etc. 25 26New Procedures and Functions 27 28 HintPGI 29 30New Tokens 31 32 Accepted by the <target> parameters of Hint and HintPGI: 33 34 PREFER_DOUBLEBUFFER_HINT_PGI 107000 35 STRICT_DEPTHFUNC_HINT_PGI 107030 36 STRICT_LIGHTING_HINT_PGI 107031 37 STRICT_SCISSOR_HINT_PGI 107032 38 FULL_STIPPLE_HINT_PGI 107033 39 NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 40 NATIVE_GRAPHICS_END_HINT_PGI 107012 41 CONSERVE_MEMORY_HINT_PGI 107005 42 RECLAIM_MEMORY_HINT_PGI 107006 43 ALWAYS_FAST_HINT_PGI 107020 44 ALWAYS_SOFT_HINT_PGI 107021 45 ALLOW_DRAW_OBJ_HINT_PGI 107022 46 ALLOW_DRAW_WIN_HINT_PGI 107023 47 ALLOW_DRAW_FRG_HINT_PGI 107024 48 ALLOW_DRAW_MEM_HINT_PGI 107025 49 CLIP_NEAR_HINT_PGI 107040 50 CLIP_FAR_HINT_PGI 107041 51 WIDE_LINE_HINT_PGI 107042 52 BACK_NORMALS_HINT_PGI 107043 53 54 Accepted by the <pname> parameter of GetIntegerv 55 56 GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 57 58Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) 59 60 None 61 62Additions to Chapter 3 of the 1.0 Specification (Rasterization) 63 64 None 65 66Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 67and the Frame Buffer) 68 69 None 70 71Additions to Chapter 5 of the 1.0 Specification (Special Functions) 72 73 Function HintPGI behaves the same as Hint, except it accepts 74 only the hints described below (and hints from the PGI_vertex_hints 75 extension). HintPGI also has a slightly different prototype 76 than Hint: 77 78 void HintPGI ( GLenum target, GLint mode ) 79 80 HintPGI calls are sent to the server as Hint, so this function 81 does not require additional server protocol. 82 83 Functions Hint and HintPGI accept the following targets and modes: 84 85 [All hints are subject to Push/Pop with the HINT_BIT attributes, 86 except for these hints: PREFER_DOUBLEBUFFER_HINT_PGI, 87 NATIVE_GRAPHICS_BEGIN_HINT_PGI, NATIVE_GRAPHICS_END_HINT_PGI, 88 RECLAIM_MEMORY_HINT_PGI.] 89 90 <target> = PREFER_DOUBLEBUFFER_HINT_PGI 91 92 This is a client-only mode. In some cases the PGI client may 93 change the singlebuffer/doublebuffer attributes of some GLX 94 visuals. If <mode> is TRUE, the client will tend to choose 95 doublebuffer in these cases; if <mode> is FALSE, the client 96 will tend to choose singlebuffer attributes. 97 98 <target> = STRICT_DEPTHFUNC_HINT_PGI 99 100 This hint indicates whether the application is willing to accept 101 non-conformant depth functions. When <mode> is TRUE or NICEST, 102 GL uses strictly conformant depth functions. When <mode> is 103 FALSE, FASTEST, or DONT_CARE, GL may use an improper depth 104 function. 105 106 <target> = STRICT_LIGHTING_HINT_PGI 107 108 This hint indicates whether the application is willing to accept 109 non-conformant lighting operations. When <mode> is TRUE or NICEST, 110 GL uses strictly conformant lighting operations. When <mode> is 111 FALSE, FASTEST, or DONT_CARE, GL may use non-conformant lighting. 112 113 <target> = STRICT_SCISSOR_HINT_PGI 114 115 This hint indicates whether the application is willing to accept 116 non-conformant scissoring operations. When <mode> is TRUE or NICEST, 117 GL uses strictly conformant scissoring. When <mode> is FALSE, 118 FASTEST, or DONT_CARE, GL may use non-conformant scissoring. 119 120 <target> = FULL_STIPPLE_HINT_PGI 121 122 This hint indicates whether the application is willing to accept 123 non-conformant polygon stippling. When <mode> is TRUE or NICEST, 124 GL uses strictly conformant polygon stippling. When <mode> is FALSE, 125 FASTEST, or DONT_CARE, GL may use only a subset of the polygon 126 stipple pattern. 127 128 <target> = NATIVE_GRAPHICS_BEGIN_HINT_PGI 129 130 This hint indicates that the application is about to perform 131 rendering through the native API, outside the scope of GL. If 132 <mode> is one of the parameters POINT, LINE, or FILL, then GL 133 prepares the native API for rendering of that kind of primitive. 134 If <mode> is TRUE, NICEST, or DONT_CARE, GL prepares the native 135 API for rendering of any primitive. If <mode> is FASTEST, GL does 136 minimal preparation of the native API, and the API may not be in a 137 suitable state for any rendering. If <mode> is FALSE, GL does nothing. 138 139 <target> = NATIVE_GRAPHICS_END_HINT_PGI 140 141 This hint indicates that the application has completed native-API 142 rendering outside the scope of GL, and that the application will not 143 use native-API rendering until the next NATIVE_GRAPHICS_BEGIN_HINT_PGI 144 hint. When <mode> is NICEST, GL assumes that the entire native-API 145 state may be corrupted, and completely resets its state. When <mode> 146 is TRUE, DONT_CARE, or FASTEST, GL performs minimal synchronization 147 of the native-API state. When <mode> is FALSE, GL does not adjust 148 the native-API state. 149 150 <target> = CONSERVE_MEMORY_HINT_PGI 151 152 The hint indicates that the application should attempt to conserve 153 memory, perhaps at the cost of performance. The <mode> parameter 154 indicates the level of conservation, from least conservation to 155 most conservation: FALSE, FASTEST, DONT_CARE, TRUE, or NICEST. 156 When <mode> is FALSE, GL does little or no memory conservation; 157 when <mode> is NICEST, GL does the most agressive memory conservation. 158 159 <target> = RECLAIM_MEMORY_HINT_PGI 160 161 The hint indicates that the application should reclaim unused 162 memory immediately. The <mode> parameter indicates how aggressively 163 GL reclaims memory: FALSE, FASTEST, DONT_CARE, TRUE, or NICEST. 164 When <mode> is FALSE, GL reclaims little or no memory; 165 when <mode> is NICEST, GL does the most agressive memory reclaimation. 166 167 <target> = ALLOW_DRAW_OBJ_HINT_PGI 168 <target> = ALLOW_DRAW_WIN_HINT_PGI 169 <target> = ALLOW_DRAW_SPN_HINT_PGI 170 <target> = ALLOW_DRAW_MEM_HINT_PGI 171 <target> = ALWAYS_FAST_HINT_PGI 172 <target> = ALWAYS_SOFT_HINT_PGI 173 174 The <mode> for each of these hints may be TRUE or FALSE only. 175 Each of the ALLOW_DRAW_xxx_HINT_PGI hints indicates if OpenGL 176 low-level rendering may occur at the object-coordinate level, 177 window-coordinate level, fragment level, or plain-memory level. 178 If <mode> for a given <target> is TRUE, rendering may occur at 179 that level; if the <mode> is FALSE, rendering will not occur at 180 that level (perhaps at the expense of performance or conformance). 181 182 The two ALWAYS_xxxx_HINT_PGI hints describe combinations of the 183 ALLOW_DRAW_xxx_HINT_PGI hints. If ALWAYS_FAST_HINT_PGI is TRUE, 184 then ALLOW_DRAW_OBJ_HINT_PGI is set TRUE, and the other ALLOW_DRAW_- 185 xxx_HINT_PGI hints are set to FALSE. If ALWAYS_FAST_HINT_PGI is 186 FALSE, then all ALLOW_DRAW_xxx_HINT_PGI hints are set TRUE. 187 If ALWAYS_SOFT_HINT_PGI is TRUE, then ALLOW_DRAW_OBJ_HINT_PGI 188 is set FALSE, ALLOW_DRAW_MEM_HINT_PGI is set TRUE, and 189 ALLOW_DRAW_WIN_HINT_PGI and ALLOW_DRAW_SPN_HINT_PGI are set to 190 TRUE or FALSE in an implementation-dependent manner. 191 192 <target> = CLIP_NEAR_HINT_PGI 193 <target> = CLIP_FAR_HINT_PGI 194 195 These hints indicate that the application does not require 196 hither/yon clipping when the depth test is disabled. (The hint 197 has no effect when depth testing is enabled.) If <mode> is FALSE, 198 DONT_CARE, or FASTEST, GL may inhibit hither/yon clipping in some 199 situations. If <mode> is NICEST, or TRUE, GL performs ordinary 200 hither/yon clipping. If hither or yon clipping is disabled, and 201 if fragment depth values fall outside the range [0.0-1.0], then 202 rendering behavior is implementation-dependent. 203 204 <target> = LINE_WIDE_HINT_PGI 205 206 Indicates the rendering quality and speed of lines whose widths are 207 not equal to 1.0. Allowed values are GL_FASTEST, GL_NICEST, and 208 GL_DONT_CARE. 209 210 <target> = BACK_NORMALS_HINT 211 212 Indicates that normals of backfacing facets should be inverted 213 when lighting is enabled, even if LIGHT_MODEL_TWO_SIDE is disabled. 214 The hint has no effect when lighting is disabled, and when 215 LIGHT_MODEL_TWO_SIDE is enabled. If <mode> is FALSE, DONT_CARE, 216 or NICEST, GL inverts normals only when LIGHT_MODEL_TWO_SIDE is 217 enabled. If <mode> is FASTEST or TRUE, GL inverts the normals 218 of backfacing facets whenever lighting is enabled. 219 220Additions to Chapter 6 of the 1.0 Specification (State and State Requests) 221 222 None 223 224Additions to the GLX Specification 225 226 None 227 228GLX Protocol 229 230 None 231 232Interactions with PGI_vertex_hints 233 234 If PGI_vertex_hints is available, then hints from that extension 235 may be used with the HintPGI function. 236 237Errors 238 239 INVALID_ENUM is generated if <target> or <mode> for Hint or HintPGI 240 is not one of the GLenums discussed above. 241 242New State 243 Initial 244 Get Value Get Command Type Value Attrib 245 --------- ----------- ---- ------- ------ 246 247 STRICT_DEPTHFUNC_HINT_PGI GetIntegerv Z TRUE hint 248 249 STRICT_LIGHTING_HINT_PGI GetIntegerv Z TRUE hint 250 251 STRICT_SCISSOR_HINT_PGI GetIntegerv Z TRUE hint 252 253 FULL_STIPPLE_HINT_PGI GetIntegerv Z TRUE hint 254 255 CONSERVE_MEMORY_HINT_PGI GetIntegerv Z FALSE hint 256 257 ALWAYS_FAST_HINT_PGI GetIntegerv Z FALSE hint 258 259 ALWAYS_SOFT_HINT_PGI GetIntegerv Z FALSE hint 260 261 ALLOW_DRAW_OBJ_HINT_PGI GetIntegerv Z TRUE hint 262 263 ALLOW_DRAW_WIN_HINT_PGI GetIntegerv Z TRUE hint 264 265 ALLOW_DRAW_SPN_HINT_PGI GetIntegerv Z TRUE hint 266 267 ALLOW_DRAW_MEM_HINT_PGI GetIntegerv Z TRUE hint 268 269 WIDE_LINE_HINT_PGI GetIntegerv Z DONT_CARE hint 270 271 CLIP_NEAR_HINT_PGI GetIntegerv Z TRUE hint 272 273 CLIP_FAR_HINT_PGI GetIntegerv Z TRUE hint 274 275 BACK_NORMALS_HINT_PGI GetIntegerv Z FALSE hint 276 277 278New Implementation Dependent State 279 Initial 280 Get Value Get Command Type Value Attrib 281 --------- ----------- ---- ------- ------ 282 283 PREFER_DOUBLEBUFFER_HINT_PGI GetIntegerv Z +++ client 284 285 NATIVE_GRAPHICS_HANDLE_PGI GetIntegerv Z *** client 286 287 +++ Implementation-dependent. (TRUE preferred.) 288 289 *** 0 if direct rendering to native API is not available; 290 otherwise, this is the handle for direct rendering to native API 291