+DisableComputeShadersTemporarily::DisableComputeShadersTemporarily(bool disable_compute_shaders)
+ : disable_compute_shaders(disable_compute_shaders)
+{
+ init_movit_for_test();
+ saved_compute_shaders_supported = movit_compute_shaders_supported;
+ if (disable_compute_shaders) {
+ movit_compute_shaders_supported = false;
+ }
+}
+
+DisableComputeShadersTemporarily::~DisableComputeShadersTemporarily()
+{
+ movit_compute_shaders_supported = saved_compute_shaders_supported;
+}
+
+bool DisableComputeShadersTemporarily::should_skip()
+{
+ if (disable_compute_shaders) {
+ return false;
+ }
+
+ if (!movit_compute_shaders_supported) {
+ fprintf(stderr, "Compute shaders not supported; skipping.\n");
+ return true;
+ }
+ return false;
+}
+
+#ifdef HAVE_BENCHMARK
+bool DisableComputeShadersTemporarily::should_skip(benchmark::State *benchmark_state)
+{
+ if (disable_compute_shaders) {
+ return false;
+ }
+
+ if (!movit_compute_shaders_supported) {
+ benchmark_state->SkipWithError("Compute shaders not supported");
+ return true;
+ }
+ return false;
+}
+#endif
+