diff --git a/dm/gfx/nvn/dmsh_chain.h b/dm/gfx/nvn/dmsh_chain.h index 3338ce799d..1209090530 100644 --- a/dm/gfx/nvn/dmsh_chain.h +++ b/dm/gfx/nvn/dmsh_chain.h @@ -1,3 +1,3 @@ // Generated file (dm/gfx/tools/dmsh_chain.py --header): the B shader library translation chain version this source tree expects (default options), one for every game; // the host loads only /b-/. Run dmsh_chain.py --header after changing the chain's tools and commit this file with the change -#define DMSH_CHAIN "d24f05cf9d78" +#define DMSH_CHAIN "dce4e9cb5054" diff --git a/dm/gfx/tools/dmsh_entry.py b/dm/gfx/tools/dmsh_entry.py index b274adc609..89c1453be1 100644 --- a/dm/gfx/tools/dmsh_entry.py +++ b/dm/gfx/tools/dmsh_entry.py @@ -4,7 +4,7 @@ # vs_layer, layer_out, vs_layer_entry), the depth entry point (vs_depth), and a pixel shader's integer and dual-source entry points (int_outputs, fs_uint, fs_dual). Functions of # the MSL text only, with no build state, so tests import them. Part of the translation chain (dmsh_chain.FILES) and of every shader's cache key (dmsh_build.py CODE_FP). import collections, re, sys -import dmsh_fetch, dmsh_side +import dmsh_side from dmsh_reflect import attributes, in_word def vs_writes(src, binds): @@ -164,7 +164,7 @@ def kinds(e, seen): if types.get(e, '').startswith('float'): # a float local is float bits, unless every value it takes is a register's bits (as_type(…)): PRAGMATA's visibility shaders bits = [re.fullmatch(r'as_type\((.*)\)', x) for x in defs[e]] # write float _n = as_type(int(gl_PrimitiveID)) into an RG32Uint target if not bits or not all(bits) or e in seen: return {'float'} - seen.add(e); return set().union(*(kinds(b[1].strip(), seen) for b in bits)) + seen.add(e); return set().union(*(kinds(b[1].strip(), seen) for b in bits if b)) if e in seen: return set() seen.add(e); return set().union(*(kinds(x, seen) for x in defs[e])) if defs[e] else set() if re.fullmatch(r'-?\d+u?', e): return {'int'} if 0 < abs(int(e.rstrip('u'))) < 0x800000 else set()