]>
git.sesse.net Git - movit/log
Steinar H. Gunderson [Wed, 31 Jan 2018 22:01:20 +0000 (23:01 +0100)]
Release Movit 1.6.1.
Steinar H. Gunderson [Sun, 28 Jan 2018 20:25:28 +0000 (21:25 +0100)]
Fix a typo.
Steinar H. Gunderson [Sun, 28 Jan 2018 16:41:07 +0000 (17:41 +0100)]
Loosen up some restrictions on strong one-to-one-effects.
In particular, this allows strong one-to-one-effects with multiple
inputs; this was forbidden by the comment, but not enforced anywhere,
and MixEffect was inadvertedly put as strong one-to-one. This actually
triggered at least three distinct bugs (thus three new tests).
Steinar H. Gunderson [Sat, 27 Jan 2018 20:15:52 +0000 (21:15 +0100)]
Mark a already-done TODO as fixed.
Steinar H. Gunderson [Wed, 24 Jan 2018 23:11:40 +0000 (00:11 +0100)]
Release Movit 1.6.0.
Steinar H. Gunderson [Tue, 23 Jan 2018 21:14:06 +0000 (22:14 +0100)]
Typo fixes.
Steinar H. Gunderson [Tue, 23 Jan 2018 21:12:38 +0000 (22:12 +0100)]
Remove a FIXME which turned out to not be so important after all.
Steinar H. Gunderson [Tue, 23 Jan 2018 17:53:20 +0000 (18:53 +0100)]
We've run with many more GPUs than just those three now.
Steinar H. Gunderson [Tue, 23 Jan 2018 17:33:34 +0000 (18:33 +0100)]
2018 README updates.
Steinar H. Gunderson [Thu, 18 Jan 2018 00:07:26 +0000 (01:07 +0100)]
Break phases when a node needs both to supply mipmaps and _not_ supply mipmaps.
In most cases, this means that we can keep a local copy that supplies
mipmaps and an RTT input that doesn't, or the other way around.
This is not a complete solution, since it doesn't take into account
the case where _both_ inputs will be RTT, but it's good enough for now.
Also requires us to distinguish between links between nodes in the same phase
and in different phases, or we'd get GLSL compile errors as we had both the
local and the RTT input being called e.g. “in0”.
Steinar H. Gunderson [Wed, 17 Jan 2018 20:06:55 +0000 (21:06 +0100)]
Add explicit support for requesting no mipmaps.
This is significantly less hackish than having the few effects
that don't want mipmaps having to request texture bounce and
fiddling with the sampling parameters themselves.
API change, although only for writing custom effects.
Steinar H. Gunderson [Mon, 15 Jan 2018 20:45:52 +0000 (21:45 +0100)]
Refactor calculate_scaling_weights() so that it is possible to get weights without bilinear optimization.
Steinar H. Gunderson [Mon, 15 Jan 2018 19:45:59 +0000 (20:45 +0100)]
Microoptimization in calculate_scaling_weights.
Doesn't actually influence the benchmarks much, but is useful to get 100%
equivalence with the coming compute shader.
Steinar H. Gunderson [Sun, 14 Jan 2018 23:52:23 +0000 (00:52 +0100)]
Fix some small whitespace errors in SingleResamplePassEffect.
Steinar H. Gunderson [Sun, 14 Jan 2018 23:48:29 +0000 (00:48 +0100)]
In ResampleEffect, use std::unique_ptr instead of managing ownership ourselves.
Steinar H. Gunderson [Sun, 14 Jan 2018 19:51:08 +0000 (20:51 +0100)]
Move the functionality for updating the support texture using glTexImage2D or glTexSubImage2D into a separate class.
Steinar H. Gunderson [Mon, 8 Jan 2018 23:27:05 +0000 (00:27 +0100)]
Another benchmarking data set fix.
Steinar H. Gunderson [Tue, 2 Jan 2018 17:03:35 +0000 (18:03 +0100)]
Make sure we do not send infinities to benchmarking textures.
Steinar H. Gunderson [Fri, 29 Dec 2017 23:18:03 +0000 (00:18 +0100)]
Loosen up a bound in ResampleEffectTest a bit.
Steinar H. Gunderson [Fri, 29 Dec 2017 21:10:14 +0000 (22:10 +0100)]
Add output size as a uniform to compute shaders, as an integer; not just the inverse value as a float.
Steinar H. Gunderson [Thu, 28 Dec 2017 21:31:38 +0000 (22:31 +0100)]
Reduce the amount of duplication between overloads in test_util.h, by using a few more C++11 features.
Steinar H. Gunderson [Thu, 28 Dec 2017 21:13:50 +0000 (22:13 +0100)]
Change the resampling tests to fp16 (arguably more useful).
Steinar H. Gunderson [Thu, 28 Dec 2017 20:24:18 +0000 (21:24 +0100)]
Remove an unused parameter in EffectChainTester.
Steinar H. Gunderson [Thu, 28 Dec 2017 20:05:27 +0000 (21:05 +0100)]
Fix the uniform name for the compute shader output. (It would always be 0 by accident anyway, but it is nice to have it cleaner.)
Steinar H. Gunderson [Sun, 10 Dec 2017 14:37:37 +0000 (15:37 +0100)]
When a shader fails compilation, add some line numbers.
Steinar H. Gunderson [Sun, 26 Nov 2017 14:07:08 +0000 (15:07 +0100)]
Run init_lanczos_table using std::call_once, now that we have C++11.
Steinar H. Gunderson [Sun, 26 Nov 2017 12:56:19 +0000 (13:56 +0100)]
Add a benchmark for calculate_scaling_weights().
Steinar H. Gunderson [Sat, 25 Nov 2017 19:46:26 +0000 (20:46 +0100)]
Add some benchmarks for ResampleEffect.
Steinar H. Gunderson [Sat, 25 Nov 2017 11:53:06 +0000 (12:53 +0100)]
Add missing test shader.
Steinar H. Gunderson [Sat, 25 Nov 2017 11:51:44 +0000 (12:51 +0100)]
Update .gitignore.
Steinar H. Gunderson [Sat, 25 Nov 2017 11:37:05 +0000 (12:37 +0100)]
Fix some warnings.
Steinar H. Gunderson [Sat, 25 Nov 2017 11:31:02 +0000 (12:31 +0100)]
Make it easier to turn on debug for the EffectChain test without having it be turned off again.
Steinar H. Gunderson [Sat, 25 Nov 2017 11:07:10 +0000 (12:07 +0100)]
Fix resizing compute shaders when used with postprocessing effects.
Steinar H. Gunderson [Sat, 25 Nov 2017 10:26:54 +0000 (11:26 +0100)]
Support top-left origin for compute shaders.
Steinar H. Gunderson [Sat, 25 Nov 2017 10:08:50 +0000 (11:08 +0100)]
Minor improvement to a test name.
Steinar H. Gunderson [Sat, 25 Nov 2017 00:58:08 +0000 (01:58 +0100)]
Fix a bug where the wrong effect would be asked for compute shaders dimensions.
Steinar H. Gunderson [Fri, 24 Nov 2017 21:11:08 +0000 (22:11 +0100)]
Support chaining certain effects after compute shaders.
This rests on the notion of “strong one-to-one” that's very similar
to the older “one-to-one“ concept, yet a bit stricter (in particular,
PaddingEffect is not strong one-to-one).
Steinar H. Gunderson [Thu, 23 Nov 2017 18:43:23 +0000 (19:43 +0100)]
Small fix in EffectChainTester constructor.
Steinar H. Gunderson [Thu, 23 Nov 2017 17:50:14 +0000 (18:50 +0100)]
Use C++11 override everywhere it is appropriate.
Steinar H. Gunderson [Thu, 23 Nov 2017 17:27:36 +0000 (18:27 +0100)]
Fix a typo in ResizeEffect. Found by virtual → override transition.
Steinar H. Gunderson [Thu, 23 Nov 2017 00:04:29 +0000 (01:04 +0100)]
Fix some Clang warnings.
Steinar H. Gunderson [Thu, 23 Nov 2017 00:01:30 +0000 (01:01 +0100)]
Remove the unused fields from ResampleEffect; if we make any changes here, it will have to be later.
Steinar H. Gunderson [Wed, 22 Nov 2017 23:59:46 +0000 (00:59 +0100)]
Fix another set of test breakages on NVIDIA.
This was broken by
c6ee050546b6940ae19a74f92bdcc8d2b1f56d22 ,
which stopped modifying destination textures' minification modes.
Steinar H. Gunderson [Wed, 22 Nov 2017 23:18:28 +0000 (00:18 +0100)]
Unbreak FBO caching in unit tests.
EffectChain::render_to_textures() ended up reusing FBOs in a way that
was not compatible with how the tester managed textures; this broke nearly all
unit tests on NVIDIA.
Steinar H. Gunderson [Wed, 22 Nov 2017 22:04:56 +0000 (23:04 +0100)]
Install compute shaders on make install.
Steinar H. Gunderson [Wed, 22 Nov 2017 19:36:22 +0000 (20:36 +0100)]
Manage intermediate textures a bit more efficiently.
By holding on to them only for as long as we need to, we'll save some
peak texture RAM, and _might_ in some situations get a bit less cache
trashing.
Steinar H. Gunderson [Wed, 22 Nov 2017 19:13:46 +0000 (20:13 +0100)]
Support sqrt-transformed intermediates with compute shaders.
Steinar H. Gunderson [Wed, 22 Nov 2017 19:11:06 +0000 (20:11 +0100)]
Move compute shader functions from the header to the footer; easier to unify with how the fragment shaders work.
Steinar H. Gunderson [Wed, 22 Nov 2017 18:57:32 +0000 (19:57 +0100)]
Move the compute shader tests into effect_chain_test, as we will have hybrid tests soon.
Steinar H. Gunderson [Wed, 22 Nov 2017 18:47:31 +0000 (19:47 +0100)]
Support other output formats than GL_RGBA16F; was easier than originally feared.
Steinar H. Gunderson [Wed, 22 Nov 2017 18:28:14 +0000 (19:28 +0100)]
Do some more cleanups in anticipation of more flexible compute shader outputs.
Includes reverting back to last_phase instead of render_to_texture.
Steinar H. Gunderson [Tue, 21 Nov 2017 23:04:03 +0000 (00:04 +0100)]
Support rendering compute shaders straight to textures (skipping the dummy phase).
There are lots of limitations currently (only one destination,
only GL_RGBA16F), but it's a good start. Curiously enough,
it doesn't really help anything on the deinterlacing benchmark
for my Haswell, but NVIDIA sees ~15% improvement.
Steinar H. Gunderson [Mon, 20 Nov 2017 23:57:51 +0000 (00:57 +0100)]
Fix an issue where -std=gnu++11 would become the only flag.
Steinar H. Gunderson [Mon, 20 Nov 2017 18:41:10 +0000 (19:41 +0100)]
Add a texture barrier after dispatching each compute shader.
This is maybe a bit heavy-handed (there are cases where shaders could
run in parallel), but it's by far the simplest thing to do, since we
have zero control over what happens to the textures we use when they
are handed back to the resource pool.
Steinar H. Gunderson [Mon, 20 Nov 2017 18:10:47 +0000 (19:10 +0100)]
Add some asserts to EffectChain::execute_phase, so that we do not inadvertedly insert new output textures with number 0.
Steinar H. Gunderson [Mon, 20 Nov 2017 18:07:46 +0000 (19:07 +0100)]
Invert the meaning of the last_phase boolean to execute_phase().
This is because we can soon have last phases that do not render to FBOs
(those that come out of compute shaders).
Steinar H. Gunderson [Mon, 20 Nov 2017 17:27:22 +0000 (18:27 +0100)]
Use glGetTexImage() instead of glReadPixels() for reading back test data.
Generally cleaner, and also paves the way for when we have FBO-less
rendering from compute shaders.
Steinar H. Gunderson [Sun, 19 Nov 2017 14:25:30 +0000 (15:25 +0100)]
Better error messages when skipping compute shader benchmarks.
Steinar H. Gunderson [Thu, 16 Nov 2017 22:07:47 +0000 (23:07 +0100)]
Implement a compute shdaer version of DeinterlaceEffect.
This is currently a loss for grayscale (probably due to the extra
rgba16f bounce), but a win of about ~30% on BGRA on my Haswell.
NVIDIA doesn't care much either way.
There are some performance mysteries remaining, but it's a good start.
Steinar H. Gunderson [Sun, 19 Nov 2017 00:32:06 +0000 (01:32 +0100)]
Reduce the clutter in instantiating benchmarks a little bit.
Steinar H. Gunderson [Sun, 19 Nov 2017 00:28:02 +0000 (01:28 +0100)]
Add a helper class to easier test fragment and compute shader versions of the same effect alongside each other.
Steinar H. Gunderson [Sat, 18 Nov 2017 20:20:06 +0000 (21:20 +0100)]
Fix compute shader outputs on NVIDIA.
Steinar H. Gunderson [Sat, 18 Nov 2017 20:13:14 +0000 (21:13 +0100)]
Bump compute shader header to #version 150.
NVIDIA requires this for the layout qualifier, and it's probably right.
Note that this required moving the unit tests to a core context,
due to Mesa's demands.
Steinar H. Gunderson [Sat, 18 Nov 2017 20:11:07 +0000 (21:11 +0100)]
Drop support for SDL1, which is no longer maintained.
Steinar H. Gunderson [Sat, 18 Nov 2017 17:24:08 +0000 (18:24 +0100)]
Use auto and range-based for loops a few places where it aids clarity.
Steinar H. Gunderson [Sat, 18 Nov 2017 13:44:51 +0000 (14:44 +0100)]
More renaming of .compute -> .comp.
Steinar H. Gunderson [Sat, 18 Nov 2017 10:45:30 +0000 (11:45 +0100)]
Fix an issue where matrices would not get printed out on test failure.
Steinar H. Gunderson [Sat, 18 Nov 2017 10:35:15 +0000 (11:35 +0100)]
Add a benchmark for DeinterlaceTest without the spatial interlacing check.
Steinar H. Gunderson [Sat, 18 Nov 2017 10:07:37 +0000 (11:07 +0100)]
Rename .compute to .comp, to be in line with the Khronos reference compiler.
Steinar H. Gunderson [Fri, 17 Nov 2017 20:41:39 +0000 (21:41 +0100)]
Make BGRA deinterlacing benchmark premultiplied, so that we do not use forever just in bouncing.
Steinar H. Gunderson [Thu, 16 Nov 2017 17:17:28 +0000 (18:17 +0100)]
Parametrize BM_DeinterlaceEffect so that we have both grayscale and BGRA.
Steinar H. Gunderson [Wed, 15 Nov 2017 23:34:47 +0000 (00:34 +0100)]
Fix deletion of compute shaders.
Steinar H. Gunderson [Wed, 15 Nov 2017 19:49:59 +0000 (20:49 +0100)]
Fix some missing NULL -> nullptr.
Steinar H. Gunderson [Wed, 15 Nov 2017 19:47:31 +0000 (20:47 +0100)]
Revert "Remove C++11 dependency from ResampleEffect."
Add back unique_ptr, now that we have C++11.
This reverts commit
8e9f58fec54a4c879035b214fd7411f6ff7b3a32 .
Steinar H. Gunderson [Wed, 15 Nov 2017 19:46:16 +0000 (20:46 +0100)]
Use double right angle brackets for nested templates everywhere, now that we have C++11.
Steinar H. Gunderson [Wed, 15 Nov 2017 19:45:41 +0000 (20:45 +0100)]
Use nullptr everywhere, now that we have C++11.
Steinar H. Gunderson [Wed, 15 Nov 2017 19:30:58 +0000 (20:30 +0100)]
Add support for microbenchmarks.
This depends on Google's microbenchmark library (latest git version,
at least as soon as they pull in the pkg-config file), but it is
not mandatory.
Note that this makes Movit depend on C++11.
Steinar H. Gunderson [Mon, 13 Nov 2017 20:58:40 +0000 (21:58 +0100)]
Add support for compute shaders.
This is currently pretty raw, and there are no effect using it yet,
but it's a useful first step for getting the infrastructure in place.
Steinar H. Gunderson [Mon, 13 Nov 2017 19:36:27 +0000 (20:36 +0100)]
There's no need to #undef PREFIX, since we do the token pasting ourselves.
Steinar H. Gunderson [Sun, 12 Nov 2017 00:30:01 +0000 (01:30 +0100)]
Fix some invalid code in DeinterlaceTest; GCC 7 would optimize it into simply an infinite loop.
Steinar H. Gunderson [Sat, 11 Nov 2017 21:02:46 +0000 (22:02 +0100)]
Some refactoring in ResourcePool.
Steinar H. Gunderson [Sat, 16 Sep 2017 10:08:27 +0000 (12:08 +0200)]
Add the GPLv2 license text.
Pascal Massimino [Thu, 14 Sep 2017 10:58:57 +0000 (12:58 +0200)]
fix compile error: "error: variable-sized object ‘red_data’ may not be initialized"
Steinar H. Gunderson [Wed, 13 Sep 2017 18:28:26 +0000 (20:28 +0200)]
Support negative values for lift in LiftGammaGainEffect.
Patch by Jean-Baptiste Mardelle <jb@kdenlive.org> (except the test,
which is by myself). Based on work from Dušan Hanuš <hanus@pixelhouse.cz>.
Steinar H. Gunderson [Thu, 10 Aug 2017 23:09:13 +0000 (01:09 +0200)]
Fix a typo.
Steinar H. Gunderson [Thu, 10 Aug 2017 15:59:58 +0000 (17:59 +0200)]
Release Movit 1.5.3.
Steinar H. Gunderson [Tue, 8 Aug 2017 16:03:09 +0000 (18:03 +0200)]
Add a notice to render_to_screen() that it might be suboptimal.
Steinar H. Gunderson [Mon, 7 Aug 2017 07:32:21 +0000 (09:32 +0200)]
Fix a leak if ResampleEffect is destroyed before being put on a chain.
FFTConvolutionEffect remembered this, but ResampleEffect did not.
Patch by Dan Dennedy.
Steinar H. Gunderson [Thu, 3 Aug 2017 13:36:30 +0000 (15:36 +0200)]
Fix fp16_test compilation _without_ f16c-enabled compilation flags.
Reported by Arthur Huillet.
Steinar H. Gunderson [Tue, 1 Aug 2017 15:41:17 +0000 (17:41 +0200)]
Fix fp16_test compilation with f16c-enabled compilation flags.
Steinar H. Gunderson [Tue, 1 Aug 2017 07:25:10 +0000 (09:25 +0200)]
Remove C++11 dependency from ResampleEffect.
We really ought to allow C++11 in Movit soon, but 1.5.2 is not the right release.
Reported by Etienne d'Hautefeuille.
Steinar H. Gunderson [Fri, 28 Jul 2017 17:06:33 +0000 (19:06 +0200)]
Fix a double-unlock.
Steinar H. Gunderson [Wed, 5 Jul 2017 07:37:39 +0000 (09:37 +0200)]
Release Movit 1.5.2.
Steinar H. Gunderson [Wed, 5 Jul 2017 07:35:40 +0000 (09:35 +0200)]
Add some room for future expansion in ResampleEffect, since I have something that I would like them for and we are breaking the ABI anyway.
Steinar H. Gunderson [Tue, 4 Jul 2017 23:06:12 +0000 (01:06 +0200)]
Cache VAOs between runs.
NVIDIA's drivers (at least the Linux drivers) seem to have a bug
where, if you call glVertexAttribPointer() in one thread together
with some specific activity in another thread (at least another
glVertexAttribPointer() will do, but I've also seen it during
glXSwapBuffers()), it will try to free a non-malloced pointer,
crashing everything. This happens very rarely, but often enough
that it's a real problem for Nageru.
We solve it by simply pre-creating all needed VAOs ahead-of-time
and caching them, which makes us call glVertexAttribPointer()
a _lot_ less often (basically never, instead of several times
per frame). This might actually be a bit slower than the old code
(I haven't tested), but at least it works around the driver bug.
ABI break, unfortunately, but no API break.
Steinar H. Gunderson [Sun, 2 Jul 2017 09:32:34 +0000 (11:32 +0200)]
Fix Makefile after fp16 removal.
Steinar H. Gunderson [Sun, 2 Jul 2017 08:18:34 +0000 (10:18 +0200)]
Inline the fp16 conversion routines. Helps 18% on ResampleEffect::calculate_texture.
Steinar H. Gunderson [Sun, 2 Jul 2017 08:10:11 +0000 (10:10 +0200)]
Inline combine_two_samples (and remove an obsolete assert). Helps 13–14% on ResampleEffect::calculate_texture.
Steinar H. Gunderson [Sun, 2 Jul 2017 08:06:54 +0000 (10:06 +0200)]
Some microoptimizations in combine_two_samples(). Saves about 4% in ResampleEffect::calculate_weights.
Steinar H. Gunderson [Sat, 1 Jul 2017 19:50:31 +0000 (21:50 +0200)]
Remove some unneeded conversions from ResampleEffect. Speeds up texture generation by ~8%.