]> git.sesse.net Git - movit/blobdiff - README
2018 README updates.
[movit] / README
diff --git a/README b/README
index 06afddee89782e1228eb3dab5f973b293e0db53a..79a63d9b0d78a8ee066306392b9beeb40eef23a3 100644 (file)
--- a/README
+++ b/README
@@ -91,12 +91,12 @@ OK, I can read a bit. What do you mean by “modern”?
 Backwards compatibility is fine and all, but sometimes we can do better
 by observing that the world has moved on. In particular:
 
-* It's 2017, so people want to edit HD video.
-* It's 2017, so everybody has a GPU.
-* It's 2017, so everybody has a working C++ compiler.
+* It's 2018, so people want to edit HD video.
+* It's 2018, so everybody has a GPU.
+* It's 2018, so everybody has a working C++ compiler.
   (Even Microsoft fixed theirs around 2003!)
 
-While from a programming standpoint I'd love to say that it's 2016
+While from a programming standpoint I'd love to say that it's 2018
 and interlacing does no longer exist, but that's not true (and interlacing,
 hated as it might be, is actually a useful and underrated technique for
 bandwidth reduction in broadcast video). Movit may eventually provide
@@ -113,15 +113,18 @@ is written using straight-up single-threaded, scalar C! Clearly there is
 room for improvement here, and that improvement is sorely needed.
 We want to edit 1080p video, not watch slideshows.
 
-Movit has chosen to run all pixel processing on the GPU, using GLSL—OpenCL is
-way too young, and CUDA is single-vendor (and also surprisingly hard to
-get good performance from for anything nontrivial). While “run on the GPU”
-does not equal “infinite speed” (I am fairly certain that for many common
-filters, I can beat the Intel-based GPU in my laptop with multithreaded SSE
-code on the CPU—especially as moving the data to and from the GPU has a cost that is not
-to be taken lightly), GPU programming is probably the _simplest_ way of writing
-highly parallel code, and it also frees the CPU to do other things like video
-decoding.
+Movit has chosen to run all pixel processing on the GPU, mostly using GLSL
+fragment shaders. While “run on the GPU” does not equal “infinite speed”,
+GPU programming is probably the _simplest_ way of writing highly parallel code,
+and it also frees the CPU to do other things like video decoding.
+
+Although compute shaders are supported, and can be used or speedups if
+available (currently, only the deinterlacer runs as a compute shader), it is
+surprisingly hard to get good performance for compute shaders for anything
+nontrivial. This is also one of the primary reasons why Movit uses GLSL and
+not any of the major GPU compute frameworks (CUDA and OpenCL), although it
+is also important that it is widely supported (unlike CUDA) and driver quality
+general is fairly good (unlike OpenCL).
 
 Exactly what speeds you can expect is of course highly dependent on
 your GPU and the exact filter chain you are running. As a rule of thumb,