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