@@ -134,6 +134,10 @@ ifdef GGML_RPC
134134 BUILD_TARGETS += rpc-server
135135endif
136136
137+ ifdef GGML_VULKAN
138+ BUILD_TARGETS += vulkan-shaders-gen
139+ endif
140+
137141ifeq ($(shell sdl2-config --cflags --libs 2>/dev/null) ,)
138142else
139143 BUILD_TARGETS += \
@@ -624,8 +628,8 @@ endif # GGML_CUDA
624628
625629ifdef GGML_VULKAN
626630 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
629633
630634ifdef GGML_VULKAN_CHECK_RESULTS
631635 MK_CPPFLAGS += -DGGML_VULKAN_CHECK_RESULTS
@@ -639,6 +643,10 @@ ifdef GGML_VULKAN_MEMORY_DEBUG
639643 MK_CPPFLAGS += -DGGML_VULKAN_MEMORY_DEBUG
640644endif
641645
646+ ifdef GGML_VULKAN_PERF
647+ MK_CPPFLAGS += -DGGML_VULKAN_PERF
648+ endif
649+
642650ifdef GGML_VULKAN_VALIDATE
643651 MK_CPPFLAGS += -DGGML_VULKAN_VALIDATE
644652endif
@@ -647,10 +655,28 @@ ifdef GGML_VULKAN_RUN_TESTS
647655 MK_CPPFLAGS += -DGGML_VULKAN_RUN_TESTS
648656endif
649657
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+
654680endif # GGML_VULKAN
655681
656682ifdef GGML_HIPBLAS
0 commit comments