1Name 2 3 IBM_static_data 4 5Name Strings 6 7 GL_IBM_static_data 8 9Version 10 11 $Date: 1999/12/28 01:40:35 $ $Revision: 1.2 $ 12 IBM Id: static_data.spec,v 1.1 1997/07/29 12:52:51 pbrown Exp 13 14Number 15 16 223 17 18Dependencies 19 20 None 21 22Overview 23 24 The OpenGL specification requires that data be bound at call time. The 25 IBM_static_data extension relaxes the bind-at-call semantics allowing 26 an implementation to dereference pointers some time after the 27 corresponding calls. 28 29 Because of the bind-at-call sematics of standard OpenGL, an 30 implementation is required to either copy or fully process data at the 31 time it is provided by the application. Copying data substantially 32 increases the demands on the memory subsystem; processing the data may 33 result in ineffective amortization of fixed costs. Neither copying nor 34 processing allows multiple rendering threads to operate on the original 35 data. 36 37Issues 38 39 * Indirect rendering is ignored; is there anything useful we can do? 40 41 * This specification has been designed to be generic, but at this time 42 only allows vertex array data to be noted as static. Should the 43 specification be extended to include data specified in one or more 44 of the following ways: 45 pixel data [glBitmap, glDrawPixels] 46 pixel maps [glPixelMap*] 47 vertex data [glVertex*v, glColor*v, glNormal*v, etc.] 48 evaluator maps [glMap*] 49 texture maps [glTexImage*, glTexSubImage*] 50 matrices [glLoadMatrix*, glMultMatrix*] 51 other attribute calls [glMaterial*v, glLight*v, etc.] 52 53New Procedures and Functions 54 55 FlushStaticDataIBM(GLenum target) 56 57New Tokens 58 59 Accepted by the <target> parameter of FlushStaticDataIBM: 60 61 ALL_STATIC_DATA_IBM 103060 62 63 Accepted by the <cap> parameter of EnableClientState, DisableClientState, 64 and IsEnabled, and the <target> parameter of FlushStaticDataIBM: 65 66 STATIC_VERTEX_ARRAY_IBM 103061 67 68Additions to Chapter 2 of the GL Specification (OpenGL Operation) 69 70 Additions to Section 2.8, Vertex Arrays 71 72 Typically, the vertex array data is dereferenced at the time of a call 73 to glArrayElement, glDrawArrays, or glDrawElements, after which it can 74 be changed by the caller. Calling EnableClientState with a target of 75 STATIC_VERTEX_ARRAY_IBM relaxes this requirement. Instead, only the 76 memory addresses of such data are bound at the time of the call. If 77 vertex array data are changed, freed, or reallocated while 78 STATIC_VERTEX_ARRAY_IBM is enabled, the results of any glArrayElement, 79 glDrawArrays, or glDrawElements calls using such an array are 80 undefined. In order to free, change or reallocate the vertex array 81 data specified while STATIC_VERTEX_ARRAY_IBM was enabled, either 82 glFinish or glFlushStaticDataIBM must be used. 83 84 The client state required to implement vertex arrays consist of six 85 boolean values representing vertex array enables, one boolean value 86 representing the static vertex array enable, ... 87 88Additions to Chapter 3 of the GL Specification (Rasterization) 89 90 None 91 92Additions to Chapter 4 of the GL Specification (Per-Fragment Operations 93and the Framebuffer) 94 95 None 96 97Additions to Chapter 5 of the GL Specification (Special Functions) 98 99 Additions to Section 5.5, Flush and Finish (added to the end of the section) 100 101 The command 102 103 void FlushStaticDataIBM( GLenum target ) ; 104 105 forces all references to data relative to target that were specified as 106 static to be resolved before this function returns. While this is 107 similar to Finish, only the references to the target static data are 108 guaranteed to be completed upon return from this function. This function 109 does not guarantee that any rendering involving the target data is 110 completed, only that the references to the data are completed. 111 112Additions to Chapter 6 of the GL Specification (State and State Requests) 113 114 None 115 116Additions to the GLX Specification 117 118 None 119 120GLX Protocol 121 122 None. 123 124Errors 125 126 None 127 128New State 129 130 Get Value Type Get Command Value Sec Attrib 131 ----------------------------- ---- ----------- ----- ---- ------- 132 STATIC_VERTEX_ARRAY_IBM B IsEnabled False 2.8 vertex-array 133 134New Implementation Dependent State 135 136 None 137