The options specified in the CLOVER_EXTRA_BUILD_OPTIONS shell variable are appended to the options specified by the OpenCL program in the clBuildProgram function call, if any. Analogously, the options specified in the CLOVER_EXTRA_COMPILE_OPTIONS and CLOVER_EXTRA_LINK_OPTIONS variables are appended to the options specified in clCompileProgram and clLinkProgram function calls, respectively.
v2: * rename to CLOVER_EXTRA_COMPILER_OPTIONS * use debug_get_option * append to linker options as well v3: code cleanups v4: separate CLOVER_EXTRA_LINKER_OPTIONS options v5: * fix documentation typo * use CLOVER_EXTRA_COMPILER_OPTIONS in link stage v6: * separate in CLOVER_EXTRA_{BUILD,COMPILE,LINK}_OPTIONS * append options in cl{Build,Compile,Link}Program Signed-off-by: Vedran Miletić <ved...@miletic.net> Reviewed-by[v1]: Edward O'Callaghan <funfunc...@folklore1984.net> --- docs/envvars.html | 15 +++++++++++++++ src/gallium/state_trackers/clover/api/program.cpp | 15 +++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/docs/envvars.html b/docs/envvars.html index cf57ca5..af1a30c 100644 --- a/docs/envvars.html +++ b/docs/envvars.html @@ -235,6 +235,21 @@ 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_BUILD_OPTIONS - allows specifying additional compiler and linker + options. Specified options are appended after the options set by the OpenCL + program in clBuildProgram. +<li>CLOVER_EXTRA_COMPILE_OPTIONS - allows specifying additional compiler + options. Specified options are appended after the options set by the OpenCL + program in clCompileProgram. +<li>CLOVER_EXTRA_LINK_OPTIONS - allows specifying additional linker + options. Specified options are appended after the options set by the OpenCL + program in clLinkProgram. +</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/api/program.cpp b/src/gallium/state_trackers/clover/api/program.cpp index c3f9cb9..e842e1f 100644 --- a/src/gallium/state_trackers/clover/api/program.cpp +++ b/src/gallium/state_trackers/clover/api/program.cpp @@ -22,6 +22,7 @@ #include "api/util.hpp" #include "core/program.hpp" +#include "util/u_debug.h" #include <sstream> @@ -181,9 +182,11 @@ clBuildProgram(cl_program d_prog, cl_uint num_devs, validate_build_common(prog, num_devs, d_devs, pfn_notify, user_data); + const std::string all_opts = std::string(opts) + " " + + debug_get_option("CLOVER_EXTRA_BUILD_OPTIONS", ""); if (prog.has_source) { - prog.compile(devs, opts); - prog.link(devs, opts, { prog }); + prog.compile(devs, all_opts); + prog.link(devs, all_opts, { prog }); } return CL_SUCCESS; @@ -224,7 +227,9 @@ clCompileProgram(cl_program d_prog, cl_uint num_devs, range(header_names, num_headers), objs<allow_empty_tag>(d_header_progs, num_headers)); - prog.compile(devs, opts, headers); + const std::string all_opts = std::string(opts) + " " + + debug_get_option("CLOVER_EXTRA_COMPILE_OPTIONS", ""); + prog.compile(devs, all_opts, headers); return CL_SUCCESS; } catch (invalid_build_options_error &e) { @@ -280,8 +285,10 @@ clLinkProgram(cl_context d_ctx, cl_uint num_devs, const cl_device_id *d_devs, validate_build_common(prog, num_devs, d_devs, pfn_notify, user_data); + const std::string all_opts = std::string(opts) + " " + + debug_get_option("CLOVER_EXTRA_LINK_OPTIONS", ""); try { - prog().link(devs, opts, progs); + prog().link(devs, all_opts, progs); ret_error(r_errcode, CL_SUCCESS); } catch (build_error &e) { -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev