]> git.sesse.net Git - movit/blobdiff - init.h
Round explicitly after dithering, for GPUs that don't do it properly themselves.
[movit] / init.h
diff --git a/init.h b/init.h
index 53a4018100362f6f38f54e0173bdf502f5debf5a..9b4deff5c7a36bb256b93ba199b5c8862c55f961 100644 (file)
--- a/init.h
+++ b/init.h
@@ -44,6 +44,17 @@ extern MovitDebugLevel movit_debug_level;
 // We currently don't bother to test for more than 1024 levels.
 extern float movit_texel_subpixel_precision;
 
+// Some GPUs use very inaccurate fixed-function circuits for rounding
+// floating-point values to 8-bit outputs, leading to absurdities like
+// the roundoff point between 128 and 129 being 128.62 instead of 128.6.
+// We test, for every integer, x+0.48 and x+0.52 and check that they
+// round the right way (giving some leeway, but not a lot); the number
+// of errors are stored here.
+//
+// If this value is above 0, and you have enabled dithering, we will
+// round off explicitly at the very end of the shader.
+extern int movit_num_wrongly_rounded;
+
 // Whether the GPU in use supports GL_EXT_texture_sRGB.
 extern bool movit_srgb_textures_supported;