spirv: Let spirv2nir find out the shader to use
authorCaio Oliveira <caio.oliveira@intel.com>
Thu, 28 Sep 2023 09:02:55 +0000 (02:02 -0700)
committerMarge Bot <emma+marge@anholt.net>
Mon, 23 Oct 2023 22:42:45 +0000 (22:42 +0000)
commit9dcc74e5579a5182959ab36454c6ae97ff814784
tree9dc8ebe99378f63214d72187c687fc4bfbc69e02
parentc4734714ce3c10e3400a9a15b6959a5a7395a91d
spirv: Let spirv2nir find out the shader to use

Previous behavior was to default to "main"/fs, this wasn't nice
when the SPIR-V module had a single shader that didn't match that spec.

New behavior is to look at the available shaders:

- if there's only one, use just use it
- if multiple, narrow down using --stage and --entry as criteria
- if still multiple after narrowing down, print the list and fail

Note you can use just one --stage or --entry if that already narrows
down to a single match.  Note that in SPIR-V it is valid to have a
shader module with two shaders sharing the same entry-point name but
different stages.  Because of that in rare cases both --stage and
--entry will be needed.

This patch should remove the need of using --stage and --entry for most
of the uses of spirv2nir.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25461>
src/compiler/spirv/spirv2nir.c