1XXX - incomplete 2 3Name 4 5 SGIX_bali_r_instruments 6 7Name Strings 8 9 GL_SGIX_bali_r_instruments 10 11Version 12 13 $Date: 1998/06/17 19:59:07 $ $Revision: 1.4 $ 14 15Number 16 17 XXX 18 19Dependencies 20 21 SGIX_instruments is required 22 SGIX_multisample affects the definition of this extension. 23 24Overview 25 26 This extension defines behavior for instruments which are 27 maintained on the Bali R chips. The behavior is different from 28 standard instruments behavior since each system may contain more 29 than one R chip. 30 31 Additionally, this extension defines two such instruments: one to 32 count the number of fragments generated and a second to count the 33 number of fragments which passed the depth test. 34 35Issues 36 37 * Should fragments generated by internal pixel operations be 38 counted? From a GL point of view they don't exist, but from 39 an R usage point of view they do. 40 41 * Should we expose the texture cache wait counter? What could 42 the user do about a bottleneck caused by texture cache misses? 43 44 * Currently we count only fragments which passed the depth test 45 and do not count fragments which were drawn when the depth 46 test was disabled. Is this the correct behavior? 47 48 * Are there any other R instruments we should add? 49 50New Procedures and Functions 51 52 None 53 54New Tokens 55 56 Accepted by the <cap> parameter of Enable, Disable and IsEnabled: 57 58 BALI_FRAGMENTS_GENERATED_INSTRUMENT 0x6090 59 BALI_DEPTH_PASS_INSTRUMENT 0x6091 60 61 Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, 62 GetFloatv, and GetDoublev: 63 64 BALI_R_CHIP_COUNT 0x6092 65 66Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) 67 68 None 69 70Additions to Chapter 3 of the 1.0 Specification (Rasterization) 71 72 None 73 74Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 75and the Frame Buffer) 76 77 Add to section 4.1 after the introductory paragraph and prior to 78 section 4.1.1 (Pixel Ownership Test): 79 80 If BALI_FRAGMENTS_GENERATED_INSTRUMENT is enabled and the 81 instruments have been started via a call to StartInstrumentsSGIX, 82 a counter of the number of fragments generated is maintained. 83 This counter is incremented by one for each fragment. The GL 84 implementation is not guaranteed to generate a fragment for every 85 screen pixel which the primitive touched as long as this 86 optimization will not affect the final image. For example, if a 87 region of the primitive only contains fragments which the GL has 88 determined will fail the Z test, the fragments may not be 89 generated. Therefore, the count of fragments generated may be 90 smaller than but may not be greater than the screen space area of 91 the primitive as determined by the number of pixels touched by the 92 primitive. 93 94 Added to subsection 4.1.5 (Depth buffer test) at the end of the 95 paragraph which begins "If the depth buffer test fails...": 96 97 If BALI_DEPTH_PASS_INSTRUMENT is enabled and instruments have been 98 started via a call to StartInstrumentSGIX, a counter of the number 99 of fragments which have passed the depth test is maintained. This 100 counter is incremented by one for each fragment which passes the 101 depth test. If MULTISAMPLE_SGIS is enabled, the counter is 102 incremented by one for each fragment containing at least one 103 sample for which the depth test passed. 104 105Additions to Chapter 5 of the 1.0 Specification (Special Functions) 106 107 Add to the end of section 5.X entitled Instruments: 108 109 For instruments which are computed on the Bali R chip, one 110 response will be returned to the buffer per R chip. The number of 111 R chips is queried using the enum BALI_R_CHIP_COUNT (see Chapter 112 6). From the point of view of this extension, the R chips are 113 considered to be completely interchangable and no mechanism for 114 identifying which response came from which R chip is provided. 115 Generally, the application should combine the results from all the 116 R chips together (for example, by adding them) before using the 117 information. 118 119 Each call to StopInstrumentsSGIX or ReadInstrumentsSGIX will 120 generate one response per R chip for each enabled R chip 121 instrument. This count will be reflected in the return values of 122 glGetInstrumentSGIX. The values from each R chip do not 123 necessarily return at the same time, so the glGetInstrumentsSGIX 124 call may return a value from 0 to BALI_R_CHIP_COUNT times the sum 125 in words of the size of the instrument. However, the values from 126 each R are returned atomically from the point of view of 127 glGetInstrumentsSGIX so the return value must be a multiple of the 128 size in words of the instrument. 129 130 If more than one R instrument is enabled and ReadInstrumentsSGIX 131 or StopInstrumentsSGIX is called, no guarantees are made with 132 regard to the ordering and interleaving of the reply packets from 133 the R chips. The instrument response packets from a single R chip 134 may or may not be placed consecutively in the buffer. Conversely, 135 the responses from different R chips for a single instrument may 136 or may not be placed consecutively in the buffer. Also, no 137 assumptions may be made about which R chip generated which 138 response. 139 140 Each R chip response from BALI_FRAGMENTS_GENERATED_INSTRUMENT_SGIX 141 and BALI_DEPTH_PASS_INSTRUMENT_SGIX instruments uses 4 words of 142 the buffer. The first word (index 0) will be the enum name of the 143 instrument (BALI_FRAGMENTS_GENERATED_INSTRUMENT_SGIX or 144 BALI_DEPTH_PASS_INSTRUMENT_SGIX). The second word (index 1) of 145 the instrument is the size in words of all the data returned by 146 the instrument, which is four for the instruments defined in this 147 extension. The third word (index 2) will be the instrument 148 value. Computation of the instrument values is described in 149 Chapter 3 (Rasterization). The fourth word (index 3) will contain 150 the marker passed to StopInstrumentsSGIX or ReadInstrumentsSGIX. 151 152Additions to Chapter 6 of the 1.0 Specification (State and State Requests) 153 154 XXX 155 156Additions to the GLX Specification 157 158 XXX 159 160Errors 161 162 None 163 164New State 165 166 XXX 167 168New Implementation Dependent State 169 170 Get Value Get Command Type Minimum Value 171 --------- ----------- ---- ------------- 172 BALI_R_CHIP_COUNT GetIntegerv Z+ 1 173