[Mesa-dev] [PATCH 16/22] compiler/link: move add_program_resource to linker_util

Alejandro PiƱeiro apinheiro at igalia.com
Tue Apr 17 14:36:53 UTC 2018


So it could be used by the GLSL and NIR linker.
---
 src/compiler/glsl/linker.cpp | 36 ------------------------------------
 src/compiler/linker_util.cpp | 37 +++++++++++++++++++++++++++++++++++++
 src/compiler/linker_util.h   |  5 +++++
 3 files changed, 42 insertions(+), 36 deletions(-)

diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 09488cbd4d2..4371fc071d6 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -3586,42 +3586,6 @@ should_add_buffer_variable(struct gl_shader_program *shProg,
    return false;
 }
 
-static bool
-add_program_resource(struct gl_shader_program *prog,
-                     struct set *resource_set,
-                     GLenum type, const void *data, uint8_t stages)
-{
-   assert(data);
-
-   /* If resource already exists, do not add it again. */
-   if (_mesa_set_search(resource_set, data))
-      return true;
-
-   prog->data->ProgramResourceList =
-      reralloc(prog->data,
-               prog->data->ProgramResourceList,
-               gl_program_resource,
-               prog->data->NumProgramResourceList + 1);
-
-   if (!prog->data->ProgramResourceList) {
-      linker_error(prog, "Out of memory during linking.\n");
-      return false;
-   }
-
-   struct gl_program_resource *res =
-      &prog->data->ProgramResourceList[prog->data->NumProgramResourceList];
-
-   res->Type = type;
-   res->Data = data;
-   res->StageReferences = stages;
-
-   prog->data->NumProgramResourceList++;
-
-   _mesa_set_add(resource_set, data);
-
-   return true;
-}
-
 /* Function checks if a variable var is a packed varying and
  * if given name is part of packed varying's list.
  *
diff --git a/src/compiler/linker_util.cpp b/src/compiler/linker_util.cpp
index c7d26616245..c47e4dc75da 100644
--- a/src/compiler/linker_util.cpp
+++ b/src/compiler/linker_util.cpp
@@ -23,6 +23,7 @@
  */
 #include "main/mtypes.h"
 #include "linker_util.h"
+#include "util/set.h"
 
 void
 linker_error(struct gl_shader_program *prog, const char *fmt, ...)
@@ -49,3 +50,39 @@ linker_warning(struct gl_shader_program *prog, const char *fmt, ...)
    va_end(ap);
 
 }
+
+bool
+add_program_resource(struct gl_shader_program *prog,
+                     struct set *resource_set,
+                     GLenum type, const void *data, uint8_t stages)
+{
+   assert(data);
+
+   /* If resource already exists, do not add it again. */
+   if (_mesa_set_search(resource_set, data))
+      return true;
+
+   prog->data->ProgramResourceList =
+      reralloc(prog->data,
+               prog->data->ProgramResourceList,
+               gl_program_resource,
+               prog->data->NumProgramResourceList + 1);
+
+   if (!prog->data->ProgramResourceList) {
+      linker_error(prog, "Out of memory during linking.\n");
+      return false;
+   }
+
+   struct gl_program_resource *res =
+      &prog->data->ProgramResourceList[prog->data->NumProgramResourceList];
+
+   res->Type = type;
+   res->Data = data;
+   res->StageReferences = stages;
+
+   prog->data->NumProgramResourceList++;
+
+   _mesa_set_add(resource_set, data);
+
+   return true;
+}
diff --git a/src/compiler/linker_util.h b/src/compiler/linker_util.h
index 162db3e532f..8fc1785a041 100644
--- a/src/compiler/linker_util.h
+++ b/src/compiler/linker_util.h
@@ -36,6 +36,11 @@ linker_error(struct gl_shader_program *prog, const char *fmt, ...);
 void
 linker_warning(struct gl_shader_program *prog, const char *fmt, ...);
 
+bool
+add_program_resource(struct gl_shader_program *prog,
+                     struct set *resource_set,
+                     GLenum type, const void *data, uint8_t stages);
+
 #ifdef __cplusplus
 }
 #endif
-- 
2.14.1



More information about the mesa-dev mailing list