Dylan Baker
55158bed7f
util/glsl2spirv: only copy the input file if we're going to change it
...
Should make the build slightly faster by only copying when we actually
need to, and otherwise pointing at the original source
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30132 >
2024-07-23 11:07:04 +00:00
Dylan Baker
36160c967c
util/glsl2spirv: fixup the generated depfile when copying sources
...
So that the depfile contains a reference to the original source rather
than the copied one. This is necessary to avoid ninja not finding the
copy and causing spurious rebuilds when the copy has been removed, as
well as correctly tracking changes to the input files.
fixes: 46644ba371
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30132 >
2024-07-23 11:07:03 +00:00
Dylan Baker
46644ba371
meson: use glslang --depfile argument when possible
...
This reduces the amount of manual dependency tracking developers need to
do. This is turned on if glslang >= 11.3.0 is used, or 11.9.0 on
Windows, but otherwise the status quo is maintained. This means I have
not removed any use of `depend_files`. We could make make these hard
requirements and remove the use of `depend_files` too.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28329 >
2024-05-20 17:34:17 +00:00
Lionel Landwerlin
da1e39faa4
util/glsl2spirv: add ability to pass defines
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Tested-by: Felix DeGrood <felix.j.degrood@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25361 >
2023-10-20 13:07:53 +00:00
Lionel Landwerlin
234505f013
util/glsl2spirv: add support for include directive
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Ivan Briano <ivan.briano@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20497 >
2023-03-03 11:30:54 +00:00
Chad Versace
bca22a6578
util/glsl2spirv: Fix build with Python 3.6
...
ChromeOS still uses Python 3.6, but the glsl2spirv script uses module
'__future__.annotations', introduced in Python 3.7. Fix the build by
removing module, but otherwise preserve the type annotations.
Fixes: 949c3b55db ("util/glsl2spirv: add type annotations")
Acked-by: Eric Engestrom <eric@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20237 >
2023-01-25 21:21:17 +00:00
Lionel Landwerlin
5ebf72c44c
util/glsl2spirv: don't store preprocessed files in source tree
...
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Reviewed-by: Dylan Baker <dylan.c.baker@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19893 >
2022-11-22 12:25:12 +00:00
Dylan Baker
41a929d94c
util/glsl2spirv: pass path to glslangValidator into the script
...
This allows users to override the location of glslang using normal meson
mechanisms.
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
9a85d2ed98
util/glsl2spirv: cleanup list extension
...
- consistently use list.extend instead of list +=, which has gotchas
- condense list extension calls when possible
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
9a165945a9
util/glsl2spirv: use f-strings
...
Which are both faster and easier to read
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
7c88c3a05b
util/glsl2spirv: use if x in str instead of str.find
...
The latter is only idiomatically used when a start and/or stop position
is required.
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
5488fa80dd
util/glsl2spirv: simplify subprocess handling
...
Since we're not doing anything fancy, we can just use `subprocess.run`.
I've also removed the custom error class, we're not going to catch it,
so just printing and exiting is fine.
v2:
- Print stdout as well as stderr in case of a glslang failure
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
87c83c041a
util/glsl2spirv: close resources as soon as possible
...
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
949c3b55db
util/glsl2spirv: add type annotations
...
Which are all clean
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
c01cd8cad1
util/glsl2spirv: add some error handling for unexpected code paths
...
We expect that convert_to_static_variable and override_version will find
and replace something, so let's fail loudly if they don't.
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
6a5863df82
util/glsl2spriv: make --vn required
...
I'm not 100% sure whether it's right to make --vn required, or to avoid
the static conversion, but this seems correct. Mypy (type checking
coming soon) points out that if --vn is None then the
convert_to_static_variable function will fail. Our one use of this sets
--vn, so there is no change there. Making --vn required
ensures that it will never be None, avoiding the problem.
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
4ffa8a9ac0
util/glsl2spirv: fix appending extra flags
...
The variable is called `extra`, but what's written is `extra - flags`,
and `flags` is undefined, so if the variable was ever passed there would
be an uncaught exception.
fixes: 9786d9ef2a
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
041d9ac3dc
util/glsl2spirv: let argparse actually enforce the restrictions we've set
...
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
f9df046436
util/glsl2spirv: drop inconsistent use of io.open
...
In Python 3 (the only python we support) `io.open` is an alias of the
builtin `open` function, so it's not getting us anything, and we're not
using it consistently.
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Dylan Baker
76e3b482be
util/glsl2spirv: fix type error in argument handling
...
args.Olib is set to `store_true`, which means it will always be `True`
or `False`, this means that the we always, unconditionally, add
`--keep-uncalled` to the command line.
fixes: 9786d9ef2a
Reviewed-by: Luis Felipe Strano Moraes <luis.strano@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19449 >
2022-11-10 21:14:17 +00:00
Mauro Rossi
db946364df
util: glsl2spirv.py: ensure '#endif' is printed in new line
...
Fixes the following building errors:
In file included from ../src/intel/vulkan/anv_pipeline_cache.c:34:
src/intel/vulkan/float64_spv.h:3316:3: error: expected identifier or '('
};#endif // FLOAT64_SPV_H
^
src/intel/vulkan/float64_spv.h:1:2: error: unterminated conditional directive
^
../src/intel/vulkan/anv_pipeline_cache.c:59:17: error: use of undeclared identifier 'anv_shader_bin_serialize'; did you mean 'anv_shader_bin_deserialize'?
.serialize = anv_shader_bin_serialize,
^~~~~~~~~~~~~~~~~~~~~~~~
anv_shader_bin_deserialize
../src/intel/vulkan/anv_pipeline_cache.c:41:1: note: 'anv_shader_bin_deserialize' declared here
anv_shader_bin_deserialize(struct vk_device *device,
^
../src/intel/vulkan/anv_pipeline_cache.c:59:17: error: incompatible pointer types initializing 'bool (*)(struct vk_pipeline_cache_object *, struct blob *)' with an expression of type 'struct vk_pipeline_cache_object *(struct vk_device *, const void *, size_t, struct blob_reader *)' (aka 'struct vk_pipeline_cache_object *(struct vk_device *, const void *, unsigned long, struct blob_reader *)') [-Werror,-Wincompatible-pointer-types]
.serialize = anv_shader_bin_serialize,
^~~~~~~~~~~~~~~~~~~~~~~~
4 errors generated.
Fixes: 9786d9e ("util: Add glsl2spirv.py script")
Reviewed-by: Mykhailo Skorokhodov <mykhailo.skorokhodov@globallogic.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19394 >
2022-10-30 14:14:21 +01:00
Mykhailo Skorokhodov
9786d9ef2a
util: Add glsl2spirv.py script
...
Signed-off-by: Mykhailo Skorokhodov <mykhailo.skorokhodov@globallogic.com >
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18854 >
2022-10-28 10:08:50 +00:00