[virglrenderer-devel] [PATCH v2 1/4] utils: added some macros for future implems

Nathan Gauer nathan at gauer.org
Fri Jul 27 12:28:25 UTC 2018


This commit adds some macros designed for a future use:
ARRAY_SIZE: gives the size of an array
UNUSED_PARAMETER: cast a parameter to void. Only a bit more explicit.
TRACE_IN/TRACE_OUT: macros available in debug builds. Inspired from
virtio-gpu ones.

RETURN: encapsulates a return and a TRACE_OUT.

Signed-off-by: Nathan Gauer <nathan at gauer.org>
---
 src/Makefile.am   | 31 +++++++++++++------------
 src/util/macros.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 15 deletions(-)
 create mode 100644 src/util/macros.h

diff --git a/src/Makefile.am b/src/Makefile.am
index 76f4162..b42bac0 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -17,21 +17,22 @@ AM_CFLAGS = \
 	$(VISIBILITY_CFLAGS) \
 	$(CODE_COVERAGE_CFLAGS)
 
-libvrend_la_SOURCES = \
-        virgl_hw.h \
-        virgl_protocol.h \
-        vrend_iov.h \
-        vrend_renderer.c \
-        vrend_renderer.h \
-        vrend_shader.c \
-        vrend_shader.h \
-        vrend_object.c \
-        vrend_object.h \
-        vrend_decode.c \
-        vrend_formats.c \
-        vrend_blitter.c \
-        vrend_blitter.h \
-        iov.c
+libvrend_la_SOURCES = 		\
+		  utils/macro.h		\
+        iov.c					\
+        virgl_hw.h 			\
+        virgl_protocol.h 	\
+        vrend_blitter.c 	\
+        vrend_blitter.h 	\
+        vrend_decode.c 		\
+        vrend_formats.c 	\
+        vrend_iov.h 			\
+        vrend_object.c 		\
+        vrend_object.h 		\
+        vrend_renderer.c 	\
+        vrend_renderer.h 	\
+        vrend_shader.c 		\
+        vrend_shader.h 		\
 
 if HAVE_EPOXY_EGL
 libvrend_la_SOURCES += \
diff --git a/src/util/macros.h b/src/util/macros.h
new file mode 100644
index 0000000..3d6ff2c
--- /dev/null
+++ b/src/util/macros.h
@@ -0,0 +1,58 @@
+#ifndef UTIL_MACRO_H
+#define UTIL_MACRO_H
+
+#define UNUSED_PARAMETER(Param) (void)(Param)
+#define ARRAY_SIZE(Array) (sizeof(Array) / sizeof((Array)[0]))
+
+#ifdef DEBUG
+
+/* Loggin/Tracing related macros.
+ *    - LOG_LEVEL can be changed by redefining the MIN_LOG_LEVEL macro.
+ *    - TRACE_IN and TRACE_OUT are disabled on non-debug builds.
+ * note: tracing is disabled on release builds
+ */
+
+#define LOG_LEVEL_VERBOSE 0
+#define LOG_LEVEL_INFO    1
+#define LOG_LEVEL_WARNING 2
+#define LOG_LEVEL_ERROR   3
+#define LOG_LEVEL_NONE    10
+
+
+/* Change this define to update the tracing level */
+#ifdef DEBUG
+   #define MIN_LOG_LEVEL LOG_LEVEL_INFO
+#else
+   #define MIN_LOG_LEVEL LOG_LEVEL_WARNING
+#endif
+
+#define PRINT_LOG(LogLevel, Expression)                     \
+   do {                                                     \
+      if ((LogLevel) >= MIN_LOG_LEVEL) {                    \
+         printf Expression;                                 \
+      }                                                     \
+   } while (0)
+
+#ifdef DEBUG
+
+   #define TRACE_IN()   \
+      PRINT_LOG(LOG_LEVEL_VERBOSE, ("--> %s\n", __func__))
+
+   #define TRACE_OUT(ReturnValue)  \
+      PRINT_LOG(LOG_LEVEL_VERBOSE, ("<-- %s (%d)\n", __func__, (ReturnValue)))
+
+   #define TRACE_OUTV() \
+      PRINT_LOG(LOG_LEVEL_VERBOSE, ("<-- %s\n", __func__))
+
+#else
+   #define TRACE_IN()
+   #define TRACE_OUT(ReturnValue)
+   #define TRACE_OUTV()
+#endif
+
+
+#define RETURN(ReturnValue)   \
+   TRACE_OUT(ReturnValue);    \
+   return ReturnValue
+
+#endif
-- 
2.18.0



More information about the virglrenderer-devel mailing list