[Mesa-dev] [PATCH v3] clover: Introduce CLOVER_EXTRA_COMPILER_OPTIONS

Jan Vesely jv356 at scarletmail.rutgers.edu
Wed Sep 7 14:14:55 UTC 2016


On Wed, 2016-09-07 at 13:43 +0200, Vedran Miletić wrote:
> Options specified via the CLOVER_EXTRA_COMPILER_OPTIONS shell
> variable
> are appended to the compiler and linker options specified by the
> OpenCL
> program (if any).
> 
> v2:
>  * rename to CLOVER_EXTRA_COMPILER_OPTIONS
>  * use debug_get_option
>  * append to linker options as well

is this safe? sets of recognized compiler and linker options are
distinct, so there's a risk of getting
CL_INVALID_COMPILER_OPTION/CL_INVALID_LINKER_OPTION if the env var
includes options that is permitted by one and not the other.

since this is a debug mechanism I'm OK if it just produces warning.

Jan

> 
> v3: code cleanups
> 
> Signed-off-by: Vedran Miletić <vedran at miletic.net>
> Reviewed-by[v1]: Edward O'Callaghan <funfunctor at folklore1984.net>
> ---
>  docs/envvars.html                                     |  9 +++++++++
>  src/gallium/state_trackers/clover/llvm/invocation.cpp | 10 +++++++
> ---
>  2 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/docs/envvars.html b/docs/envvars.html
> index 6d79398..5cd9a31 100644
> --- a/docs/envvars.html
> +++ b/docs/envvars.html
> @@ -233,6 +233,15 @@ Setting to "tgsi", for example, will print all
> the TGSI shaders.
>  See src/mesa/state_tracker/st_debug.c for other options.
>  </ul>
>  
> +<h3>Clover state tracker environment variables</h3>
> +
> +<ul>
> +<li>CLOVER_EXTRA_COMPILER_OPTIONS - allows specifying additional
> compiler
> +    options. Specified options are appended after the options set by
> the OpenCL
> +    program.
> +</ul>
> +
> +
>  <h3>Softpipe driver environment variables</h3>
>  <ul>
>  <li>SOFTPIPE_DUMP_FS - if set, the softpipe driver will print
> fragment shaders
> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> index 5490d72..05eae1a 100644
> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> @@ -196,11 +196,13 @@ clover::llvm::compile_program(const std::string
> &source,
>                                const std::string &target,
>                                const std::string &opts,
>                                std::string &r_log) {
> +   const std::string all_opts = opts + " " +
> +                          debug_get_option("CLOVER_EXTRA_COMPILER_OP
> TIONS", "");
>     if (has_flag(debug::clc))
> -      debug::log(".cl", "// Options: " + opts + '\n' + source);
> +      debug::log(".cl", "// Options: " + all_opts + '\n' + source);
>  
>     auto ctx = create_context(r_log);
> -   auto c = create_compiler_instance(target, tokenize(opts + "
> input.cl"),
> +   auto c = create_compiler_instance(target, tokenize(all_opts + "
> input.cl"),
>                                       r_log);
>     auto mod = compile(*ctx, *c, "input.cl", source, headers, target,
> opts,
>                        r_log);
> @@ -263,7 +265,9 @@ module
>  clover::llvm::link_program(const std::vector<module> &modules,
>                             enum pipe_shader_ir ir, const std::string
> &target,
>                             const std::string &opts, std::string
> &r_log) {
> -   std::vector<std::string> options = tokenize(opts + " input.cl");
> +   const std::string all_opts = opts + " " +
> +                          debug_get_option("CLOVER_EXTRA_COMPILER_OP
> TIONS", "");
> +   std::vector<std::string> options = tokenize(all_opts + "
> input.cl");
>     const bool create_library = count("-create-library", options);
>     erase_if(equals("-create-library"), options);
>  
-- 
Jan Vesely <jv356 at scarletmail.rutgers.edu>


More information about the mesa-dev mailing list