Mesa (master): glsl/freedreno/panfrost: pass gl_context to the standalone compiler

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Mar 7 00:33:44 UTC 2019


Module: Mesa
Branch: master
Commit: 7530d4abfcf9d39fb1b4abeb77cdbf6cf1d411a7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7530d4abfcf9d39fb1b4abeb77cdbf6cf1d411a7

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Fri Feb 22 11:51:24 2019 +1100

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 <eric at anholt.net>

---

 src/compiler/glsl/main.cpp                      | 5 ++++-
 src/compiler/glsl/standalone.cpp                | 4 +---
 src/compiler/glsl/standalone.h                  | 3 ++-
 src/gallium/drivers/freedreno/ir3/ir3_cmdline.c | 3 ++-
 src/gallium/drivers/panfrost/midgard/cmdline.c  | 8 ++++++--
 5 files changed, 15 insertions(+), 8 deletions(-)

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;




More information about the mesa-commit mailing list