Name QCOM_frame_extrapolation Name Strings GL_QCOM_frame_extrapolation Contributors Sam Holmes Jonathan Wicks Contacts Jeff Leger Status Complete Version Last Modified Date: November 30, 2020 Revision: 1.0 Number OpenGL ES Extension #333 Dependencies Requires OpenGL ES 2.0 This extension is written based on the wording of the OpenGL ES 3.2 Specification. Overview Frame extrapolation is the process of producing a new, future frame based on the contents of two previously rendered frames. It may be used to produce high frame rate display updates without incurring the full cost of traditional rendering at the higher framerate. This extension adds support for frame extrapolation in OpenGL ES by adding a function which takes three textures. The first two are used in sequence as the source frames, from which the extrapolated frame is derived. The extrapolated frame is stored in the third texture. New Procedures and Functions void ExtrapolateTex2DQCOM(uint src1, uint src2, uint output, float scaleFactor); Additions to Chapter 8 of the OpenGL ES 3.2 Specification 8.24 Frame Extrapolation The command void ExtrapolateTex2DQCOM(uint src1, uint src2, uint output, float scaleFactor); is used to produce an extrapolated frame based on the contents of two previous frames. and specify the two previously rendered frames, in order, which will be used as the basis of the extrapolation. The three textures provided must have the same dimensions and format. While , and can have multiple levels the implementation only reads from or writes to the base level. The texture contents provided in the two source textures represent frame contents at two points in time. defines the amount of time into the future the extrapolation is to target, based on the delta in time between the two source textures. For example, a value of 1.0 for will produce an extrapolated frame that is as far into the future beyond 'src2' as the time delta between 'src1' and 'src2'. A value of 0.5 for 'scaleFactor' targets a time that is a half step in the future (compared to the full step delta between the two source frames). Specifying an accurate scale factor is important for producing smooth animation. An application that is displaying to the user alternating rendered and extrapolated frames would use a scale factor of 0.5 so that the extrapolated frame has contents which fall halfways between the last rendered frame and the next rendered frame to come in the future. Negative values produce frames targeting times before that represented by the contents of . Table 8.28: Compatible formats for , and Internal Format --------------- RGBA8 RGB8 R8 RGBA16F RGB16F RGBA32F RGB32F Errors INVALID_VALUE is generated if scaleFactor is equal to 0. INVALID_OPERATION is generated if the texture formats of src1, src2 and output are not identical. INVALID_OPERATION is generated if the texture dimensions of src1, src2 and output are not identical. INVALID_OPERATION is generated if the texture formats of src1, src2 and output are not one of the formats listed in table 8.28. Issues (1) Why is the extrapolation quality not defined? Resolved: The intention of this specification is to extrapolate a new texture based on the two input textures. Implementations should aim to produce the highest quality extrapolation but since the results are extrapolations there are no prescribed steps for how the textures must be generated. Revision History Rev. Date Author Changes ---- ---------- -------- ----------------------------------------- 0.1 11/21/2019 Sam Initial draft 1.0 11/30/2020 Tate Official extension number