summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLionel Landwerlin <[email protected]>2017-07-25 17:19:08 +0100
committerLionel Landwerlin <[email protected]>2017-11-03 14:23:39 +0000
commit285a2192f93f09f5dc806dce0326281768539f55 (patch)
treeaf2d6eed00ec3ab3e9148733631fd939eb6066e0
parent05231a4e740090f2e1eed720ac5d183125117267 (diff)
i965: perf: factorize code for availability
Signed-off-by: Lionel Landwerlin <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_oa.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_oa.py b/src/mesa/drivers/dri/i965/brw_oa.py
index 91f7ecb5731..8c35923462f 100644
--- a/src/mesa/drivers/dri/i965/brw_oa.py
+++ b/src/mesa/drivers/dri/i965/brw_oa.py
@@ -325,6 +325,21 @@ semantic_type_map = {
"ratio": "event"
}
+def output_availability(set, availability, counter_name):
+ expression = splice_rpn_expression(set, counter_name, availability)
+ lines = expression.split(' && ')
+ n_lines = len(lines)
+ if n_lines == 1:
+ c("if (" + lines[0] + ") {")
+ else:
+ c("if (" + lines[0] + " &&")
+ c_indent(4)
+ for i in range(1, (n_lines - 1)):
+ c(lines[i] + " &&")
+ c(lines[(n_lines - 1)] + ") {")
+ c_outdent(4)
+
+
def output_counter_report(set, counter, current_offset):
data_type = counter.get('data_type')
data_type_uc = data_type.upper()
@@ -343,18 +358,7 @@ def output_counter_report(set, counter, current_offset):
availability = counter.get('availability')
if availability:
- expression = splice_rpn_expression(set, counter, availability)
- lines = expression.split(' && ')
- n_lines = len(lines)
- if n_lines == 1:
- c("if (" + lines[0] + ") {")
- else:
- c("if (" + lines[0] + " &&")
- c_indent(4)
- for i in range(1, (n_lines - 1)):
- c(lines[i] + " &&")
- c(lines[(n_lines - 1)] + ") {")
- c_outdent(4)
+ output_availability(set, availability, counter.get('name'))
c_indent(3)
c("counter = &query->counters[query->n_counters++];\n")