[vulkan] Switch to qfcc for the vertex shaders

Things aren't quite working yet (currently due to buffer blocks not
getting marked NonWritable (or maybe they should be BufferBlock)), but
this gets shader compilation via qfcc working at all, including
automatic dependencies.
This commit is contained in:
Bill Currie 2025-02-03 20:47:10 +09:00
parent e2631db4eb
commit 2c7a6c8a87
2 changed files with 50 additions and 25 deletions

View file

@ -99,6 +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
QLINK=$(QFCC) $(QCFLAGS) $(QCLINKFLAGS)
MKDIR_P = @MKDIR_P@
@ -108,6 +109,12 @@ qfcc_compile=\
sed -i -e '1s@:@: $(QFCC_DEP)@' $$depbase.Tqo &&\
$(am__mv) $$depbase.Tqo $$depbase.Qo
qfcc_spirv=\
$(V_QFCC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
$(QSPIRV) $(1) -MT $@ -MD -MP -MF $$depbase.Tqo -c -o $@ $< &&\
sed -i -e '1s@:@: $(QFCC_DEP)@' $$depbase.Tqo &&\
$(am__mv) $$depbase.Tqo $$depbase.Qo
am__mv = mv -f
SUFFIXES=.o .r .pas
@ -117,8 +124,11 @@ SUFFIXES=.o .r .pas
$(qfcc_compile)
qcautodep = $(join $(addsuffix $(DEPDIR)/,$(dir $(basename $(1)))),$(addsuffix $(2).Qo,$(notdir $(basename $(basename $(1))))))
spvcautodep = $(join $(addsuffix $(DEPDIR)/,$(dir $(basename $(1)))),$(addsuffix $(2).Qo,$(notdir $(1))))
spvautoc = $(addsuffix $(2).spvc,$(1))
r_depfiles_remade=
pas_depfiles_remade=
spvc_depfiles_remade=
V_PY = $(V_PY_@AM_V@)
V_PY_ = $(V_PY_@AM_DEFAULT_V@)
@ -153,6 +163,10 @@ SUFFICES += .plist .plc
@$(mkdir_p) $(builddir)/`dirname $@`
$(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 $@ $<
sharepath = @sharepath@
shaderdir = @shaderdir@
shader_DATA =
@ -171,7 +185,7 @@ include qw/Makemodule.am
include tools/Makemodule.am
include ruamoko/Makemodule.am
DISTCLEANFILES += $(r_depfiles_remade) $(pas_depfiles_remade)
DISTCLEANFILES += $(r_depfiles_remade) $(pas_depfiles_remade) $(spvc_depfiles_remade)
CLEANFILES += $(shader_DATA)
$(r_depfiles_remade):
@ -182,7 +196,12 @@ $(pas_depfiles_remade):
$(MKDIR_P) $(@D)
echo '$@' | sed -e 's@\$(DEPDIR)/@@' -e 's@\(.*\)\.Qo$$@\1.o: $(top_srcdir)/\1.pas $(QFCC)@' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade) $(r_depfiles_remade) $(pas_depfiles_remade)
$(spvc_depfiles_remade):
$(MKDIR_P) $(@D)
echo '$@' | sed -e 's@\$(DEPDIR)/@@' -e 's@\(.*\)\.Qo$$@\1.spvc: $(top_srcdir)/\1 $(QFCC)@' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade) $(r_depfiles_remade) \
$(pas_depfiles_remade) $(spvc_depfiles_remade)
echo findme $(ruamoko_gui_libgui_a_dep)
changelog: ChangeLog

View file

@ -507,37 +507,52 @@ $(fisheye_c): $(fisheye_src) $(matrices_h)
$(waterwarp_c): $(waterwarp_src) $(matrices_h)
vkshader_c = \
$(slice_c) \
$(linev_c) \
vkshader_src_vert = \
$(slice_src) \
$(linev_src) \
$(particlev_src) \
$(sprite_gbufv_src) \
$(sprite_depthv_src) \
$(twodv_src) \
$(quakebspv_src) \
$(bsp_depth_src) \
$(bsp_gbufv_src) \
$(bsp_shadow_src) \
$(light_entid_src) \
$(light_flat_src) \
$(light_splatv_src) \
$(aliasv_src) \
$(alias_depth_src) \
$(alias_shadow_src) \
$(iqmv_src) \
$(iqm_shadow_src) \
$(passthrough_src) \
$(fstriangle_src) \
$(fstrianglest_src)
vkshader_c_vert=$(call spvautoc,$(vkshader_src_vert))
vkshader_dep = $(call spvcautodep,$(vkshader_src_vert))
include $(vkshader_dep) # am--include-marker
spvc_depfiles_remade += $(vkshader_dep)
vkshader_c = $(vkshader_c_vert) \
$(linef_c) \
$(partphysicsc_c) \
$(partupdatec_c) \
$(particlev_c) \
$(particleg_c) \
$(particlef_c) \
$(spritef_c) \
$(sprite_gbufv_c) \
$(sprite_gbuff_c) \
$(sprite_depthv_c) \
$(sprite_depthf_c) \
$(twodv_c) \
$(twodf_c) \
$(twod_depthf_c) \
$(quakebspv_c) \
$(quakebspf_c) \
$(bsp_depth_c) \
$(bsp_gbufv_c) \
$(bsp_gbufg_c) \
$(bsp_gbuff_c) \
$(bsp_shadow_c) \
$(bsp_skyf_c) \
$(bsp_turbf_c) \
$(debug_c) \
$(entid_c) \
$(light_entid_c) \
$(light_flat_c) \
$(light_splatv_c) \
$(light_splatf_c) \
$(light_debug_c) \
$(light_oit_c) \
@ -547,20 +562,11 @@ vkshader_c = \
$(lighting_planef_c) \
$(composef_c) \
$(compose_fwdf_c) \
$(aliasv_c) \
$(alias_depth_c) \
$(qskin_fwdf_c) \
$(qskin_gbuf_c) \
$(alias_shadow_c) \
$(iqmv_c) \
$(iqm_shadow_c) \
$(output_c) \
$(passthrough_c) \
$(fstriangle_c) \
$(fstrianglest_c) \
$(gridplane_c) \
$(pushcolor_c) \
$(shadow_c) \
$(fisheye_c) \
$(waterwarp_c)