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