# iter13 XFB probe — build glue.

CC ?= cc
CFLAGS ?= -O0 -g -Wall -Wextra -std=c11
LDLIBS ?= -lvulkan

PROBE = probe_xfb
NOPROBE = probe_xfb_nodraw
SRC   = probe_xfb.c
NOSRC = probe_xfb_nodraw.c
VERT  = probe_xfb.vert
VSPV  = probe_xfb.vert.spv

all: $(PROBE) $(NOPROBE) $(VSPV)

$(PROBE): $(SRC)
	$(CC) $(CFLAGS) -o $@ $< $(LDLIBS)

$(NOPROBE): $(NOSRC)
	$(CC) $(CFLAGS) -o $@ $< $(LDLIBS)

# glslangValidator + xfb-aware compile. The -V flag enables Vulkan SPIR-V output.
# xfb_buffer / xfb_offset / xfb_stride decorations are honored when the SPIR-V
# is targeted at Vulkan (which is the default for -V).
$(VSPV): $(VERT)
	glslangValidator -V $< -o $@

run: all
	PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1 ./$(PROBE)

run-patched-mesa: all
	VK_ICD_FILENAMES=/usr/lib/panvk-bifrost/icd.json \
	PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1 \
	./$(PROBE)

clean:
	rm -f $(PROBE) $(VSPV)

.PHONY: all run run-patched-mesa clean
