15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci GREMEDY_frame_terminator 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_GREMEDY_frame_terminator 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Yaki Tebeka 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciContact 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Yaki Tebeka, Graphic Remedy (yaki 'at' gremedy.com) 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciStatus 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci Implemented by gDEBugger (Version 3.2 or later) 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciVersion 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci Last Modified Date: September 20, 2007 245bd8deadSopenharmony_ci Author Revision: 1.0 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ciNumber 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci 345 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ciDependencies 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ci OpenGL 1.0 is required. 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ci The extension is written against the OpenGL 1.5 Specification. 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ciOverview 375bd8deadSopenharmony_ci 385bd8deadSopenharmony_ci This extension defines a mechanism that enables marking the end 395bd8deadSopenharmony_ci of render frames within the OpenGL stream. 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci When debugging or profiling an OpenGL application, the debuggers 425bd8deadSopenharmony_ci and profilers needs to know when a render frame is ended. This 435bd8deadSopenharmony_ci is important for frame per second measurements, statistical analysis, 445bd8deadSopenharmony_ci marking and clearing stream loggers logs, performance counters 455bd8deadSopenharmony_ci sampling and more. 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci When an application uses off screen buffers, the debugger / profiler 485bd8deadSopenharmony_ci cannot be guaranteed that the application will call a certain function at 495bd8deadSopenharmony_ci the end of each off-screen frame (e.g: SwapBuffers / glClear / etc). 505bd8deadSopenharmony_ci This extension enables the application to notify the debugger / profiler 515bd8deadSopenharmony_ci whenever a render frame is ended. 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ci This extension is mainly useful for debuggers and profilers. It is not 545bd8deadSopenharmony_ci expected that standard drivers would implement this extension. The main 555bd8deadSopenharmony_ci point of having this extension is to allow applications to have a clean 565bd8deadSopenharmony_ci way of accessing this functionality only when they are run under the 575bd8deadSopenharmony_ci control of a debugger / profiler, without having to recompile or change 585bd8deadSopenharmony_ci the application source code. 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ciIP Status 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ci No known IP claims 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ciIssues 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci (1) Should it be legal to call this inside Begin/End? 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci RESOLVED: no. 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci A render frame cannot end within a Begin/End block. 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ciNew Procedures and Functions 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci void FrameTerminatorGREMEDY(void); 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ciNew Types 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ci None 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ciNew Tokens 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci None 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.5 Specification 855bd8deadSopenharmony_ci(OpenGL Operation) 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ci None 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization) 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ci None 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment 945bd8deadSopenharmony_ciOperations and the Frame Buffer) 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci None 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 1.5 Specification 995bd8deadSopenharmony_ci(Special Functions) 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ci Add section 5.8 on page 212 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci 5.8 Frame Terminator 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci The command 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ci void FrameTerminatorGREMEDY(void); 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci can be used to insert a frame terminator marker into the command stream. 1105bd8deadSopenharmony_ci This frame terminator marker can be used by appropriate debugging tools / 1115bd8deadSopenharmony_ci profiling tools / profiling drivers for frame per second measurements, 1125bd8deadSopenharmony_ci statistical analysis, marking and clearing stream loggers logs, performance 1135bd8deadSopenharmony_ci counters sampling and more. This command has no influence on the rendered 1145bd8deadSopenharmony_ci image or the OpenGL state. 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci 1175bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 1.5 Specification (State and State 1185bd8deadSopenharmony_ciRequests) 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci None 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ciAdditions to Appendix A of the OpenGL 1.5 Specification (Invariance) 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci None 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ciAdditions to the AGL/EGL/GLX/WGL Specifications 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci None 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ciGLX Protocol 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci None 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ciDependencies on EXT_extension_name 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci None 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ciErrors 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci The error INVALID_OPERATION is generated if any of the commands 1415bd8deadSopenharmony_ci defined in this extension is executed between the execution of Begin 1425bd8deadSopenharmony_ci and the corresponding execution of End. 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ciNew State 1455bd8deadSopenharmony_ci 1465bd8deadSopenharmony_ci None 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ciNew Implementation Dependent State 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ci None 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ciSample Code 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci None 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ciRevision History 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci 1.0, 09/20/07 yt: - Initial revision 159