summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-01-11 20:28:02 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2013-01-11 20:28:02 +0100
commit0e5d9b52118ff0d770b09acbd8d9d912d85c990f (patch)
tree069af4463d00d5659ea3c52e50d02ea0a2cff231 /tools
parent4a8f23d6cffe5cfb8def8ffaef9c99bdd7d33349 (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-xtools/asm.py12
-rwxr-xr-xtools/dump_cmdstream.py2
-rw-r--r--tools/etnaviv/asm_common.py2
-rw-r--r--tools/etnaviv/parse_rng.py2
-rwxr-xr-xtools/show_egl2_log.sh5
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