summaryrefslogtreecommitdiffstats
path: root/src/shell-glsl-effect.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 15:07:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 15:07:22 +0000
commitf9d480cfe50ca1d7a0f0b5a2b8bb9932962bfbe7 (patch)
treece9e8db2d4e8799780fa72ae8f1953039373e2ee /src/shell-glsl-effect.h
parentInitial commit. (diff)
downloadgnome-shell-f9d480cfe50ca1d7a0f0b5a2b8bb9932962bfbe7.tar.xz
gnome-shell-f9d480cfe50ca1d7a0f0b5a2b8bb9932962bfbe7.zip
Adding upstream version 3.38.6.upstream/3.38.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--src/shell-glsl-effect.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/shell-glsl-effect.h b/src/shell-glsl-effect.h
new file mode 100644
index 0000000..d943cef
--- /dev/null
+++ b/src/shell-glsl-effect.h
@@ -0,0 +1,56 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+#ifndef __SHELL_GLSL_EFFECT_H__
+#define __SHELL_GLSL_EFFECT_H__
+
+#include "st.h"
+#include <gtk/gtk.h>
+
+/**
+ * ShellSnippetHook:
+ * Temporary hack to work around Cogl not exporting CoglSnippetHook in
+ * the 1.0 API. Don't use.
+ */
+typedef enum {
+ /* Per pipeline vertex hooks */
+ SHELL_SNIPPET_HOOK_VERTEX = 0,
+ SHELL_SNIPPET_HOOK_VERTEX_TRANSFORM,
+
+ /* Per pipeline fragment hooks */
+ SHELL_SNIPPET_HOOK_FRAGMENT = 2048,
+
+ /* Per layer vertex hooks */
+ SHELL_SNIPPET_HOOK_TEXTURE_COORD_TRANSFORM = 4096,
+
+ /* Per layer fragment hooks */
+ SHELL_SNIPPET_HOOK_LAYER_FRAGMENT = 6144,
+ SHELL_SNIPPET_HOOK_TEXTURE_LOOKUP
+} ShellSnippetHook;
+
+#define SHELL_TYPE_GLSL_EFFECT (shell_glsl_effect_get_type ())
+G_DECLARE_DERIVABLE_TYPE (ShellGLSLEffect, shell_glsl_effect,
+ SHELL, GLSL_EFFECT, ClutterOffscreenEffect)
+
+struct _ShellGLSLEffectClass
+{
+ ClutterOffscreenEffectClass parent_class;
+
+ CoglPipeline *base_pipeline;
+
+ void (*build_pipeline) (ShellGLSLEffect *effect);
+};
+
+void shell_glsl_effect_add_glsl_snippet (ShellGLSLEffect *effect,
+ ShellSnippetHook hook,
+ const char *declarations,
+ const char *code,
+ gboolean is_replace);
+
+int shell_glsl_effect_get_uniform_location (ShellGLSLEffect *effect,
+ const char *name);
+void shell_glsl_effect_set_uniform_float (ShellGLSLEffect *effect,
+ int uniform,
+ int n_components,
+ int total_count,
+ const float *value);
+
+#endif /* __SHELL_GLSL_EFFECT_H__ */