]> git.sesse.net Git - movit/blob - NEWS
Release Movit 1.6.0.
[movit] / NEWS
1 Movit 1.6.0, January 24th, 2018
2
3   - Support for effects that work as compute shaders. Compute shaders are
4     generally slower than fragment shaders for the same algorithm,
5     but allow some forms of communication between shader invocations
6     and have more flexible output, which can enable more efficient algorithms. 
7     See effect.h for more details. Note that the fastest rendering API on
8     EffectChain is now to a texture if possible, not to an FBO. This will
9     only matter if the last effect is a compute shader.
10     
11   - Movit now includes a compute shader implementation of DeinterlaceEffect,
12     which is automatically used instead of the fragment shader implementation
13     if your GPU and OpenGL driver supports it (in practice, this means on
14     all platforms except on macOS). The compute shader version is typically
15     20–80% faster than the fragment shader version, depending on your GPU
16     and other factors.
17
18     A compute shader implementation of ResampleEffect was written but
19     ultimately failed to be faster, and so is not included.
20
21   - Support for microbenchmarks of effects through the Google microbenchmarking
22     framework (optional). Currently, DeinterlaceEffect and ResampleEffect has
23     benchmarks; enable them by running the unit test with --benchmark (also try
24     --benchmark --help).
25
26   - Effects can now explicitly request _not_ to have mipmaps, which means they
27     can do so without needing to request bounce and fiddling with the sampler
28     state. Note that this is an API change for effects.
29
30   - Movit now requires C++11, both to build and to #include the header files.
31     Support for SDL1 has been dropped; unit tests and the demo program now need
32     SDL2.
33
34   - Various smaller bugfixes and optimizations.
35     
36
37 Movit 1.5.3, August 10th, 2017
38
39   - Various bugfixes.
40
41
42 Movit 1.5.2, July 5th, 2017
43
44   - The texture generation for ResampleEffect (when the size is changed)
45     now uses less CPU.
46
47   - Work around an NVIDIA driver threading bug by aggressively caching VAOs.
48
49
50 Movit 1.5.1, May 29th, 2017
51
52   - Allow YCbCrInput to change input format after finalize.
53
54   - Some minor YCbCrInput bugfixes.
55
56
57 Movit 1.5.0, March 21st, 2017
58
59   - Support interleaved Y'CbCr input (4:4:4 in a single texture).
60
61   - Support 10-bit and 12-bit Y'CbCr, both for input and output. For planar,
62     these are supported packed in 16-bit ints; for interleaved, 10:10:10:2 is
63     supported. (Efficient conversion to and from v210, ie. 10-bit 4:2:2,
64     is possible using compute shaders, but Movit does not include support
65     for them at the current point.) Note that this now means the num_levels
66     flag in YCbCrFormat actually matters, although 0 will be interpreted
67     as 256 (8-bit) for the benefit of older applications.
68
69   - Limited support for having multiple Y'CbCr outputs from a chain.
70
71   - Allow changing the Y'CbCr output coefficients runtime, ie., after finalize.
72
73   - Fix an issue where the last pass would have been rendered with the sRGB
74     flag set, which confused Qt applications running in certain NVIDIA
75     configurations.
76
77
78 Movit 1.4.0, November 5th, 2016
79
80   - Allow setting the intermediate format for chains, instead of hardcoding
81     it at 16-bit RGBA; advanced users can use this to e.g. ask for 8-bit
82     sRGB intermediates, reducing the amount of memory bandwidth needed
83     at the cost of reduced precision. Whether this is a good tradeoff or not
84     depends on the exact chain and your requirements.
85
86   - Fix an issue where a (cached) shader program could be used from multiple
87     threads at a time, causing the uniforms to contain unpredictable values.
88
89   - Make the error printed on check_error() slightly friendlier: Include the
90     enum if possible, and print it to stderr instead of stdout.
91
92
93 Movit 1.3.2, February 23rd, 2016
94
95   - Fix an issue with initialization in certain locales. Patch from
96     Jean-Baptiste Mardelle.
97
98
99 Movit 1.3.1, February 15th, 2016
100
101   - Fix an issue where certain effect chains (particularly involving
102     out-of-tree effects that return only a constant color) could cause
103     texture coordinates not to be set properly. (The new code probably
104     also has slightly lower OpenGL driver overhead.) Reported by
105     Christophe Thommeret.
106
107
108 Movit 1.3.0, January 31st, 2016
109
110   - Movit now requires GLSL 1.30 (so a driver from 2008 or later);
111     before, it claimed to support 1.10, but actually used 1.30 features.
112     Note that some OpenGL drivers, in particular on OS X, only supports
113     GLSL 1.30 (actually, 1.50) if you have an OpenGL core context.
114
115   - Add a deinterlacer, based on YADIF.
116
117   - Allow parallel output to RGBA and Y'CbCr textures at the same time.
118
119   - Make FlatInput and YCbCrInput support taking in external OpenGL
120     textures. Also allow them to change width/height after instantiation.
121
122   - Various compatibility and performance fixes. In particular,
123     fp16 conversion on older (non-Haswell) CPUs is much faster, due to
124     new conversion code by Fabian Giesen.
125
126
127 Movit 1.2.0, September 24th, 2015
128
129   - Movit now ships a version.h with a #define MOVIT_VERSION that
130     increases on every API change, including in git. (The number
131     itself carries no semantic meaning beyond this.) Movit 1.2.0
132     is not API or ABI compatible with 1.1.x, so there has been a
133     soname bump to libmovit.so.3.
134
135   - More flexible Y'CbCr input; in particular, a special input
136     for 4:2:2 interleaved data (UYVY), and support for semi-planar
137     input (Cb and Cr in the same texture, like in NV12). Note that
138     you should now also set the new “num_levels” member of
139     YCbYCbCrFormat to 256 (signifying 8-bit input), although
140     it is not used yet; this is a stepping stone towards supporting
141     10- and 12-bit Y'CbCr.
142
143   - Basic support for Y'CbCr _output_. Currently only 8-bit,
144     and only 4:4:4 (ie., you'll need to subsample yourself
145     afterwards). It is possible to split the output into multiple
146     textures, though, if you want a luma/chroma split (NV12-like)
147     or full planar.
148
149   - Support top-left origin for output. This is only really useful
150     if you are rendering directly into some memory area with top-left
151     origin; most users will get the expected behavior by using
152     bottom-left as before.
153
154   - Rework uniform handling for less OpenGL overhead. Note that
155     this means your effects now need to register uniforms in the
156     C++ code instead of declaring them in the .frag file.
157
158   - Make the PaddingEffect border subpixel-aware, and also support
159     an arbitrary (subpixel) border offset. This means that you can
160     compose PaddingEffect with an integral left/top offset
161     (use the new IntegralPaddingEffect for potentially more speed)
162     and ResampleEffect with a subpixel left/top offset (and zoom to
163     compensate) to get Lanczos interpolation for the pixels and a
164     simple bilinear interpolation for the border itself.
165
166   - Fix a bug that could cause very bad filter weights in
167     ResampleEffect.
168
169   - Various performance improvements, in particular with regards to
170     CPU usage in ResampleEffect.
171
172
173 Movit 1.1.3, March 29th, 2015
174
175   - Fix accuracy issues in ResampleEffect, particularly when
176     zooming. Note that this might cost a few percent performance.
177     Reported by Christophe Thommeret.
178
179   - Make the number of BlurEffect taps configurable.
180     Based on patch by Christophe Thommeret.
181
182   - Multiple other bugfixes, some courtesy Dan Dennedy and
183     Christophe Thommeret. In particular, thread-safety fixes
184     related to locales and chain finalization.
185
186
187 Movit 1.1.2, August 12th, 2014
188
189   - Performance bugfix: Fix texture freelist behavior so that it's
190     LRU instead of the exact opposite. Patch by Christophe Thommeret.
191
192   - Performance bugfix: Correct the number of blur taps read in the
193     blur filter (it was reading about twice as many as it should).
194     Also found by Christophe Thommeret.
195
196
197 Movit 1.1.1, April 12th, 2014
198
199  - Fix an issue that could cause assertion failure in ResourcePool
200    when FBOs are reused, especially with NVIDIA's drivers.
201
202
203 Movit 1.1, April 10th, 2014
204
205  - NOTE: Movit now uses libepoxy rather than GLEW. This is needed because
206    of core context and GLES3 support (see below). Movit 1.1 should be
207    generally API-compatible with 1.0.3 (with the exception of the next
208    point), but is not ABI-compatible, so there has been a soname bump
209    to libmovit.so.2.
210
211  - NOTE: The rules for using an EffectChain or ResourcePool in multiple
212    OpenGL contexts or threads have changed somewhat; see the comments in
213    resource_pool.h.
214
215  - Movit will now work in OpenGL core contexts, and on GLES 3.0 or newer.
216    (GLES2 devices are not supported.) This also holds for all unit tests,
217    provided that you use SDL2 and not SDL1 (because SDL2 is needed to set
218    up such contexts). Note that the included demo application still requires
219    a classic OpenGL context.
220
221  - ResampleEffect can now do sub-pixel translate and/or zoom.
222
223  - LumaMixEffect now has an “invert” flag, as a convenience to e.g. change
224    a left-to-right wipe into a right-to-left one.
225
226  - Significant reduction in driver overhead, especially on NVIDIA drivers.
227
228  - Various smaller bugfixes and performance improvements.
229
230
231 Movit 1.0.3, March 16th, 2014
232
233  - Yet more build system tweaks mainly related to distribution packaging.
234
235
236 Movit 1.0.2, March 16th, 2014
237
238  - Make a few tweaks to “make install”, to make distributions' lives easier.
239
240
241 Movit 1.0.1, March 16th, 2014
242
243  - Fix so that shared libraries are built.
244
245
246 Movit 1.0, March 16th, 2014
247
248  - Initial release.