@@ -134,6 +134,10 @@ ifdef GGML_RPC
134
134
BUILD_TARGETS += rpc-server
135
135
endif
136
136
137
+ ifdef GGML_VULKAN
138
+ BUILD_TARGETS += vulkan-shaders-gen
139
+ endif
140
+
137
141
ifeq ($(shell sdl2-config --cflags --libs 2>/dev/null) ,)
138
142
else
139
143
BUILD_TARGETS += \
@@ -624,8 +628,8 @@ endif # GGML_CUDA
624
628
625
629
ifdef GGML_VULKAN
626
630
MK_CPPFLAGS += -DGGML_USE_VULKAN
627
- MK_LDFLAGS += -lvulkan
628
- OBJ_GGML += ggml/src/ggml-vulkan.o
631
+ MK_LDFLAGS += $(shell pkg-config --libs vulkan)
632
+ OBJ_GGML += ggml/src/ggml-vulkan.o ggml/src/ggml-vulkan-shaders.o
629
633
630
634
ifdef GGML_VULKAN_CHECK_RESULTS
631
635
MK_CPPFLAGS += -DGGML_VULKAN_CHECK_RESULTS
@@ -639,6 +643,10 @@ ifdef GGML_VULKAN_MEMORY_DEBUG
639
643
MK_CPPFLAGS += -DGGML_VULKAN_MEMORY_DEBUG
640
644
endif
641
645
646
+ ifdef GGML_VULKAN_PERF
647
+ MK_CPPFLAGS += -DGGML_VULKAN_PERF
648
+ endif
649
+
642
650
ifdef GGML_VULKAN_VALIDATE
643
651
MK_CPPFLAGS += -DGGML_VULKAN_VALIDATE
644
652
endif
@@ -647,10 +655,28 @@ ifdef GGML_VULKAN_RUN_TESTS
647
655
MK_CPPFLAGS += -DGGML_VULKAN_RUN_TESTS
648
656
endif
649
657
650
- ggml/src/ggml-vulkan.o : \
651
- ggml/src/ggml-vulkan.cpp \
652
- ggml/include/ggml-vulkan.h
653
- $(CXX ) $(CXXFLAGS ) -c $< -o $@
658
+ GLSLC_CMD = glslc
659
+ _ggml_vk_genshaders_cmd = $(shell pwd) /vulkan-shaders-gen
660
+ _ggml_vk_header = ggml/src/ggml-vulkan-shaders.hpp
661
+ _ggml_vk_source = ggml/src/ggml-vulkan-shaders.cpp
662
+ _ggml_vk_input_dir = ggml/src/vulkan-shaders
663
+ _ggml_vk_shader_deps = $(echo $(_ggml_vk_input_dir ) /*.comp )
664
+
665
+ ggml/src/ggml-vulkan.o : ggml/src/ggml-vulkan.cpp ggml/include/ggml-vulkan.h $(_ggml_vk_header ) $(_ggml_vk_source )
666
+ $(CXX ) $(CXXFLAGS ) $(shell pkg-config --cflags vulkan) -c $< -o $@
667
+
668
+ $(_ggml_vk_header ) : $(_ggml_vk_source )
669
+
670
+ $(_ggml_vk_source ) : $(_ggml_vk_shader_deps ) vulkan-shaders-gen
671
+ $(_ggml_vk_genshaders_cmd ) \
672
+ --glslc $(GLSLC_CMD ) \
673
+ --input-dir $(_ggml_vk_input_dir ) \
674
+ --target-hpp $(_ggml_vk_header ) \
675
+ --target-cpp $(_ggml_vk_source )
676
+
677
+ vulkan-shaders-gen : ggml/src/vulkan-shaders/vulkan-shaders-gen.cpp
678
+ $(CXX ) $(CXXFLAGS ) -o $@ $(LDFLAGS ) ggml/src/vulkan-shaders/vulkan-shaders-gen.cpp
679
+
654
680
endif # GGML_VULKAN
655
681
656
682
ifdef GGML_HIPBLAS
0 commit comments