Skip to content

Commit b79ce5f

Browse files
committed
implement llama backend autoload
1 parent bf354bd commit b79ce5f

15 files changed

+105
-32
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,4 @@ zig-cache
5353
zig-out
5454
*.gguf
5555

56-
godot/bin/lib/*
56+
godot/addons/godot-llama-cpp/lib/*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
@tool
2+
extends EditorPlugin
3+
4+
5+
func _enter_tree():
6+
# Initialization of the plugin goes here.
7+
add_autoload_singleton("__LlamaBackendAutoload", "res://addons/godot-llama-cpp/llama-backend-autoload.gd")
8+
9+
10+
func _exit_tree():
11+
# Clean-up of the plugin goes here.
12+
remove_autoload_singleton("__LlamaBackendAutoload")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
[configuration]
2+
3+
entry_symbol = "example_library_init"
4+
compatibility_minimum = "4.1"
5+
6+
[libraries]
7+
8+
macos.debug = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp-aarch64-macos-none-Debug.dylib"
9+
macos.release = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp-aarch64-macos-none-ReleaseFast.dylib"
10+
windows.debug.x86_32 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.windows.template_debug.x86_32.dll"
11+
windows.release.x86_32 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.windows.template_release.x86_32.dll"
12+
windows.debug.x86_64 = "res://addons/godot-llama-cpp/lib/windows/godot-llama-cpp.dll"
13+
windows.release.x86_64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.windows.template_release.x86_64.dll"
14+
linux.debug.x86_64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.linux.template_debug.x86_64.so"
15+
linux.release.x86_64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.linux.template_release.x86_64.so"
16+
linux.debug.arm64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.linux.template_debug.arm64.so"
17+
linux.release.arm64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.linux.template_release.arm64.so"
18+
linux.debug.rv64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.linux.template_debug.rv64.so"
19+
linux.release.rv64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.linux.template_release.rv64.so"
20+
android.debug.x86_64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.android.template_debug.x86_64.so"
21+
android.release.x86_64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.android.template_release.x86_64.so"
22+
android.debug.arm64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.android.template_debug.arm64.so"
23+
android.release.arm64 = "res://addons/godot-llama-cpp/lib/libgodot-llama-cpp.android.template_release.arm64.so"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class_name LlamaBackendAutoload
2+
3+
extends LlamaBackend
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[plugin]
2+
3+
name="godot-llama-cpp"
4+
description="Use llama.cpp in your godot project."
5+
author="hazelnutcloud"
6+
version="0.0.1"
7+
script="godot-llama-cpp.gd"

godot/bin/example.gdextension

-23
This file was deleted.
File renamed without changes.

godot/huggingface_logo-noborder.svg.import godot/huggingface.svg.import

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
importer="texture"
44
type="CompressedTexture2D"
55
uid="uid://dhjbdhto6je6g"
6-
path="res://.godot/imported/huggingface_logo-noborder.svg-caa815448a9c3d6f9d16244f9e42174d.ctex"
6+
path="res://.godot/imported/huggingface.svg-9363a2c9e9c5c727088a277ba09b758a.ctex"
77
metadata={
88
"vram_texture": false
99
}
1010

1111
[deps]
1212

13-
source_file="res://huggingface_logo-noborder.svg"
14-
dest_files=["res://.godot/imported/huggingface_logo-noborder.svg-caa815448a9c3d6f9d16244f9e42174d.ctex"]
13+
source_file="res://huggingface.svg"
14+
dest_files=["res://.godot/imported/huggingface.svg-9363a2c9e9c5c727088a277ba09b758a.ctex"]
1515

1616
[params]
1717

godot/main.tscn

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[gd_scene load_steps=2 format=3 uid="uid://4qxcq8133fbq"]
2+
3+
[ext_resource type="Texture2D" uid="uid://dhjbdhto6je6g" path="res://huggingface.svg" id="1_aejrq"]
4+
5+
[node name="Node" type="Node"]
6+
7+
[node name="Sprite2D" type="Sprite2D" parent="."]
8+
position = Vector2(571, 299)
9+
texture = ExtResource("1_aejrq")

godot/project.godot

+8
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,11 @@ config_version=5
1313
config/name="godot cpp template"
1414
config/features=PackedStringArray("4.2", "Forward Plus")
1515
config/icon="res://icon.svg"
16+
17+
[autoload]
18+
19+
__LlamaBackendAutoload="*res://addons/godot-llama-cpp/llama-backend-autoload.gd"
20+
21+
[editor_plugins]
22+
23+
enabled=PackedStringArray("res://addons/godot-llama-cpp/plugin.cfg")

src/llama_backend.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include "llama.h"
2+
#include "llama_backend.h"
3+
#include <godot_cpp/core/class_db.hpp>
4+
5+
using namespace godot;
6+
7+
void LlamaBackend::_enter_tree() {
8+
llama_backend_init();
9+
}
10+
11+
void LlamaBackend::_exit_tree() {
12+
llama_backend_free();
13+
}

src/llama_backend.h

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#ifndef LLAMA_BACKEND_H
2+
#define LLAMA_BACKEND_H
3+
4+
#include <godot_cpp/classes/node.hpp>
5+
6+
namespace godot {
7+
class LlamaBackend : public Node {
8+
GDCLASS(LlamaBackend, Node)
9+
10+
protected:
11+
static void _bind_methods(){};
12+
13+
public:
14+
virtual void _enter_tree() override;
15+
virtual void _exit_tree() override;
16+
};
17+
} //namespace godot
18+
19+
#endif

src/llama_context.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ namespace godot {
1212
LlamaModel model;
1313

1414
protected:
15-
static void _bind_methods();
16-
17-
public:
18-
LlamaContext();
19-
~LlamaContext();
15+
static void _bind_methods(){};
2016
};
2117
}
2218

src/llama_model.h

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef LLAMA_MODEL_H
22
#define LLAMA_MODEL_H
33

4+
#include <llama.h>
45
#include <godot_cpp/classes/resource.hpp>
56

67
namespace godot {
@@ -16,6 +17,7 @@ namespace godot {
1617

1718
public:
1819
void load_model( const String &path );
20+
~LlamaModel();
1921
};
2022

2123
} //namespace godot

src/register_types.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#include <godot_cpp/classes/resource_loader.hpp>
77
#include "llama_model.h"
88
#include "llama_model_loader.h"
9+
#include "llama_context.h"
10+
#include "llama_backend.h"
911

1012
using namespace godot;
1113

@@ -21,6 +23,8 @@ void initialize_gdextension_types(ModuleInitializationLevel p_level)
2123
ResourceLoader::get_singleton()->add_resource_format_loader(llamaModelLoader);
2224

2325
ClassDB::register_class<LlamaModel>();
26+
ClassDB::register_class<LlamaContext>();
27+
ClassDB::register_class<LlamaBackend>();
2428
}
2529

2630
void uninitialize_gdextension_types(ModuleInitializationLevel p_level) {

0 commit comments

Comments
 (0)