Mesa (main): nir: Add an interface for logging shaders with mesa_log*.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 18 18:42:26 UTC 2021
Module: Mesa
Branch: main
Commit: 990c23260319fa25f873038f776d8ab1f3f5628e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=990c23260319fa25f873038f776d8ab1f3f5628e
Author: Emma Anholt <emma at anholt.net>
Date: Wed Jun 16 11:13:54 2021 -0700
nir: Add an interface for logging shaders with mesa_log*.
For debug on Android, it's useful to be able to print shaders to the
android log interface, since you don't usually have stdout/stderr.
Reviewed-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9262>
---
src/compiler/nir/nir.h | 7 +++++++
src/compiler/nir/nir_print.c | 18 ++++++++++++++++--
src/intel/vulkan/anv_private.h | 1 +
3 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 1bad96e1f37..47a88fdb6d3 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -32,6 +32,7 @@
#include "compiler/glsl/list.h"
#include "GL/gl.h" /* GLenum */
#include "util/list.h"
+#include "util/log.h"
#include "util/ralloc.h"
#include "util/set.h"
#include "util/bitscan.h"
@@ -4083,8 +4084,14 @@ void nir_print_shader(nir_shader *shader, FILE *fp);
void nir_print_shader_annotated(nir_shader *shader, FILE *fp, struct hash_table *errors);
void nir_print_instr(const nir_instr *instr, FILE *fp);
void nir_print_deref(const nir_deref_instr *deref, FILE *fp);
+void nir_log_shader_annotated_tagged(enum mesa_log_level level, const char *tag, nir_shader *shader, struct hash_table *annotations);
+#define nir_log_shadere(s) nir_log_shader_annotated_tagged(MESA_LOG_ERROR, (MESA_LOG_TAG), (s), NULL)
+#define nir_log_shaderw(s) nir_log_shader_annotated_tagged(MESA_LOG_WARN, (MESA_LOG_TAG), (s), NULL)
+#define nir_log_shaderi(s) nir_log_shader_annotated_tagged(MESA_LOG_INFO, (MESA_LOG_TAG), (s), NULL)
+#define nir_log_shader_annotated(s, annotations) nir_log_shader_annotated_tagged(MESA_LOG_ERROR, (MESA_LOG_TAG), (s), annotations)
char *nir_shader_as_str(nir_shader *nir, void *mem_ctx);
+char *nir_shader_as_str_annotated(nir_shader *nir, struct hash_table *annotations, void *mem_ctx);
/** Shallow clone of a single instruction. */
nir_instr *nir_instr_clone(nir_shader *s, const nir_instr *orig);
diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c
index 649d1de224d..c4fc3c86b87 100644
--- a/src/compiler/nir/nir_print.c
+++ b/src/compiler/nir/nir_print.c
@@ -1653,14 +1653,14 @@ nir_print_shader(nir_shader *shader, FILE *fp)
}
char *
-nir_shader_as_str(nir_shader *nir, void *mem_ctx)
+nir_shader_as_str_annotated(nir_shader *nir, struct hash_table *annotations, void *mem_ctx)
{
char *stream_data = NULL;
size_t stream_size = 0;
struct u_memstream mem;
if (u_memstream_open(&mem, &stream_data, &stream_size)) {
FILE *const stream = u_memstream_get(&mem);
- nir_print_shader(nir, stream);
+ nir_print_shader_annotated(nir, stream, annotations);
u_memstream_close(&mem);
}
@@ -1673,6 +1673,12 @@ nir_shader_as_str(nir_shader *nir, void *mem_ctx)
return str;
}
+char *
+nir_shader_as_str(nir_shader *nir, void *mem_ctx)
+{
+ return nir_shader_as_str_annotated(nir, NULL, mem_ctx);
+}
+
void
nir_print_instr(const nir_instr *instr, FILE *fp)
{
@@ -1696,3 +1702,11 @@ nir_print_deref(const nir_deref_instr *deref, FILE *fp)
};
print_deref_link(deref, true, &state);
}
+
+void nir_log_shader_annotated_tagged(enum mesa_log_level level, const char *tag,
+ nir_shader *shader, struct hash_table *annotations)
+{
+ char *str = nir_shader_as_str_annotated(shader, annotations, NULL);
+ _mesa_log_multiline(level, tag, str);
+ ralloc_free(str);
+}
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 0e31f98085b..f1f992e3b29 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -96,6 +96,7 @@ struct intel_perf_query_result;
#include "isl/isl.h"
#include "dev/intel_debug.h"
+#undef MESA_LOG_TAG
#define MESA_LOG_TAG "MESA-INTEL"
#include "util/log.h"
#include "wsi_common.h"
More information about the mesa-commit
mailing list