aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/pkg/opengl/extensions.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/pkg/opengl/extensions.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/pkg/opengl/extensions.zig')
-rw-r--r--vendor/libghostty-vt/pkg/opengl/extensions.zig32
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/pkg/opengl/extensions.zig b/vendor/libghostty-vt/pkg/opengl/extensions.zig
new file mode 100644
index 00000000..5fdbada9
--- /dev/null
+++ b/vendor/libghostty-vt/pkg/opengl/extensions.zig
@@ -0,0 +1,32 @@
+const std = @import("std");
+const c = @import("c.zig").c;
+const errors = @import("errors.zig");
+const glad = @import("glad.zig");
+
+/// Returns the number of extensions.
+pub fn len() !u32 {
+ var n: c.GLint = undefined;
+ glad.context.GetIntegerv.?(c.GL_NUM_EXTENSIONS, &n);
+ try errors.getError();
+ return @intCast(n);
+}
+
+/// Returns an iterator for the extensions.
+pub fn iterator() !Iterator {
+ return Iterator{ .len = try len() };
+}
+
+/// Iterator for the available extensions.
+pub const Iterator = struct {
+ /// The total number of extensions.
+ len: c.GLuint = 0,
+ i: c.GLuint = 0,
+
+ pub fn next(self: *Iterator) !?[]const u8 {
+ if (self.i >= self.len) return null;
+ const res = glad.context.GetStringi.?(c.GL_EXTENSIONS, self.i);
+ try errors.getError();
+ self.i += 1;
+ return std.mem.sliceTo(res, 0);
+ }
+};