From 67003c146aba346f28051b96a68e7b95a6c2f370 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sun, 16 Feb 2025 19:03:11 +0900 Subject: [PATCH] [vulkan] Use qfcc for compute shaders While there's still a duplicate type bug causing validation failure for partupdate.comp, everything builds. Also clean up a few build issues surrounding shaders. --- Makefile.am | 16 ++++++++-------- libs/video/renderer/Makemodule.am | 13 +++++++++---- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index 08d613323..034cf207d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -99,7 +99,7 @@ QCFLAGS=-qq -O -g -Werror -Wall -Wno-integer-divide QCPPFLAGS=$(QCSYSTEM) QCLINKFLAGS=--no-default-paths -Lruamoko/lib QCOMPILE=$(QFCC) $(QCFLAGS) $(QCPPFLAGS) -QSPIRV=$(QFCC) -q -Cc-array,target=spir-v -O +QSPIRV=$(QCOMPILE) -Cc-array,target=spir-v QLINK=$(QFCC) $(QCFLAGS) $(QCLINKFLAGS) MKDIR_P = @MKDIR_P@ @@ -110,7 +110,7 @@ qfcc_compile=\ $(am__mv) $$depbase.Tqo $$depbase.Qo qfcc_spirv=\ - $(V_QFCC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(V_QFCC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.spvc$$||'`;\ $(QSPIRV) $(1) -MT $@ -MD -MP -MF $$depbase.Tqo -c -o $@ $< &&\ sed -i -e '1s@:@: $(QFCC_DEP)@' $$depbase.Tqo &&\ $(am__mv) $$depbase.Tqo $$depbase.Qo @@ -164,16 +164,16 @@ SUFFICES += .plist .plc $(V_GLSLANG)(((($(GLSLANGVALIDATOR) --vn `basename $< | tr . _` -V $< -o $@; echo $$? >&3) | sed -e '1d' 1>&2) 3>&1) | (read xs; exit $$xs)) %.vert.spvc: %.vert - @$(mkdir_p) $(builddir)/`dirname $@` - $(V_QFCC)$(QFCC) -q -c -O -Cc-array,target=spir-v -o $@ $< + $(qfcc_spirv) %.geom.spvc: %.geom - @$(mkdir_p) $(builddir)/`dirname $@` - $(V_QFCC)$(QFCC) -q -c -O -Cc-array,target=spir-v -o $@ $< + $(qfcc_spirv) %.frag.spvc: %.frag - @$(mkdir_p) $(builddir)/`dirname $@` - $(V_QFCC)$(QFCC) -q -c -O -Cc-array,target=spir-v -o $@ $< + $(qfcc_spirv) + +%.comp.spvc: %.comp + $(qfcc_spirv) sharepath = @sharepath@ shaderdir = @shaderdir@ diff --git a/libs/video/renderer/Makemodule.am b/libs/video/renderer/Makemodule.am index c92e1c2fb..19d2d30c9 100644 --- a/libs/video/renderer/Makemodule.am +++ b/libs/video/renderer/Makemodule.am @@ -107,7 +107,7 @@ shader_gen = \ $(glslshaderpath)/quakeforge.slc \ $(glslshaderpath)/sgustavson.slc -SUFFIXES += .frag .vert .spv .spvc .fc .vc .slc .glsl +SUFFIXES += .geom .comp .frag .vert .spv .spvc .fc .vc .slc .glsl .glsl.slc: $(V_SED)sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/\\n"/' $< > $@.t &&\ $(am__mv) $@.t $@ @@ -565,18 +565,23 @@ vkshader_src_frag = \ $(fisheye_src) \ $(waterwarp_src) +vkshader_src_comp = \ + $(partphysicsc_src) \ + $(partupdatec_src) + vkshader_c_vert=$(call spvautoc,$(vkshader_src_vert)) vkshader_c_geom=$(call spvautoc,$(vkshader_src_geom)) vkshader_c_frag=$(call spvautoc,$(vkshader_src_frag)) +vkshader_c_comp=$(call spvautoc,$(vkshader_src_comp)) -vkshader_src = $(vkshader_src_vert) $(vkshader_src_geom) $(vkshader_src_frag) +vkshader_src = $(vkshader_src_vert) $(vkshader_src_geom) $(vkshader_src_frag) \ + $(vkshader_src_comp) vkshader_dep = $(call spvcautodep, $(vkshader_src)) include $(vkshader_dep) # am--include-marker spvc_depfiles_remade += $(vkshader_dep) vkshader_c = $(vkshader_c_vert) $(vkshader_c_geom) $(vkshader_c_frag) \ - $(partphysicsc_c) \ - $(partupdatec_c) + $(vkshader_c_comp) V_VKGEN = $(V_VKGEN_@AM_V@) V_VKGEN_ = $(V_VKGEN_@AM_DEFAULT_V@)