aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compiler/glsl/glsl_to_nir.cpp3
-rw-r--r--src/mesa/main/mtypes.h3
-rw-r--r--src/mesa/program/prog_to_nir.c6
3 files changed, 11 insertions, 1 deletions
diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp
index b5318928792..934c9d14f94 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -136,7 +136,8 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
{
struct gl_linked_shader *sh = shader_prog->_LinkedShaders[stage];
- nir_shader *shader = nir_shader_create(NULL, stage, options, NULL);
+ nir_shader *shader = nir_shader_create(NULL, stage, options,
+ &sh->Program->info);
nir_visitor v1(shader);
nir_function_visitor v2(&v1);
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 79dd1c51df7..c9310ef3070 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -43,6 +43,7 @@
#include "glapi/glapi.h"
#include "math/m_matrix.h" /* GLmatrix */
#include "compiler/shader_enums.h"
+#include "compiler/shader_info.h"
#include "main/formats.h" /* MESA_FORMAT_COUNT */
#include "compiler/glsl/list.h"
#include "util/bitscan.h"
@@ -1919,6 +1920,8 @@ struct gl_program
struct nir_shader *nir;
+ struct shader_info info;
+
GLbitfield64 InputsRead; /**< Bitmask of which input regs are read */
GLbitfield64 DoubleInputsRead; /**< Bitmask of which input regs are read and are doubles */
GLbitfield64 OutputsWritten; /**< Bitmask of which output regs are written */
diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c
index a65d4bf8182..2f589ce77f3 100644
--- a/src/mesa/program/prog_to_nir.c
+++ b/src/mesa/program/prog_to_nir.c
@@ -1019,6 +1019,12 @@ prog_to_nir(const struct gl_program *prog,
c->prog = prog;
nir_builder_init_simple_shader(&c->build, NULL, stage, options);
+
+ /* Use the shader_info from gl_program rather than the one nir_builder
+ * created for us. nir_sweep should clean up the other one for us.
+ */
+ c->build.shader->info = (shader_info *) &prog->info;
+
s = c->build.shader;
if (prog->Parameters->NumParameters > 0) {