diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-01-11 20:28:02 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-01-11 20:28:02 +0100 |
commit | 0e5d9b52118ff0d770b09acbd8d9d912d85c990f (patch) | |
tree | 069af4463d00d5659ea3c52e50d02ea0a2cff231 /tools | |
parent | 4a8f23d6cffe5cfb8def8ffaef9c99bdd7d33349 (diff) |
shorten state names, figure out some bits
- envytools: add more convenient VIVS_FE_VERTEX_ELEMENT_CONFIG_START(0xc) syntax
iso having to write (0xc << VIVS_FE_VERTEX_ELEMENT_CONFIG_START__SHIFT)
- figure out rs/depth tiling bits, PS bypass, write depth only
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/asm.py | 12 | ||||
-rwxr-xr-x | tools/dump_cmdstream.py | 2 | ||||
-rw-r--r-- | tools/etnaviv/asm_common.py | 2 | ||||
-rw-r--r-- | tools/etnaviv/parse_rng.py | 2 | ||||
-rwxr-xr-x | tools/show_egl2_log.sh | 5 |
5 files changed, 16 insertions, 7 deletions
diff --git a/tools/asm.py b/tools/asm.py index 6e41d52..5d14c3b 100755 --- a/tools/asm.py +++ b/tools/asm.py @@ -31,10 +31,10 @@ from binascii import b2a_hex import re from etnaviv.parse_rng import parse_rng_file, format_path, BitSet, Domain -from etnaviv.asm_common import DstOperand, DstOperandAReg, SrcOperand, TexOperand, AddrOperand, Instruction, AMODES, COMPS +from etnaviv.asm_common import DstOperand, DstOperandAReg, SrcOperand, TexOperand, AddrOperand, Instruction, AMODES, COMPS, RGROUPS from etnaviv.asm_common import disassemble, format_instruction -reg_re = re.compile('^(t|u|a|tex)(\d+)(\[.*?\])?(\.[\_xyzw]{1,4})?$') +reg_re = re.compile('^(i|t|u|a|tex|\?4\?|\?5\?|\?6\?|\?7\?)(\d+)(\[.*?\])?(\.[\_xyzw]{1,4})?$') label_re = re.compile('^[0-9a-zA-Z\-\_]+$') def parse_amode(amode): @@ -208,14 +208,15 @@ class Assembler(object): except LookupError: self.errors.append((self.linenr, 'Unparseable swizzle %s' % swiz)) swiz = 0 - if regtype == 't' or regtype == 'u': - rgroup = 0 + if regtype in RGROUPS: # register group if regtype == 'u': if regid < 128: rgroup = 2 else: rgroup = 3 regid -= 128 + else: + rgroup = RGROUPS.index(regtype) src.append(SrcOperand(use=1, reg=regid, swiz=swiz, neg=neg, abs=abs, amode=amode, rgroup=rgroup)) elif regtype == 'a': src.append(DstOperandAReg(reg=regid, comps=comps)) @@ -254,6 +255,7 @@ class Assembler(object): addr = AddrOperand(self.labels[inst.addr.addr]) except LookupError: self.errors.append((inst.linenr, 'Unknown label ' + inst.addr.addr)) + addr = AddrOperand(0) # dummy inst = inst._replace(addr=addr) inst_out = assemble(self.isa, inst, warnings) rv.append(inst_out) @@ -267,6 +269,8 @@ class Assembler(object): for warning in warnings: self.errors.append((inst.linenr, warning)) + if self.errors: + return None return rv def compare_inst(a,b,warnings): diff --git a/tools/dump_cmdstream.py b/tools/dump_cmdstream.py index 0d4c2bb..e22f6d0 100755 --- a/tools/dump_cmdstream.py +++ b/tools/dump_cmdstream.py @@ -379,7 +379,7 @@ def main(): args = parse_arguments() defs = load_data_definitions(args.struct_file) state_xml = parse_rng_file(args.rules_file) - state_map = state_xml.lookup_domain('VIV_STATE') + state_map = state_xml.lookup_domain('VIVS') fdr = FDRLoader(args.input) global options options = args diff --git a/tools/etnaviv/asm_common.py b/tools/etnaviv/asm_common.py index a530612..47e7cb1 100644 --- a/tools/etnaviv/asm_common.py +++ b/tools/etnaviv/asm_common.py @@ -35,7 +35,7 @@ from etnaviv.parse_rng import parse_rng_file, format_path, BitSet, Domain # u uniform 0..127 # v uniform 127..255 (this is rewritten to u in format_src) # others are unknown -RGROUPS = ['t', '?1?', 'u', 'v', '?4?', '?5?', '?6?', '?7?'] +RGROUPS = ['t', 'i', 'u', 'v', '?4?', '?5?', '?6?', '?7?'] # Addressing modes AMODES = ['', 'a.x', 'a.y', 'a.z', 'a.w', '?5?', '?6?', '?7?'] # components diff --git a/tools/etnaviv/parse_rng.py b/tools/etnaviv/parse_rng.py index 98c9d45..89d0834 100644 --- a/tools/etnaviv/parse_rng.py +++ b/tools/etnaviv/parse_rng.py @@ -30,7 +30,7 @@ from lxml import etree as ET # parsing from itertools import izip ns = "{http://nouveau.freedesktop.org/}" -XML_BOOL = {'false':False, 'true':True} +XML_BOOL = {'1':True, '0':False, 'false':False, 'true':True, 'yes':True, 'no':False} MASK_FIELD_SUFFIX = '_MASK' # Simple interval arithmetic diff --git a/tools/show_egl2_log.sh b/tools/show_egl2_log.sh index 90086e8..e7008f4 100755 --- a/tools/show_egl2_log.sh +++ b/tools/show_egl2_log.sh @@ -15,4 +15,9 @@ # --dump-shaders Dump binary shaders to disk # DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +if [ -z "$1" ]; then + echo "Must provide at least the name of a .fdr file." + echo "Usage: show_egl2_log.sh ../native/egl2/cube.fdr <flags>" + echo +fi python dump_cmdstream.py $* ${DIR}/data/gcs_hal_interface_v2.json ${DIR}/../rnndb/state.xml ${DIR}/../rnndb/isa.xml |