@@ -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 += \
@@ -626,8 +630,8 @@ endif # GGML_CUDA
626
630
627
631
ifdef GGML_VULKAN
628
632
MK_CPPFLAGS += -DGGML_USE_VULKAN
629
- MK_LDFLAGS += -lvulkan
630
- OBJ_GGML += ggml/src/ggml-vulkan.o
633
+ MK_LDFLAGS += $(shell pkg-config --libs vulkan)
634
+ OBJ_GGML += ggml/src/ggml-vulkan.o ggml/src/ggml-vulkan-shaders.o
631
635
632
636
ifdef GGML_VULKAN_CHECK_RESULTS
633
637
MK_CPPFLAGS += -DGGML_VULKAN_CHECK_RESULTS
@@ -641,6 +645,10 @@ ifdef GGML_VULKAN_MEMORY_DEBUG
641
645
MK_CPPFLAGS += -DGGML_VULKAN_MEMORY_DEBUG
642
646
endif
643
647
648
+ ifdef GGML_VULKAN_PERF
649
+ MK_CPPFLAGS += -DGGML_VULKAN_PERF
650
+ endif
651
+
644
652
ifdef GGML_VULKAN_VALIDATE
645
653
MK_CPPFLAGS += -DGGML_VULKAN_VALIDATE
646
654
endif
@@ -649,10 +657,28 @@ ifdef GGML_VULKAN_RUN_TESTS
649
657
MK_CPPFLAGS += -DGGML_VULKAN_RUN_TESTS
650
658
endif
651
659
652
- ggml/src/ggml-vulkan.o : \
653
- ggml/src/ggml-vulkan.cpp \
654
- ggml/include/ggml-vulkan.h
655
- $(CXX ) $(CXXFLAGS ) -c $< -o $@
660
+ GLSLC_CMD = glslc
661
+ _ggml_vk_genshaders_cmd = $(shell pwd) /vulkan-shaders-gen
662
+ _ggml_vk_header = ggml/src/ggml-vulkan-shaders.hpp
663
+ _ggml_vk_source = ggml/src/ggml-vulkan-shaders.cpp
664
+ _ggml_vk_input_dir = ggml/src/vulkan-shaders
665
+ _ggml_vk_shader_deps = $(echo $(_ggml_vk_input_dir ) /*.comp )
666
+
667
+ ggml/src/ggml-vulkan.o : ggml/src/ggml-vulkan.cpp ggml/include/ggml-vulkan.h $(_ggml_vk_header ) $(_ggml_vk_source )
668
+ $(CXX ) $(CXXFLAGS ) $(shell pkg-config --cflags vulkan) -c $< -o $@
669
+
670
+ $(_ggml_vk_header ) : $(_ggml_vk_source )
671
+
672
+ $(_ggml_vk_source ) : $(_ggml_vk_shader_deps ) vulkan-shaders-gen
673
+ $(_ggml_vk_genshaders_cmd ) \
674
+ --glslc $(GLSLC_CMD ) \
675
+ --input-dir $(_ggml_vk_input_dir ) \
676
+ --target-hpp $(_ggml_vk_header ) \
677
+ --target-cpp $(_ggml_vk_source )
678
+
679
+ vulkan-shaders-gen : ggml/src/vulkan-shaders/vulkan-shaders-gen.cpp
680
+ $(CXX ) $(CXXFLAGS ) -o $@ $(LDFLAGS ) ggml/src/vulkan-shaders/vulkan-shaders-gen.cpp
681
+
656
682
endif # GGML_VULKAN
657
683
658
684
ifdef GGML_HIPBLAS
0 commit comments