glsl/standalone: Add an option to lower the precision
authorNeil Roberts <nroberts@igalia.com>
Thu, 3 Oct 2019 23:59:10 +0000 (19:59 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 24 Mar 2020 23:21:21 +0000 (23:21 +0000)
Adds a --lower-precision option that just sets the LowerPrecision
compiler option. That way it can be used in unit tests to test the
precision lowering pass.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3885>

src/compiler/glsl/main.cpp
src/compiler/glsl/standalone.cpp
src/compiler/glsl/standalone.h

index 2ff561e011dd011254e3eb888efe1cc1d274a983..c826c279fac02490adbd58e1bd0ddb956c80a313 100644 (file)
@@ -46,6 +46,7 @@ const struct option compiler_opts[] = {
    { "dump-builder", no_argument, &options.dump_builder, 1 },
    { "link",     no_argument, &options.do_link,  1 },
    { "just-log", no_argument, &options.just_log, 1 },
+   { "lower-precision", no_argument, &options.lower_precision, 1 },
    { "version",  required_argument, NULL, 'v' },
    { NULL, 0, NULL, 0 }
 };
index 46733d490ec3834ef979f46c1c7c3a9a47e44e83..4b4735016227f8b9cf51ace2e2584b999a41a565 100644 (file)
@@ -446,6 +446,14 @@ standalone_compile_shader(const struct standalone_options *_options,
       initialize_context(ctx, options->glsl_version > 130 ? API_OPENGL_CORE : API_OPENGL_COMPAT);
    }
 
+   if (options->lower_precision) {
+      for (unsigned i = MESA_SHADER_VERTEX; i <= MESA_SHADER_FRAGMENT; i++) {
+         struct gl_shader_compiler_options *options =
+            &ctx->Const.ShaderCompilerOptions[i];
+         options->LowerPrecision = true;
+      }
+   }
+
    struct gl_shader_program *whole_program;
 
    whole_program = rzalloc (NULL, struct gl_shader_program);
index d9e14f798a33c1093a09672aee4e13619e14a23b..2c2d923816265308d5837da827f85d61e4fa55d8 100644 (file)
@@ -36,6 +36,7 @@ struct standalone_options {
    int dump_builder;
    int do_link;
    int just_log;
+   int lower_precision;
 };
 
 struct gl_shader_program;