From: Timothy Arceri Date: Fri, 22 Feb 2019 00:51:24 +0000 (+1100) Subject: glsl/freedreno/panfrost: pass gl_context to the standalone compiler X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7530d4abfcf9d39fb1b4abeb77cdbf6cf1d411a7;p=mesa.git glsl/freedreno/panfrost: pass gl_context to the standalone compiler This allows us to use the ctx with glsl_to_nir() in a following patch. Reviewed-by: Eric Anholt --- diff --git a/src/compiler/glsl/main.cpp b/src/compiler/glsl/main.cpp index a730c033917..2ff561e011d 100644 --- a/src/compiler/glsl/main.cpp +++ b/src/compiler/glsl/main.cpp @@ -34,6 +34,7 @@ * offline compile GLSL code and examine the resulting GLSL IR. */ +#include "main/mtypes.h" #include "standalone.h" static struct standalone_options options; @@ -91,8 +92,10 @@ main(int argc, char * const* argv) usage_fail(argv[0]); struct gl_shader_program *whole_program; + static struct gl_context local_ctx; - whole_program = standalone_compile_shader(&options, argc - optind, &argv[optind]); + whole_program = standalone_compile_shader(&options, argc - optind, + &argv[optind], &local_ctx); if (!whole_program) usage_fail(argv[0]); diff --git a/src/compiler/glsl/standalone.cpp b/src/compiler/glsl/standalone.cpp index add4e4ea478..06869a0b3dc 100644 --- a/src/compiler/glsl/standalone.cpp +++ b/src/compiler/glsl/standalone.cpp @@ -400,11 +400,9 @@ compile_shader(struct gl_context *ctx, struct gl_shader *shader) extern "C" struct gl_shader_program * standalone_compile_shader(const struct standalone_options *_options, - unsigned num_files, char* const* files) + unsigned num_files, char* const* files, struct gl_context *ctx) { int status = EXIT_SUCCESS; - static struct gl_context local_ctx; - struct gl_context *ctx = &local_ctx; bool glsl_es = false; options = _options; diff --git a/src/compiler/glsl/standalone.h b/src/compiler/glsl/standalone.h index 5029e168119..d9e14f798a3 100644 --- a/src/compiler/glsl/standalone.h +++ b/src/compiler/glsl/standalone.h @@ -42,7 +42,8 @@ struct gl_shader_program; struct gl_shader_program * standalone_compile_shader( const struct standalone_options *options, - unsigned num_files, char* const* files); + unsigned num_files, char* const* files, + struct gl_context *ctx); void standalone_compiler_cleanup(struct gl_shader_program *prog); diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c index 872bcb28469..0850618bc3d 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c @@ -110,8 +110,9 @@ load_glsl(unsigned num_files, char* const* files, gl_shader_stage stage) struct gl_shader_program *prog; const nir_shader_compiler_options *nir_options = ir3_get_compiler_options(compiler); + static struct gl_context local_ctx; - prog = standalone_compile_shader(&options, num_files, files); + prog = standalone_compile_shader(&options, num_files, files, &local_ctx); if (!prog) errx(1, "couldn't parse `%s'", files[0]); diff --git a/src/gallium/drivers/panfrost/midgard/cmdline.c b/src/gallium/drivers/panfrost/midgard/cmdline.c index 1aa0323bb0d..7326402dd09 100644 --- a/src/gallium/drivers/panfrost/midgard/cmdline.c +++ b/src/gallium/drivers/panfrost/midgard/cmdline.c @@ -53,7 +53,9 @@ compile_shader(char **argv) .do_link = true, }; - prog = standalone_compile_shader(&options, 2, argv); + static struct gl_context local_ctx; + + prog = standalone_compile_shader(&options, 2, argv, &local_ctx); prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program->info.stage = MESA_SHADER_FRAGMENT; for (unsigned i = 0; i < MESA_SHADER_STAGES; ++i) { @@ -83,7 +85,9 @@ compile_blend(char **argv) .glsl_version = 140, }; - prog = standalone_compile_shader(&options, 1, argv); + static struct gl_context local_ctx; + + prog = standalone_compile_shader(&options, 1, argv, &local_ctx); prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program->info.stage = MESA_SHADER_FRAGMENT; midgard_program program;