• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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