1Name 2 3 QCOM_frame_extrapolation 4 5Name Strings 6 7 GL_QCOM_frame_extrapolation 8 9Contributors 10 11 Sam Holmes 12 Jonathan Wicks 13 14Contacts 15 16 Jeff Leger <jleger@qti.qualcomm.com> 17 18Status 19 20 Complete 21 22Version 23 24 Last Modified Date: November 30, 2020 25 Revision: 1.0 26 27Number 28 29 OpenGL ES Extension #333 30 31Dependencies 32 33 Requires OpenGL ES 2.0 34 35 This extension is written based on the wording of the OpenGL ES 3.2 36 Specification. 37 38Overview 39 40 Frame extrapolation is the process of producing a new, future frame 41 based on the contents of two previously rendered frames. It may be 42 used to produce high frame rate display updates without incurring the 43 full cost of traditional rendering at the higher framerate. 44 45 This extension adds support for frame extrapolation in OpenGL ES by 46 adding a function which takes three textures. The first two are used 47 in sequence as the source frames, from which the extrapolated frame 48 is derived. The extrapolated frame is stored in the third texture. 49 50New Procedures and Functions 51 52 void ExtrapolateTex2DQCOM(uint src1, 53 uint src2, 54 uint output, 55 float scaleFactor); 56 57Additions to Chapter 8 of the OpenGL ES 3.2 Specification 58 59 8.24 Frame Extrapolation 60 61 The command 62 63 void ExtrapolateTex2DQCOM(uint src1, uint src2, 64 uint output, float scaleFactor); 65 66 is used to produce an extrapolated frame based on the contents of 67 two previous frames. <src1> and <src2> specify the two previously 68 rendered frames, in order, which will be used as the basis of the 69 extrapolation. The three textures provided must have the same 70 dimensions and format. While <src1>, <src2> and <output> can 71 have multiple levels the implementation only reads from or writes 72 to the base level. 73 74 The texture contents provided in the two source textures represent 75 frame contents at two points in time. <scaleFactor> defines the amount 76 of time into the future the extrapolation is to target, based on the 77 delta in time between the two source textures. 78 79 For example, a value of 1.0 for <scaleFactor> will produce an 80 extrapolated frame that is as far into the future beyond 'src2' 81 as the time delta between 'src1' and 'src2'. A value of 0.5 82 for 'scaleFactor' targets a time that is a half step in the 83 future (compared to the full step delta between the two source frames). 84 85 Specifying an accurate scale factor is important for producing smooth 86 animation. An application that is displaying to the user alternating 87 rendered and extrapolated frames would use a scale factor of 0.5 so 88 that the extrapolated frame has contents which fall halfways between the 89 last rendered frame and the next rendered frame to come in the future. 90 Negative <scaleFactor> values produce frames targeting times before 91 that represented by the contents of <src2>. 92 93 Table 8.28: Compatible formats for <src1>, <src2> and <output> 94 95 Internal Format 96 --------------- 97 RGBA8 98 RGB8 99 R8 100 RGBA16F 101 RGB16F 102 RGBA32F 103 RGB32F 104 105Errors 106 107 INVALID_VALUE is generated if scaleFactor is equal to 0. 108 109 INVALID_OPERATION is generated if the texture formats of src1, src2 and 110 output are not identical. 111 112 INVALID_OPERATION is generated if the texture dimensions of src1, src2 113 and output are not identical. 114 115 INVALID_OPERATION is generated if the texture formats of src1, src2 and 116 output are not one of the formats listed in table 8.28. 117 118Issues 119 120 (1) Why is the extrapolation quality not defined? 121 122 Resolved: The intention of this specification is to extrapolate a new 123 texture based on the two input textures. Implementations should aim to 124 produce the highest quality extrapolation but since the results are 125 extrapolations there are no prescribed steps for how the textures must 126 be generated. 127 128Revision History 129 130 Rev. Date Author Changes 131 ---- ---------- -------- ----------------------------------------- 132 0.1 11/21/2019 Sam Initial draft 133 1.0 11/30/2020 Tate Official extension number 134