Package: vulkan
Severity: normal

glslang and spirv-tools are needed for even the most trivial vulkan
development, so
they need to be packaged to make libvulkan-dev more useful.  However,
packaging
them independently is currently problematic because the upstream
repositories are not
versioned, and a given release of Vulkan contains a nasty hard dependency
on a
specific git commit ID from the glslang and spirv-* repositories.
Therefore, I'd like
to propose that these tools be packaged as part of the existing vulkan
source package.

Technically, this is easy, as the existing package already runs a
"get-external.sh" script
which fetches the appropriate git commit from the upstream repositories,
and builds the
tools in order to satisfy the dependency libVkLayer has on them.  So all
that's needed
is to copy the result of this build into new binary packages, rather than
throwing it away.
This also makes for a sane way to version the tools, by assigning them the
version of
the vulkan release they were built for.

I would suggest that new binary packages be created ("vulkan-glslang" and
"vulkan-spirv", for example), rather than simply including the binaries in
libvulkan-dev.
Although it's tempting/easier to simply include them in libvulkan-dev, it
turns out that
glslang and spirv-tools are not explicitly vulkan tools.  They can, in
theory, also be used
for OpenGL/CL, and someone may want to package them independently in the
future
(assuming the upstream versioning problems can be worked out), and this
could cause
a file conflict.  It would be better if that potential conflict wasn't
hidden inside the
libvulkan-dev package, but instead was inside a package which explicitly
names glslang
and spirv, and could make a clean "conflicts-with" target.

Thanks!
-- 
Brett Johnson <br...@linuxturtle.net>

Reply via email to