15bd8deadSopenharmony_ciXXX - incomplete (needs number, errors, glx protocol, enumerant values, state) 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ciName 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ci SGIX_instrument_error 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ciName Strings 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ci GL_SGIX_instrument_error 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciVersion 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci $Date: 1998/10/20 23:55:52 $ $Revision: 1.1 $ 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciNumber 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci XXX 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciDependencies 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci SGIX_instruments is required 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciOverview 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci This extension provides a mechanism by which implementations can 265bd8deadSopenharmony_ci return errors resulting from instrument reads. 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ciIssues 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci * We require that a failed instrument would have returned a 315bd8deadSopenharmony_ci packet of at least length four. Is this acceptable? 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci A: Four would give us an instrument name, a length field, a 345bd8deadSopenharmony_ci single integer payload, and a marker. This seems 355bd8deadSopenharmony_ci reasonable -- anything shorter would be pretty useless. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci * Is it reasonable to require the failure packet that is 385bd8deadSopenharmony_ci returned be the same length as the packet that would have been 395bd8deadSopenharmony_ci returned by a successful read, or should we just say that it 405bd8deadSopenharmony_ci may have padding and won't be longer? 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ci * Returning failure due to a context switch seems to break 435bd8deadSopenharmony_ci GL's invariance requirement. 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci A: This is unfortunate but we can't think of any way to make 465bd8deadSopenharmony_ci some instruments work across context switches. We either 475bd8deadSopenharmony_ci return the error in GL or we silently fail or we have some 485bd8deadSopenharmony_ci non-GL way to indicate failure. Using GL seems the most 495bd8deadSopenharmony_ci useful. 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci * If an instrument defined in another extension may return 525bd8deadSopenharmony_ci failure, do we have to mention that in the new extension? Or 535bd8deadSopenharmony_ci can failure just be returned in place of any instrument packet 545bd8deadSopenharmony_ci at any time? 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ciNew Tokens 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ci Returned as the instrument name in an instrument buffer: 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci INSTRUMENT_FAILED_SGIX XXXX 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation) 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci None 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization) 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci None 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 715bd8deadSopenharmony_ciand the Frame Buffer) 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci None 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions) 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci Add to the end of section 5.X entitled Instruments: 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci If GL detects that an issued instrument read cannot return a 805bd8deadSopenharmony_ci correct value, GL will return a failure packet in place of the 815bd8deadSopenharmony_ci instrument packet. The failure packet is intended to be used in 825bd8deadSopenharmony_ci cases where there was no error on the part of the application but 835bd8deadSopenharmony_ci GL could not satisfy the request for some reason. 845bd8deadSopenharmony_ci 855bd8deadSopenharmony_ci A failure packet contains the following information (starting and 865bd8deadSopenharmony_ci the first int): 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ci INSTRUMENT_FAILED_SGIX 895bd8deadSopenharmony_ci length in words of the packet 905bd8deadSopenharmony_ci enumerant name of failed instrument 915bd8deadSopenharmony_ci optional pad word 0 925bd8deadSopenharmony_ci optional pad word 1 935bd8deadSopenharmony_ci . 945bd8deadSopenharmony_ci . 955bd8deadSopenharmony_ci . 965bd8deadSopenharmony_ci optional pad word n 975bd8deadSopenharmony_ci marker value for read 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci The pad words are inserted such that the packet is the same length 1005bd8deadSopenharmony_ci as the instrument packet that a successful read would have 1015bd8deadSopenharmony_ci generated. If the packet length for the given instrument is not a 1025bd8deadSopenharmony_ci constant, the failure packet cannot be longer than the maximum 1035bd8deadSopenharmony_ci length of a successful read. The last int of the packet contains 1045bd8deadSopenharmony_ci the user-specified marker value. This mechanism requires that the 1055bd8deadSopenharmony_ci maximum original length of the packet was not less than 4. 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests) 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci None 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ciAdditions to the GLX Specification 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci None 1145bd8deadSopenharmony_ci 1155bd8deadSopenharmony_ciGLX Protocol 1165bd8deadSopenharmony_ci 1175bd8deadSopenharmony_ci None 1185bd8deadSopenharmony_ci 1195bd8deadSopenharmony_ciErrors 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ci None 122