Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-01-12 14:00:48 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-01-12 14:21:30 +0300
commitac7aefd7c2bc0e87b2787e374d414f18b7887baa (patch)
tree9dddc76953051052793639d4d59a934d1e97f250 /intern/cycles/util/util_debug.h
parentc6c223ade6470e7a9b61ea4a4a3ab6ed62abe79d (diff)
Cycles: Use special debug panel to fine-tune debug flags
This panel is only visible when debug_value is set to 256 and has no affect in other cases. However, if debug value is not set to this value, environment variables will be used to control which features are enabled, so there's no visible changes to anyone in fact. There are some changes needed to prevent devices re-enumeration on every Cycles session create. Reviewers: juicyfruit, lukasstockner97, dingto, brecht Reviewed By: lukasstockner97, dingto Differential Revision: https://developer.blender.org/D1720
Diffstat (limited to 'intern/cycles/util/util_debug.h')
-rw-r--r--intern/cycles/util/util_debug.h116
1 files changed, 114 insertions, 2 deletions
diff --git a/intern/cycles/util/util_debug.h b/intern/cycles/util/util_debug.h
index 6b61a49fcc3..53b1ea42164 100644
--- a/intern/cycles/util/util_debug.h
+++ b/intern/cycles/util/util_debug.h
@@ -17,7 +17,119 @@
#ifndef __UTIL_DEBUG_H__
#define __UTIL_DEBUG_H__
-#include <assert.h>
+#include <cassert>
+#include <iostream>
-#endif /* __UTIL_DEBUG_H__ */
+CCL_NAMESPACE_BEGIN
+
+/* Global storage for all sort of flags used to fine-tune behavior of particular
+ * areas for the development purposes, without officially exposing settings to
+ * the interface.
+ */
+class DebugFlags {
+public:
+ /* Descriptor of CPU feature-set to be used. */
+ struct CPU {
+ CPU();
+
+ /* Reset flags to their defaults. */
+ void reset();
+
+ /* Flags describing which instructions sets are allowed for use. */
+ bool avx2;
+ bool avx;
+ bool sse41;
+ bool sse3;
+ bool sse2;
+ };
+
+ /* Descriptor of OpenCL feature-set to be used. */
+ struct OpenCL {
+ OpenCL();
+
+ /* Reset flags to their defaults. */
+ void reset();
+
+ /* Available device types.
+ * Only gives a hint which devices to let user to choose from, does not
+ * try to use any sort of optimal device or so.
+ */
+ enum DeviceType {
+ /* None of OpenCL devices will be used. */
+ DEVICE_NONE,
+ /* All OpenCL devices will be used. */
+ DEVICE_ALL,
+ /* Default system OpenCL device will be used. */
+ DEVICE_DEFAULT,
+ /* Host processor will be used. */
+ DEVICE_CPU,
+ /* GPU devices will be used. */
+ DEVICE_GPU,
+ /* Dedicated OpenCL accelerator device will be used. */
+ DEVICE_ACCELERATOR,
+ };
+
+ /* Available kernel types. */
+ enum KernelType {
+ /* Do automated guess which kernel to use, based on the officially
+ * supported GPUs and such.
+ */
+ KERNEL_DEFAULT,
+ /* Force mega kernel to be used. */
+ KERNEL_MEGA,
+ /* Force split kernel to be used. */
+ KERNEL_SPLIT,
+ };
+
+ /* Requested device type. */
+ DeviceType device_type;
+
+ /* Requested kernel type. */
+ KernelType kernel_type;
+
+ /* Use debug version of the kernel. */
+ bool debug;
+ };
+ /* Get instance of debug flags registry. */
+ static DebugFlags& get()
+ {
+ static DebugFlags instance;
+ return instance;
+ }
+
+ /* Reset flags to their defaults. */
+ void reset();
+
+ /* Requested CPU flags. */
+ CPU cpu;
+
+ /* Requested OpenCL flags. */
+ OpenCL opencl;
+
+private:
+ DebugFlags();
+
+#if (__cplusplus > 199711L)
+public:
+ DebugFlags(DebugFlags const& /*other*/) = delete;
+ void operator=(DebugFlags const& /*other*/) = delete;
+#else
+private:
+ DebugFlags(DebugFlags const& /*other*/);
+ void operator=(DebugFlags const& /*other*/);
+#endif
+};
+
+typedef DebugFlags& DebugFlagsRef;
+
+inline DebugFlags& DebugFlags() {
+ return DebugFlags::get();
+}
+
+std::ostream& operator <<(std::ostream &os,
+ const DebugFlagsRef debug_flags);
+
+CCL_NAMESPACE_END
+
+#endif /* __UTIL_DEBUG_H__ */