Apparently this is allowed, and the CTS started doing this more often recently which resulted in frequent hangs running the entire CTS. I copied the code to create an empty FS from radv.
6d513eb0db2 tu: Support pipelines without a fragment shader
src/freedreno/vulkan/tu_pipeline.c | 2 +-
src/freedreno/vulkan/tu_shader.c | 26 +++++++++++++++++++-------
2 files changed, 20 insertions(+), 8 deletions(-)