summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYongqin Liu <yongqin.liu@linaro.org>2018-05-17 19:31:52 +0800
committerYongqin Liu <yongqin.liu@linaro.org>2018-05-17 19:31:52 +0800
commit50e0b935cd3c2f51e78d619549123e42fb52b8fc (patch)
tree7b6aa3d6db0b127d4a0aae516849d0a6526a3bd6
parentefa089e9435eacf202eeffe76b008e8e687585da (diff)
update with upstream
Change-Id: I62ba6c882a8eb5044c677daf54174f52057c46da Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
-rw-r--r--automated/COPYING340
-rw-r--r--automated/README2
-rwxr-xr-xautomated/android/apk-automation/common/__init__.py5
-rwxr-xr-xautomated/android/apk-automation/geekbench3.py19
-rwxr-xr-xautomated/android/apk-automation/glbenchmark25.py39
-rwxr-xr-xautomated/android/apk-automation/quadrantpro.py46
-rwxr-xr-xautomated/android/apk-automation/rl-sqlite.py2
-rwxr-xr-xautomated/android/apk-automation/test.py68
-rwxr-xr-xautomated/android/apk-automation/vellamo3.py46
-rw-r--r--automated/android/apk-automation/x15-antutu6.log2283
-rwxr-xr-xautomated/android/boottime/boottime.sh3
-rw-r--r--automated/android/boottime/boottime.yaml4
-rwxr-xr-xautomated/android/boottime/device-script.sh4
-rwxr-xr-xautomated/android/libc-bench/libc-bench.sh5
-rwxr-xr-xautomated/android/microbenchmarks/microbenchmarks.sh17
-rw-r--r--automated/android/microbenchmarks/microbenchmarks.yaml1
-rwxr-xr-xautomated/android/monkey.bak/monkey.sh93
-rwxr-xr-xautomated/android/monkey.bak/monkey.yaml42
-rwxr-xr-xautomated/android/monkey/monkey.sh41
-rwxr-xr-xautomated/android/monkey/monkey.yaml4
-rwxr-xr-xautomated/android/stringbench/stringbench.sh5
-rw-r--r--automated/android/tjbench/nightshot_iso_100.ppmbin0 -> 22127633 bytes
-rwxr-xr-xautomated/android/tjbench/tjbench.sh2
-rwxr-xr-xautomated/android/workload-automation/aep-energy-config.sh44
-rwxr-xr-xautomated/android/workload-automation/aep-install.sh44
-rw-r--r--automated/android/workload-automation/aep-install.yaml30
-rwxr-xr-xautomated/android/workload-automation/workload-automation.sh73
-rw-r--r--automated/android/workload-automation/workload-automation.yaml21
-rwxr-xr-xautomated/bin/arm64/skipgenbin0 -> 655016 bytes
-rwxr-xr-xautomated/bin/armeabi/skipgenbin0 -> 658836 bytes
-rwxr-xr-xautomated/bin/fetch_skipgen.sh50
-rwxr-xr-xautomated/bin/x86_64/skipgenbin0 -> 705544 bytes
-rwxr-xr-xautomated/lib/android-test-lib36
-rw-r--r--automated/lib/py_test_lib.pycbin0 -> 341 bytes
-rwxr-xr-xautomated/lib/sh-test-lib49
-rw-r--r--automated/linux/aep-pre-post/lisa-postprocessing.yaml29
-rwxr-xr-xautomated/linux/aep-pre-post/lisa.sh57
-rw-r--r--automated/linux/aep-pre-post/postprocess_lisa_results.py48
-rwxr-xr-xautomated/linux/badblocks/badblocks.sh53
-rw-r--r--automated/linux/badblocks/badblocks.yaml25
-rw-r--r--automated/linux/gst-validate/README17
-rw-r--r--automated/linux/gst-validate/gst-validate.yaml47
-rwxr-xr-xautomated/linux/gst-validate/gst_validate_lava_parse.py62
-rwxr-xr-xautomated/linux/hci-smoke/hci-smoke-test.sh107
-rw-r--r--automated/linux/hci-smoke/hci-smoke.yaml26
-rwxr-xr-xautomated/linux/iozone/iozone.sh62
-rw-r--r--automated/linux/iozone/iozone.yaml38
-rwxr-xr-xautomated/linux/memtester/memtester.sh63
-rw-r--r--automated/linux/memtester/memtester.yaml29
-rwxr-xr-xautomated/linux/overlayfs/overlayfs.sh48
-rw-r--r--automated/linux/overlayfs/overlayfs.yaml35
-rw-r--r--automated/linux/piglit/piglit.yaml58
-rwxr-xr-xautomated/linux/piglit/piglit_lava_parse.py81
-rwxr-xr-xautomated/linux/ptest/ptest.py161
-rw-r--r--automated/linux/ptest/ptest.yaml25
-rwxr-xr-xautomated/linux/v4l2/v4l2-compliance.sh60
-rw-r--r--automated/linux/v4l2/v4l2-compliance.yaml23
-rwxr-xr-xautomated/linux/wlan-smoke/wlan-smoke-test.sh96
-rw-r--r--automated/linux/wlan-smoke/wlan-smoke.yaml26
-rwxr-xr-xautomated/utils/test-runner.py147
-rwxr-xr-xautomated/utils/upload-to-artifactorial.sh4
61 files changed, 4356 insertions, 489 deletions
diff --git a/automated/COPYING b/automated/COPYING
deleted file mode 100644
index 6d45519..0000000
--- a/automated/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/automated/README b/automated/README
index 6c05d67..2852ef6 100644
--- a/automated/README
+++ b/automated/README
@@ -45,6 +45,8 @@ single test run:
running test plan:
# Run a set of tests defined in agenda file.
test-runner -p ./plans/linux-example.yaml
+ # Apply test plan overlay to skip, amend or add tests.
+ test-runner -p ./plans/linux-example.yaml -O test-plan-overlay-example.yaml
Collecting result
=================
diff --git a/automated/android/apk-automation/common/__init__.py b/automated/android/apk-automation/common/__init__.py
index 980e5a8..33814f0 100755
--- a/automated/android/apk-automation/common/__init__.py
+++ b/automated/android/apk-automation/common/__init__.py
@@ -68,7 +68,7 @@ class ApkTestRunner(object):
except Exception as e:
self.take_screencap()
self.report_result(self.config['name'], 'fail')
- self.logger.error(e)
+ self.logger.error(e, exc_info=True)
sys.exit(1)
self.collect_log()
@@ -158,6 +158,7 @@ class ApkTestRunner(object):
success = False
while not success:
try:
+ time.sleep(5)
self.vc.dump()
success = True
except RuntimeError:
@@ -229,7 +230,6 @@ class ApkTestRunner(object):
else:
self.logger.info('APK file already exists: %s' % apk_name)
-
def install_apk(self, apk_name):
apk_path = os.path.join(os.path.abspath(self.config['apk_dir']), apk_name)
self.logger.info('Installing %s' % os.path.basename(apk_path))
@@ -304,6 +304,7 @@ class ApkTestRunner(object):
# Start intent.
self.logger.info('Starting %s' % self.config['apk_package'])
self.call_adb("shell am start -W -S %s" % self.config['activity'])
+ time.sleep(5)
def execute(self):
raise NotImplementedError
diff --git a/automated/android/apk-automation/geekbench3.py b/automated/android/apk-automation/geekbench3.py
index 658c662..ce99533 100755
--- a/automated/android/apk-automation/geekbench3.py
+++ b/automated/android/apk-automation/geekbench3.py
@@ -32,26 +32,21 @@ class ApkRunnerImpl(ApkTestRunner):
self.all_fail()
sys.exit(1)
- time.sleep(10)
- self.dump_always()
-
- try:
- self.vc.findViewByIdOrRaise("android:id/progress")
- except ViewNotFoundException:
- self.logger.error("Something goes wrong! It is unusual that the test has not been started after 10+ seconds! Please manually check it!")
- self.all_fail()
- sys.exit(1)
-
finished = False
while (not finished):
- time.sleep(45)
+ time.sleep(10)
self.dump_always()
flag = self.vc.findViewWithText("RESULT")
+ in_progress = self.vc.findViewById("android:id/progress")
if flag is not None:
self.logger.info("Geekbench 3 Test Finished!")
finished = True
- else:
+ elif in_progress:
self.logger.info("Geekbench 3 Test is still in progress...")
+ else:
+ self.logger.error("Something goes wrong! It is unusual that the test has not been started after 10+ seconds! Please manually check it!")
+ #self.all_fail()
+ #sys.exit(1)
# Generate the .gb3 file
self.device.press('KEYCODE_MENU')
diff --git a/automated/android/apk-automation/glbenchmark25.py b/automated/android/apk-automation/glbenchmark25.py
index 6b7299e..e5bb116 100755
--- a/automated/android/apk-automation/glbenchmark25.py
+++ b/automated/android/apk-automation/glbenchmark25.py
@@ -36,42 +36,37 @@ class ApkRunnerImpl(ApkTestRunner):
self.call_adb("shell am start -W -S %s" % self.config['activity'])
def execute(self):
- time.sleep(2)
-
- self.vc.dump(window='-1')
- test_type = self.vc.findViewWithText("Performance Tests")
- if test_type:
- test_type.touch()
- time.sleep(2)
-
- # By some reason in order to select all test, a back step is required
- self.dump_always()
- test_selection = self.vc.findViewByIdOrRaise("com.glbenchmark.glbenchmark25:id/buttonAll")
- self.device.press('KEYCODE_BACK')
- time.sleep(3)
-
- test_type.touch()
- time.sleep(2)
- test_selection.touch()
- self.logger.info("All selected!")
- time.sleep(3)
+ selected_all = False
+ while not selected_all:
+ self.dump_always()
+ select_all_btn = self.vc.findViewWithText("All")
+ display_tests_menu = self.vc.findViewWithText("Performance Tests")
+ if select_all_btn:
+ select_all_btn.touch()
+ self.logger.info("All selected!")
+ selected_all = True
+ elif display_tests_menu:
+ display_tests_menu.touch()
+ self.logger.info("Display all tests to select all")
+ else:
+ # continue
+ pass
# Disable crashed test suites
- self.vc.dump(window='-1')
+ self.dump_always()
crashed_test_name = "C24Z24MS4"
self.logger.info('Test suite %s is going to be disabled!' % crashed_test_name)
crashed_test = self.vc.findViewWithText(crashed_test_name)
if crashed_test is not None:
crashed_test.touch()
self.logger.info('Test suite %s has been excluded!' % crashed_test_name)
- time.sleep(2)
else:
self.logger.info('Can not find test suite %s, please check the screen!' % crashed_test_name)
# Start selected test suites
+ self.dump_always()
start_button = self.vc.findViewByIdOrRaise("com.glbenchmark.glbenchmark25:id/buttonStart")
start_button.touch()
- time.sleep(2)
finished = False
while not finished:
diff --git a/automated/android/apk-automation/quadrantpro.py b/automated/android/apk-automation/quadrantpro.py
index 8ca7b0d..3360a2b 100755
--- a/automated/android/apk-automation/quadrantpro.py
+++ b/automated/android/apk-automation/quadrantpro.py
@@ -19,29 +19,39 @@ class ApkRunnerImpl(ApkTestRunner):
super(ApkRunnerImpl, self).tearDown()
def execute(self):
- self.dump_always()
- view_license_btn = self.vc.findViewWithText("View license")
- if view_license_btn:
- ok_button = self.vc.findViewWithTextOrRaise("OK")
- ok_button.touch()
-
- self.dump_always()
- run_full_item = self.vc.findViewWithTextOrRaise(u'Run full benchmark')
- run_full_item.touch()
+ need_continue = True
+ while need_continue:
+ self.dump_always()
+ view_license_btn = self.vc.findViewWithText("View license")
+ run_full_item = self.vc.findViewWithText(u'Run full benchmark')
+ if view_license_btn:
+ ok_button = self.vc.findViewWithTextOrRaise("OK")
+ ok_button.touch()
+ elif run_full_item:
+ run_full_item.touch()
+ need_continue = False
+ else:
+ # continue check
+ pass
# Hack workaround to kill the first time start up
# then it will work from 2nd time
self.call_adb("shell am force-stop %s" % self.config['apk_package'])
self.call_adb("shell am start -W -S %s" % self.config['activity'])
- self.dump_always()
- view_license_btn = self.vc.findViewWithText("View license")
- if view_license_btn:
- ok_button = self.vc.findViewWithTextOrRaise("OK")
- ok_button.touch()
-
- self.dump_always()
- run_full_item = self.vc.findViewWithTextOrRaise(u'Run full benchmark')
- run_full_item.touch()
+ need_continue = True
+ while need_continue:
+ self.dump_always()
+ view_license_btn = self.vc.findViewWithText("View license")
+ run_full_item = self.vc.findViewWithText(u'Run full benchmark')
+ if view_license_btn:
+ ok_button = self.vc.findViewWithTextOrRaise("OK")
+ ok_button.touch()
+ elif run_full_item:
+ run_full_item.touch()
+ need_continue = False
+ else:
+ # continue check
+ pass
finished = False
while not finished:
diff --git a/automated/android/apk-automation/rl-sqlite.py b/automated/android/apk-automation/rl-sqlite.py
index 48ff4a8..10929b2 100755
--- a/automated/android/apk-automation/rl-sqlite.py
+++ b/automated/android/apk-automation/rl-sqlite.py
@@ -31,7 +31,7 @@ class ApkRunnerImpl(ApkTestRunner):
subitem = self.vc.findViewWithText(text, ch)
if subitem:
subitem_result = self.vc.findViewByIdOrRaise("com.redlicense.benchmark.sqlite:id/test_result", ch)
- score = subitem_result.getText().replace("sec", "").strip()
+ score = subitem_result.getText().replace("sec", "").replace("Running", "").strip()
score_in_ms = float(score) * 1000
self.report_result("RL-sqlite-" + text.replace(" ", "-"), 'pass', str(score_in_ms), "ms")
found_score_view = True
diff --git a/automated/android/apk-automation/test.py b/automated/android/apk-automation/test.py
new file mode 100755
index 0000000..28b7df2
--- /dev/null
+++ b/automated/android/apk-automation/test.py
@@ -0,0 +1,68 @@
+import re
+import sys
+import os
+import time
+from subprocess import call
+
+from com.dtmilano.android.viewclient import ViewClient, ViewNotFoundException
+
+
+kwargs1 = {'verbose': False, 'ignoresecuredevice': False}
+device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1)
+kwargs2 = {'startviewserver': True, 'forceviewserveruse': False, 'autodump': False, 'ignoreuiautomatorkilled': True, 'compresseddump': False}
+vc = ViewClient(device, serialno, **kwargs2)
+
+def dump_always():
+ success = False
+ while not success:
+ try:
+ vc.dump()
+ success = True
+ except RuntimeError:
+ print("Got RuntimeError when call vc.dump()")
+ time.sleep(5)
+ except ValueError:
+ print("Got ValueError when call vc.dump()")
+ time.sleep(5)
+
+
+def get_score_with_text(vc, text):
+ found_score_view = False
+
+ while not found_score_view:
+ linear_layout = vc.findViewByIdOrRaise("com.redlicense.benchmark.sqlite:id/stats")
+ for ch in linear_layout.children:
+ subitem = vc.findViewWithText(text, ch)
+ if subitem:
+ subitem_result = vc.findViewByIdOrRaise("com.redlicense.benchmark.sqlite:id/test_result", ch)
+ score = subitem_result.getText().replace("sec", "").strip()
+ score_in_ms = float(score) * 1000
+ print "RL_sqlite_%s %s %s ms" % (text.replace(" ", "_"), 'pass', str(score_in_ms))
+ found_score_view = True
+ break
+ else:
+ print("%s not found, need to pageup" % text)
+ dump_always()
+ device.press('DPAD_UP')
+ time.sleep(2)
+ dump_always()
+ device.press('DPAD_UP')
+ time.sleep(2)
+ dump_always()
+
+dump_always()
+vc.findViewWithTextOrRaise(u'Overall').touch()
+get_score_with_text(vc, "Overall")
+get_score_with_text(vc, "DROP TABLE")
+get_score_with_text(vc, "DELETE with an index")
+get_score_with_text(vc, "DELETE without an index")
+get_score_with_text(vc, "INSERTs from a SELECT")
+get_score_with_text(vc, "25000 UPDATEs with an index")
+get_score_with_text(vc, "1000 UPDATEs without an index")
+get_score_with_text(vc, "5000 SELECTs with an index")
+get_score_with_text(vc, "Creating an index")
+get_score_with_text(vc, "100 SELECTs on a string comparison")
+get_score_with_text(vc, "100 SELECTs without an index")
+get_score_with_text(vc, "25000 INSERTs into an indexed table in a transaction")
+get_score_with_text(vc, "25000 INSERTs in a transaction")
+get_score_with_text(vc, "1000 INSERTs")
diff --git a/automated/android/apk-automation/vellamo3.py b/automated/android/apk-automation/vellamo3.py
index d9719a7..413ee61 100755
--- a/automated/android/apk-automation/vellamo3.py
+++ b/automated/android/apk-automation/vellamo3.py
@@ -42,24 +42,28 @@ class ApkRunnerImpl(ApkTestRunner):
break
def execute(self):
- self.dump_always()
- # Accept Vellamo EULA
- btn_setup_1 = self.vc.findViewByIdOrRaise("android:id/button1")
- btn_setup_1.touch()
-
- # Open settings
- self.dump_always()
- btn_settings = self.vc.findViewByIdOrRaise('com.quicinc.vellamo:id/main_toolbar_wheel')
- btn_settings.touch()
-
- # Disable animations
- self.dump_always()
- btn_animations = self.vc.findViewWithTextOrRaise(u'Make Vellamo even more beautiful')
- btn_animations.touch()
+ need_continue = True
+ while need_continue:
+ self.dump_always()
+ btn_setup_1 = self.vc.findViewById("android:id/button1")
+ btn_settings = self.vc.findViewById('com.quicinc.vellamo:id/main_toolbar_wheel')
+ btn_animations = self.vc.findViewWithText(u'Make Vellamo even more beautiful')
+ if btn_setup_1:
+ # Accept Vellamo EULA
+ btn_setup_1.touch()
+ elif btn_settings:
+ # Open settings
+ btn_settings.touch()
+ elif btn_animations:
+ # Disable animations
+ btn_animations.touch()
+ need_continue = False
# Back to the home screen
self.device.press("KEYCODE_BACK")
+ self.logger.info("Benchmark started now")
+
chapters = ['Browser', 'Multicore', 'Metal']
for chapter in chapters:
self.choose_chapter(chapter)
@@ -67,9 +71,9 @@ class ApkRunnerImpl(ApkTestRunner):
# Start benchmark
self.dump_always()
try:
- btn_start = self.vc.findViewById("com.quicinc.vellamo:id/main_toolbar_operation_button")
- if btn_start:
- btn_start.touch()
+ gotit_button = self.vc.findViewWithText(u'GOT IT')
+ if gotit_button:
+ gotit_button.touch()
except ViewNotFoundException:
self.report_result('vellamo3-%s' % chapter, 'fail')
self.logger.error('Start button for chapter %s NOT found, moving to the next chapter...')
@@ -81,11 +85,10 @@ class ApkRunnerImpl(ApkTestRunner):
time.sleep(1)
try:
self.dump_always()
- goback_title = self.vc.findViewById("com.quicinc.vellamo:id/main_toolbar_goback_title")
goback_btn = self.vc.findViewById("com.quicinc.vellamo:id/main_toolbar_goback_button")
- if goback_btn or goback_title:
- btn_no = self.vc.findViewByIdOrRaise("com.quicinc.vellamo:id/button_no")
- btn_no.touch()
+ if goback_btn:
+ goback_btn.touch()
+ time.sleep(5)
finished = True
except ViewNotFoundException:
pass
@@ -96,6 +99,7 @@ class ApkRunnerImpl(ApkTestRunner):
self.logger.info("Benchmark finished: %s" % chapter)
self.device.press("KEYCODE_BACK")
+ time.sleep(5)
self.device.press("KEYCODE_BACK")
def parseResult(self):
diff --git a/automated/android/apk-automation/x15-antutu6.log b/automated/android/apk-automation/x15-antutu6.log
new file mode 100644
index 0000000..c85b016
--- /dev/null
+++ b/automated/android/apk-automation/x15-antutu6.log
@@ -0,0 +1,2283 @@
+--------- beginning of main
+11-01 17:32:22.832 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:22.832 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:22.832 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 48000,format 1, channels 3, flags 4
+11-01 17:32:22.832 295 382 E AudioTrack: Could not get audio output for session 121, stream type -1, usage 13, sample rate 48000, format 0x1, channel mask 0x3, flags 0x4
+11-01 17:32:22.833 295 382 E SoundPool: Error creating AudioTrack
+11-01 17:32:23.015 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:23.015 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:23.015 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 48000,format 1, channels 3, flags 4
+11-01 17:32:23.015 295 382 E AudioTrack: Could not get audio output for session 129, stream type -1, usage 13, sample rate 48000, format 0x1, channel mask 0x3, flags 0x4
+11-01 17:32:23.015 295 382 E SoundPool: Error creating AudioTrack
+11-01 17:32:26.674 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:26.674 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+--------- beginning of system
+11-01 17:32:26.675 295 1253 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.antutu.ABenchMark/.ABenchMarkStart bnds=[182,70][291,152]} from uid 10012
+11-01 17:32:26.675 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 48000,format 1, channels 3, flags 4
+11-01 17:32:26.675 295 382 E AudioTrack: Could not get audio output for session 137, stream type -1, usage 13, sample rate 48000, format 0x1, channel mask 0x3, flags 0x4
+11-01 17:32:26.676 295 382 E SoundPool: Error creating AudioTrack
+11-01 17:32:26.738 2344 2344 I tutu.ABenchMark: type=1400 audit(0.0:103): avc: denied { read } for name="u:object_r:serialno_prop:s0" dev="tmpfs" ino=8209 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:serialno_prop:s0 tclass=file permissive=1
+11-01 17:32:26.738 2344 2344 I tutu.ABenchMark: type=1400 audit(0.0:104): avc: denied { open } for path="/dev/__properties__/u:object_r:serialno_prop:s0" dev="tmpfs" ino=8209 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:serialno_prop:s0 tclass=file permissive=1
+11-01 17:32:26.738 2344 2344 I tutu.ABenchMark: type=1400 audit(0.0:105): avc: denied { getattr } for path="/dev/__properties__/u:object_r:serialno_prop:s0" dev="tmpfs" ino=8209 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:serialno_prop:s0 tclass=file permissive=1
+11-01 17:32:26.865 295 1319 E DatabaseUtils: Writing exception to parcel
+11-01 17:32:26.865 295 1319 E DatabaseUtils: java.lang.SecurityException: com.antutu.ABenchMark was not granted this permission: android.permission.WRITE_SETTINGS.
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at android.provider.Settings.isCallingPackageAllowedToPerformAppOpsProtectedOperation(Settings.java:10936)
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at android.provider.Settings.checkAndNoteWriteSettingsOperation(Settings.java:10818)
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at com.android.providers.settings.SettingsProvider.mutateSystemSetting(SettingsProvider.java:1382)
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at com.android.providers.settings.SettingsProvider.insertSystemSetting(SettingsProvider.java:1357)
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:375)
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at android.content.ContentProvider$Transport.call(ContentProvider.java:403)
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:272)
+11-01 17:32:26.865 295 1319 E DatabaseUtils: at android.os.Binder.execTransact(Binder.java:674)
+11-01 17:32:26.928 2344 2344 I Thread-3: type=1400 audit(0.0:106): avc: denied { ioctl } for path="socket:[233616]" dev="sockfs" ino=233616 ioctlcmd=8927 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:r:untrusted_app_25:s0:c512,c768 tclass=udp_socket permissive=1
+11-01 17:32:26.947 2344 7302 D NetworkSecurityConfig: No Network Security Config specified, using platform default
+11-01 17:32:27.040 2344 7313 D OpenGLRenderer: HWUI GL Pipeline
+11-01 17:32:27.083 2344 7313 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:27.093 2344 7313 E IMGSRV : :0: PVRSRVOpenDCDevice: Error - 138 returned
+11-01 17:32:27.098 2344 7313 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:27.098 2344 7313 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:32:27.098 2344 7313 D OpenGLRenderer: Swap behavior 1
+11-01 17:32:27.099 2344 7313 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:32:27.099 2344 7313 D OpenGLRenderer: Swap behavior 0
+11-01 17:32:27.142 2344 7313 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:27.205 295 319 I ActivityManager: Displayed com.antutu.ABenchMark/.ABenchMarkStart: +518ms
+11-01 17:32:27.238 2344 2344 I Thread-5: type=1400 audit(0.0:107): avc: denied { read } for name="version" dev="proc" ino=4026532092 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=1
+11-01 17:32:27.238 2344 2344 I Thread-5: type=1400 audit(0.0:108): avc: denied { open } for path="/proc/version" dev="proc" ino=4026532092 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=1
+11-01 17:32:27.238 2344 2344 I Thread-5: type=1400 audit(0.0:109): avc: denied { getattr } for path="/proc/version" dev="proc" ino=4026532092 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=1
+11-01 17:32:27.256 224 273 I CameraService: CameraService::connect call (PID -1 "com.antutu.ABenchMark", camera ID 0) for HAL version default and Camera API version 1
+11-01 17:32:27.257 231 1243 D NuPlayerDriver: NuPlayerDriver(0xa43b0af0) created, clientPid(224)
+11-01 17:32:27.259 147 147 W /system/bin/hwservicemanager: getTransportFromManifest: Cannot find entry android.hardware.media.omx@1.0::IOmx in either framework or device manifest, using default transport.
+11-01 17:32:27.353 231 7319 D NuPlayerDriver: notifyListener_l(0xa43b0af0), (1, 0, 0, -1), loop setting(0, 0)
+11-01 17:32:27.374 231 1243 D NuPlayerDriver: NuPlayerDriver(0xa43b0e00) created, clientPid(224)
+11-01 17:32:27.375 147 147 W /system/bin/hwservicemanager: getTransportFromManifest: Cannot find entry android.hardware.media.omx@1.0::IOmx in either framework or device manifest, using default transport.
+11-01 17:32:27.381 231 7321 D NuPlayerDriver: notifyListener_l(0xa43b0e00), (1, 0, 0, -1), loop setting(0, 0)
+11-01 17:32:27.396 231 1243 D NuPlayerDriver: NuPlayerDriver(0xa43b0ee0) created, clientPid(224)
+11-01 17:32:27.397 147 147 W /system/bin/hwservicemanager: getTransportFromManifest: Cannot find entry android.hardware.media.omx@1.0::IOmx in either framework or device manifest, using default transport.
+11-01 17:32:27.409 231 7323 D NuPlayerDriver: notifyListener_l(0xa43b0ee0), (1, 0, 0, -1), loop setting(0, 0)
+11-01 17:32:27.411 224 273 I CameraHardwareInterface: Opening camera 0
+11-01 17:32:27.411 175 270 I CamDev@1.0-impl: Opening camera 0
+11-01 17:32:27.411 175 270 E CameraHal: (aea0d970) hardware/ti/dra7xx/camera/CameraHal_Module.cpp:634 camera_device_open - CameraHal_Module: ******************* 1 *******************
+11-01 17:32:27.411 175 270 I CameraHal: (aea0d970) hardware/ti/dra7xx/camera/CameraHal_Module.cpp:638 camera_device_open - camera_device open
+11-01 17:32:27.411 175 270 E CameraHal: (aea0d970) hardware/ti/dra7xx/camera/CameraHal.cpp:126 getSocFamily - '/sys/board_properties/soc/family' Not Available
+11-01 17:32:27.411 175 270 E CameraHal: (aea0d970) hardware/ti/dra7xx/camera/CameraHal_Module.cpp:733 camera_device_open - Couldn't initialize camera instance
+11-01 17:32:27.411 175 270 E CamDev@1.0-impl: Could not open camera 0: -19
+11-01 17:32:27.411 224 273 E CameraHardwareInterface: initialize: openSession failed! Function not implemented (-38)
+11-01 17:32:27.411 224 273 E CameraClient: initialize: Camera 0: unable to initialize device: Function not implemented (-38)
+11-01 17:32:27.411 224 273 I CameraHardwareInterface: Destroying camera 0
+11-01 17:32:27.411 224 273 E CameraService: connectHelper: Could not initialize client from HAL.
+11-01 17:32:27.411 231 1243 D NuPlayerDriver: reset(0xa43b0af0) at state 4
+11-01 17:32:27.411 231 1243 D NuPlayerDriver: notifyListener_l(0xa43b0af0), (8, 0, 0, -1), loop setting(0, 0)
+11-01 17:32:27.411 231 7319 D NuPlayerDriver: notifyResetComplete(0xa43b0af0)
+11-01 17:32:27.412 230 257 D MediaAnalyticsService: MediaAnalyticsService::newSummarizerSet
+11-01 17:32:27.412 231 703 D NuPlayerDriver: reset(0xa43b0e00) at state 4
+11-01 17:32:27.412 231 703 D NuPlayerDriver: notifyListener_l(0xa43b0e00), (8, 0, 0, -1), loop setting(0, 0)
+11-01 17:32:27.412 231 7321 D NuPlayerDriver: notifyResetComplete(0xa43b0e00)
+11-01 17:32:27.413 231 703 D NuPlayerDriver: reset(0xa43b0ee0) at state 4
+11-01 17:32:27.413 231 703 D NuPlayerDriver: notifyListener_l(0xa43b0ee0), (8, 0, 0, -1), loop setting(0, 0)
+11-01 17:32:27.413 231 7323 D NuPlayerDriver: notifyResetComplete(0xa43b0ee0)
+11-01 17:32:27.418 224 273 I CameraService: disconnect: Disconnected client for camera 0 for PID 2344
+11-01 17:32:27.419 2344 7306 W CameraBase: An error occurred while connecting to camera 0: Status(-8): '10: connectHelper:1394: Failed to initialize camera "0": Function not implemented (-38)'
+11-01 17:32:27.438 7328 7328 I df : type=1400 audit(0.0:110): avc: denied { getattr } for path="/dev/block" dev="tmpfs" ino=8278 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:block_device:s0 tclass=dir permissive=1
+11-01 17:32:27.438 7328 7328 I df : type=1400 audit(0.0:111): avc: denied { getattr } for path="/dev/block/mmcblk0p10" dev="tmpfs" ino=7809 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:system_block_device:s0 tclass=blk_file permissive=1
+11-01 17:32:27.438 7328 7328 I df : type=1400 audit(0.0:112): avc: denied { getattr } for path="/dev/block/mmcblk0p11" dev="tmpfs" ino=7813 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=1
+11-01 17:32:27.438 7328 7328 I df : type=1400 audit(0.0:113): avc: denied { getattr } for path="/dev/block/mmcblk0p12" dev="tmpfs" ino=7817 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:cache_block_device:s0 tclass=blk_file permissive=1
+11-01 17:32:27.438 7328 7328 I df : type=1400 audit(0.0:114): avc: denied { getattr } for path="/dev/block/mmcblk0p15" dev="tmpfs" ino=7829 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:userdata_block_device:s0 tclass=blk_file permissive=1
+11-01 17:32:27.438 7328 7328 I df : type=1400 audit(0.0:115): avc: denied { getattr } for path="/dev/fuse" dev="tmpfs" ino=8259 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:fuse_device:s0 tclass=chr_file permissive=1
+11-01 17:32:27.596 2344 7329 D ApplicationPackageManager: Shame on you for calling the hidden API getPackageSizeInfoAsUser(). Shame!
+11-01 17:32:27.597 2344 7329 I chatty : uid=10058(u0_a58) com.antutu.ABenchMark identical 14 lines
+11-01 17:32:27.597 2344 7329 D ApplicationPackageManager: Shame on you for calling the hidden API getPackageSizeInfoAsUser(). Shame!
+11-01 17:32:27.827 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:27.830 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:27.831 295 1701 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:32:27.831 295 1701 D OpenGLRenderer: Swap behavior 1
+11-01 17:32:27.831 295 1701 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:32:27.831 295 1701 D OpenGLRenderer: Swap behavior 0
+11-01 17:32:28.856 295 1253 I ActivityManager: START u0 {cmp=com.antutu.ABenchMark/com.antutu.benchmark.activity.MainActivity} from uid 10058
+11-01 17:32:29.038 295 1316 I ActivityManager: START u0 {act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.android.packageinstaller cmp=com.android.packageinstaller/.permission.ui.GrantPermissionsActivity (has extras)} from uid 10058
+11-01 17:32:29.042 2344 2344 W Activity: Can reqeust only one set of permissions at a time
+11-01 17:32:29.078 2344 2344 I pool-2-thread-1: type=1400 audit(0.0:116): avc: denied { read } for name="address" dev="sysfs" ino=17394 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1
+11-01 17:32:29.078 2344 2344 I pool-2-thread-1: type=1400 audit(0.0:117): avc: denied { open } for path="/sys/devices/platform/44000000.ocp/48484000.ethernet/net/eth0/address" dev="sysfs" ino=17394 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1
+11-01 17:32:29.078 2344 2344 I pool-2-thread-1: type=1400 audit(0.0:118): avc: denied { getattr } for path="/sys/devices/platform/44000000.ocp/48484000.ethernet/net/eth0/address" dev="sysfs" ino=17394 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1
+11-01 17:32:29.268 1210 1730 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:29.270 1210 1730 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:29.270 1210 1730 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:32:29.270 1210 1730 D OpenGLRenderer: Swap behavior 1
+11-01 17:32:29.270 1210 1730 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:32:29.270 1210 1730 D OpenGLRenderer: Swap behavior 0
+11-01 17:32:29.300 2344 2355 I zygote : Background concurrent copying GC freed 15209(1596KB) AllocSpace objects, 8(208KB) LOS objects, 49% free, 2MB/5MB, paused 166us total 315.176ms
+11-01 17:32:29.315 295 319 I ActivityManager: Displayed com.android.packageinstaller/.permission.ui.GrantPermissionsActivity: +153ms (total +417ms)
+11-01 17:32:29.334 295 529 W ActivityManager: Unable to start service Intent { act=com.google.android.gms.ads.identifier.service.START pkg=com.google.android.gms } U=0: not found
+11-01 17:32:29.366 2344 7355 W System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.net.NetworkInfo$State android.net.NetworkInfo.getState()' on a null object reference
+11-01 17:32:29.366 2344 7355 W System.err: at a.a.gp.e(Unknown Source:70)
+11-01 17:32:29.366 2344 7355 W System.err: at a.a.jj.c(Unknown Source:0)
+11-01 17:32:29.366 2344 7355 W System.err: at a.a.jj.d(Unknown Source:14)
+11-01 17:32:29.367 2344 7355 W System.err: at a.a.jj.a(Unknown Source:80)
+11-01 17:32:29.367 2344 7355 W System.err: at a.a.iv.a(Unknown Source:62)
+11-01 17:32:29.367 2344 7355 W System.err: at a.a.iv.e(Unknown Source:39)
+11-01 17:32:29.367 2344 7355 W System.err: at a.a.iv.a(Unknown Source:30)
+11-01 17:32:29.367 2344 7355 W System.err: at a.a.iv.a(Unknown Source:9)
+11-01 17:32:29.367 2344 7355 W System.err: at a.a.iz.a(Unknown Source:8)
+11-01 17:32:29.367 2344 7355 W System.err: at com.umeng.analytics.g.run(Unknown Source:0)
+11-01 17:32:29.367 2344 7355 W System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
+11-01 17:32:29.367 2344 7355 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+11-01 17:32:29.367 2344 7355 W System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
+11-01 17:32:29.367 2344 7355 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
+11-01 17:32:29.367 2344 7355 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
+11-01 17:32:29.367 2344 7355 W System.err: at java.lang.Thread.run(Thread.java:764)
+11-01 17:32:29.393 295 305 I zygote : Background concurrent copying GC freed 24369(1485KB) AllocSpace objects, 21(420KB) LOS objects, 42% free, 5MB/9MB, paused 297us total 204.674ms
+11-01 17:32:29.479 2344 2344 I WebViewFactory: Loading com.android.webview version 58.0.3029.125 (code 303012500)
+11-01 17:32:29.511 2344 2344 I cr_LibraryLoader: Time to load native libraries: 2 ms (timestamps 1904-1906)
+11-01 17:32:29.522 2344 2344 I chromium: [INFO:library_loader_hooks.cc(140)] Chromium logging enabled: level = 0, default verbosity = 0
+11-01 17:32:29.522 2344 2344 I cr_LibraryLoader: Expected native library version number "58.0.3029.125", actual native library version number "58.0.3029.125"
+11-01 17:32:29.533 2344 7364 W cr_ChildProcLauncher: Create a new ChildConnectionAllocator with package name = com.android.webview, inSandbox = true
+11-01 17:32:29.533 2344 2344 I cr_BrowserStartup: Initializing chromium process, singleProcess=false
+11-01 17:32:29.546 7366 7366 E /system/bin/webview_zygote32: failed to make and chown /acct/uid_99001: Permission denied
+11-01 17:32:29.546 7366 7366 E Zygote : createProcessGroup(99001, 0) failed: Permission denied
+11-01 17:32:29.548 295 1253 I ActivityManager: Start proc 7366:com.android.webview:sandboxed_process0/u0i1 for webview_service com.antutu.ABenchMark/org.chromium.content.app.SandboxedProcessService0
+11-01 17:32:29.585 7366 7366 I SamplingProfilerIntegration: Profiling disabled.
+11-01 17:32:29.611 7382 7382 E asset : setgid: Operation not permitted
+11-01 17:32:29.679 7366 7366 I LoadedApk: No resource references to update in package com.android.webview
+11-01 17:32:29.682 7366 7366 I cr_ChildProcessService: Creating new ChildProcessService pid=7366
+11-01 17:32:29.701 2344 7395 E BluetoothAdapter: Bluetooth binder is null
+11-01 17:32:29.715 2344 2344 E SensorManager: sensor or listener is null
+11-01 17:32:29.716 2344 2344 I chatty : uid=10058(u0_a58) com.antutu.ABenchMark identical 17 lines
+11-01 17:32:29.716 2344 2344 E SensorManager: sensor or listener is null
+11-01 17:32:29.830 2344 2344 I Choreographer: Skipped 37 frames! The application may be doing too much work on its main thread.
+11-01 17:32:29.867 2344 7391 I cr_LibraryLoader: Using linker: org.chromium.base.library_loader.ModernLinker
+11-01 17:32:29.871 7366 7399 I cr_LibraryLoader: Time to load native libraries: 0 ms (timestamps 2266-2266)
+11-01 17:32:29.871 7366 7399 I cr_LibraryLoader: Using linker: org.chromium.base.library_loader.ModernLinker
+11-01 17:32:29.874 7366 7399 I chromium: [INFO:library_loader_hooks.cc(140)] Chromium logging enabled: level = 0, default verbosity = 0
+11-01 17:32:29.874 7366 7399 I cr_LibraryLoader: Expected native library version number "58.0.3029.125", actual native library version number "58.0.3029.125"
+11-01 17:32:30.018 7418 7418 I sh : type=1400 audit(0.0:119): avc: denied { read } for name="/" dev="rootfs" ino=1 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=1
+11-01 17:32:30.018 7418 7418 I sh : type=1400 audit(0.0:120): avc: denied { open } for path="/" dev="rootfs" ino=1 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=1
+11-01 17:32:30.021 7366 7399 E chromium: [ERROR:sys_info_android.cc(144)] Can't parse dalvik.vm.heapsize:
+11-01 17:32:30.091 2344 2349 I zygote : Do partial code cache collection, code=31KB, data=30KB
+11-01 17:32:30.092 2344 2349 I zygote : After code cache collection, code=31KB, data=30KB
+11-01 17:32:30.092 2344 2349 I zygote : Increasing code cache capacity to 128KB
+11-01 17:32:30.128 7439 7439 I stat : type=1400 audit(0.0:121): avc: denied { getattr } for path="/system/xbin/su" dev="mmcblk0p10" ino=1417 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:su_exec:s0 tclass=file permissive=1
+11-01 17:32:30.204 2344 7432 W VideoCapabilities: Unrecognized profile/level 1/2147483647 for video/mp4v-es
+11-01 17:32:30.204 2344 7432 W VideoCapabilities: Unrecognized profile/level 32768/2147483647 for video/mp4v-es
+11-01 17:32:30.205 2344 7432 W VideoCapabilities: Unrecognized profile/level 0/0 for video/mpeg2
+11-01 17:32:30.225 2344 7432 I VideoCapabilities: Unsupported profile 4 for video/mp4v-es
+11-01 17:32:30.238 2344 2344 E libEGL : call to OpenGL ES API with no current context (logged once per thread)
+11-01 17:32:30.239 2344 7432 W cr_MediaCodecUtil: HW encoder for video/avc is not available on this device.
+11-01 17:32:30.252 2344 7432 W cr_MediaCodecUtil: HW encoder for video/avc is not available on this device.
+11-01 17:32:30.342 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psTex 0x89eb0300 to XBGR
+11-01 17:32:30.342 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psLevel 0x898f7200 to XBGR
+11-01 17:32:30.343 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psTex 0x89eb03a0 to XBGR
+11-01 17:32:30.343 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psLevel 0x898f7700 to XBGR
+11-01 17:32:30.368 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psTex 0x89eb06c0 to XBGR
+11-01 17:32:30.368 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psLevel 0x898f8600 to XBGR
+11-01 17:32:30.395 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psTex 0x89eb0760 to XBGR
+11-01 17:32:30.395 2344 7432 E IMGSRV : :0: ComputeFrameBufferCompleteness: Switching psLevel 0x898f8b00 to XBGR
+11-01 17:32:30.415 2344 2355 I zygote : Background concurrent copying GC freed 17419(1481KB) AllocSpace objects, 10(268KB) LOS objects, 49% free, 3MB/6MB, paused 2.159ms total 165.120ms
+11-01 17:32:30.439 2344 2344 D SectionedAdapter: totalCount:10
+11-01 17:32:30.502 2344 2344 D SectionedAdapter: totalCount:10
+11-01 17:32:30.565 2344 2349 I zygote : Do partial code cache collection, code=56KB, data=47KB
+11-01 17:32:30.567 2344 2349 I zygote : After code cache collection, code=55KB, data=47KB
+11-01 17:32:30.567 2344 2349 I zygote : Increasing code cache capacity to 256KB
+11-01 17:32:30.596 2344 2344 D SectionedAdapter: totalCount:10
+11-01 17:32:30.847 2344 7346 E BluetoothAdapter: Bluetooth binder is null
+11-01 17:32:30.979 2344 7304 W OkHttpClient: A connection to http://info.antutu.net/ was leaked. Did you forget to close a response body?
+11-01 17:32:31.361 295 395 E TaskPersister: File error accessing recents directory (directory doesn't exist?).
+11-01 17:32:32.336 295 529 D VoldConnector: SND -> {36 volume remount_uid 10058 read}
+11-01 17:32:32.337 150 154 D vold : Remounting 10058 as mode read
+11-01 17:32:32.341 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:32.342 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:32.342 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 48000,format 1, channels 3, flags 4
+11-01 17:32:32.342 295 382 E AudioTrack: Could not get audio output for session 169, stream type -1, usage 13, sample rate 48000, format 0x1, channel mask 0x3, flags 0x4
+11-01 17:32:32.345 150 154 D vold : Found matching PID 2344
+11-01 17:32:32.346 295 382 E SoundPool: Error creating AudioTrack
+11-01 17:32:32.445 150 154 D vold : Found matching PID 7418
+11-01 17:32:32.556 295 360 D VoldConnector: RCV <- {200 36 Command succeeded}
+11-01 17:32:32.563 295 529 D VoldConnector: SND -> {37 volume remount_uid 10058 write}
+11-01 17:32:32.563 150 154 D vold : Remounting 10058 as mode write
+11-01 17:32:32.568 150 154 D vold : Found matching PID 2344
+11-01 17:32:32.665 150 154 D vold : Found matching PID 7418
+11-01 17:32:32.765 295 360 D VoldConnector: RCV <- {200 37 Command succeeded}
+11-01 17:32:32.857 1210 1730 D OpenGLRenderer: endAllActiveAnimators on 0x8d9d7600 (RippleDrawable) with handle 0x9ea03e90
+11-01 17:32:34.806 2344 2344 W Settings: Setting always_finish_activities has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
+11-01 17:32:34.807 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:34.807 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:34.808 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 48000,format 1, channels 3, flags 4
+11-01 17:32:34.808 295 382 E AudioTrack: Could not get audio output for session 177, stream type -1, usage 13, sample rate 48000, format 0x1, channel mask 0x3, flags 0x4
+11-01 17:32:34.808 295 382 E SoundPool: Error creating AudioTrack
+11-01 17:32:34.810 295 1316 I ActivityManager: START u0 {flg=0x14000000 cmp=com.antutu.ABenchMark/com.antutu.benchmark.activity.ScoreBenchActivity (has extras)} from uid 10058
+11-01 17:32:34.856 2344 2344 W Notification: Use of stream types is deprecated for operations other than volume control
+11-01 17:32:34.856 2344 2344 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
+11-01 17:32:34.859 295 295 D ZenLog : disable_effects: 0|com.antutu.ABenchMark|13891|null|10058,booleanState
+11-01 17:32:34.926 295 319 I ActivityManager: Displayed com.antutu.ABenchMark/com.antutu.benchmark.activity.ScoreBenchActivity: +99ms
+11-01 17:32:35.636 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:35.639 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:35.641 295 1701 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:32:35.641 295 1701 D OpenGLRenderer: Swap behavior 1
+11-01 17:32:35.641 295 1701 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:32:35.641 295 1701 D OpenGLRenderer: Swap behavior 0
+11-01 17:32:36.514 295 1319 I ActivityManager: START u0 {act=com.antutu.benchmark.full.MAROONED_RUN flg=0x14000000 cmp=com.antutu.benchmark.full/.UnityPlayerActivity (has extras)} from uid 10058
+11-01 17:32:36.536 295 1316 I ActivityManager: Start proc 7493:com.antutu.benchmark.full/u0a57 for activity com.antutu.benchmark.full/.UnityPlayerActivity
+11-01 17:32:36.630 295 1316 W ActivityManager: Slow operation: 65ms so far, now at attachApplicationLocked: after mServices.attachApplicationLocked
+11-01 17:32:36.735 295 1253 W Binder : Outgoing transactions from this process must be FLAG_ONEWAY
+11-01 17:32:36.735 295 1253 W Binder : java.lang.Throwable
+11-01 17:32:36.735 295 1253 W Binder : at android.os.BinderProxy.transact(Binder.java:736)
+11-01 17:32:36.735 295 1253 W Binder : at android.content.ContentProviderProxy.getType(ContentProviderNative.java:451)
+11-01 17:32:36.735 295 1253 W Binder : at com.android.server.am.ActivityManagerService.getProviderMimeType(ActivityManagerService.java:12097)
+11-01 17:32:36.735 295 1253 W Binder : at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:1799)
+11-01 17:32:36.735 295 1253 W Binder : at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2935)
+11-01 17:32:36.735 295 1253 W Binder : at android.os.Binder.execTransact(Binder.java:674)
+11-01 17:32:36.791 7493 7512 D OpenGLRenderer: HWUI GL Pipeline
+11-01 17:32:36.822 7493 7512 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:36.825 7493 7512 E IMGSRV : :0: PVRSRVOpenDCDevice: Error - 138 returned
+11-01 17:32:36.830 7493 7512 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:36.831 7493 7512 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:32:36.831 7493 7512 D OpenGLRenderer: Swap behavior 1
+11-01 17:32:36.831 7493 7512 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:32:36.831 7493 7512 D OpenGLRenderer: Swap behavior 0
+11-01 17:32:36.848 7493 7493 I UnityMain: type=1400 audit(0.0:122): avc: denied { read } for name="stat" dev="proc" ino=4026532090 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:proc_stat:s0 tclass=file permissive=1
+11-01 17:32:36.848 7493 7493 I UnityMain: type=1400 audit(0.0:123): avc: denied { open } for path="/proc/stat" dev="proc" ino=4026532090 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:proc_stat:s0 tclass=file permissive=1
+11-01 17:32:36.972 7493 7512 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:37.001 295 319 I ActivityManager: Displayed com.antutu.benchmark.full/.UnityPlayerActivity: +476ms
+11-01 17:32:37.058 7493 7511 D Unity : GL_EXT_debug_marker GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_vertex_half_float GL_OES_texture_float GL_OES_texture_half_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_fragment_precision_high GL_OES_compressed_ETC1_RGB8_texture GL_OES_fbo_render_mipmap GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_required_internalformat GL_OES_depth_texture GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_standard_derivatives GL_OES_vertex_array_object GL_OES_egl_sync GL_OES_texture_npot GL_OES_surfaceless_context GL_EXT_discard_framebuffer GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_multisampled_render_to_texture GL_EXT_shader_texture_lod GL_EXT_texture_format_BGRA8888 GL_EXT_occlusion_query_boolean GL_EXT_texture_rg GL_EXT_draw_buffers GL_EXT_shader_framebuffer_fetch GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_compression_pvrtc2 GL_IMG_texture_npot GL_IMG_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_program_binary GL_IMG_uniform_buffer_object GL_IMG_multisampled
+11-01 17:32:37.059 7493 7511 D Unity : _render_to_texture GL_KHR_debug
+11-01 17:32:37.156 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:37.157 7493 7523 E AudioTrack: Unable to query output sample rate for stream type -1; status -1
+11-01 17:32:37.157 7493 7523 E AudioTrack-JNI: AudioTrack::getMinFrameCount() for sample rate 24000 failed with status -1
+11-01 17:32:37.157 7493 7523 E android.media.AudioTrack: getMinBufferSize(): error querying hardware
+11-01 17:32:37.158 7493 7511 W libc : pthread_create sched_setscheduler call failed: Operation not permitted
+11-01 17:32:37.158 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 24000,format 1, channels 3, flags 0
+11-01 17:32:37.158 7493 7523 E AudioTrack: Could not get audio output for session 185, stream type -1, usage 1, sample rate 24000, format 0x1, channel mask 0x3, flags 0
+11-01 17:32:37.158 7493 7523 E AudioTrack-JNI: Error -22 initializing AudioTrack
+11-01 17:32:37.158 7493 7523 E android.media.AudioTrack: Error code -20 when initializing AudioTrack.
+11-01 17:32:37.158 7493 7523 W AudioTrack: Use of stream types is deprecated for operations other than volume control
+11-01 17:32:37.158 7493 7523 W AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
+11-01 17:32:37.158 7493 7523 E FMOD : AudioTrack failed to initialize (status 0)
+11-01 17:32:37.159 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:37.159 7493 7523 E AudioTrack: Unable to query output sample rate for stream type -1; status -1
+11-01 17:32:37.159 7493 7523 E AudioTrack-JNI: AudioTrack::getMinFrameCount() for sample rate 24000 failed with status -1
+11-01 17:32:37.159 7493 7523 E android.media.AudioTrack: getMinBufferSize(): error querying hardware
+11-01 17:32:37.159 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 24000,format 1, channels 3, flags 0
+11-01 17:32:37.159 7493 7523 E AudioTrack: Could not get audio output for session 193, stream type -1, usage 1, sample rate 24000, format 0x1, channel mask 0x3, flags 0
+11-01 17:32:37.160 7493 7523 E AudioTrack-JNI: Error -22 initializing AudioTrack
+11-01 17:32:37.160 7493 7523 E android.media.AudioTrack: Error code -20 when initializing AudioTrack.
+11-01 17:32:37.160 7493 7523 W AudioTrack: Use of stream types is deprecated for operations other than volume control
+11-01 17:32:37.160 7493 7523 W AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
+11-01 17:32:37.160 7493 7523 E FMOD : AudioTrack failed to initialize (status 0)
+11-01 17:32:37.160 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:37.160 7493 7523 E AudioTrack: Unable to query output sample rate for stream type -1; status -1
+11-01 17:32:37.160 7493 7523 E AudioTrack-JNI: AudioTrack::getMinFrameCount() for sample rate 24000 failed with status -1
+11-01 17:32:37.160 7493 7523 E android.media.AudioTrack: getMinBufferSize(): error querying hardware
+11-01 17:32:37.160 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 24000,format 1, channels 3, flags 0
+11-01 17:32:37.161 7493 7523 E AudioTrack: Could not get audio output for session 201, stream type -1, usage 1, sample rate 24000, format 0x1, channel mask 0x3, flags 0
+11-01 17:32:37.161 7493 7523 E AudioTrack-JNI: Error -22 initializing AudioTrack
+11-01 17:32:37.161 7493 7523 E android.media.AudioTrack: Error code -20 when initializing AudioTrack.
+11-01 17:32:37.161 7493 7523 W AudioTrack: Use of stream types is deprecated for operations other than volume control
+11-01 17:32:37.161 7493 7523 W AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
+11-01 17:32:37.161 7493 7523 E FMOD : AudioTrack failed to initialize (status 0)
+11-01 17:32:37.295 7493 7511 V MediaRouter: Adding route: RouteInfo{ name=Tablet, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
+11-01 17:32:37.297 7493 7511 V MediaRouter: Selecting route: RouteInfo{ name=Tablet, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
+11-01 17:32:37.311 295 295 D ZenLog : disable_effects: 0|android|40|null|1000,booleanState
+11-01 17:32:37.348 409 409 W com.android.systemui: type=1400 audit(0.0:124): avc: granted { getattr } for comm=496E666C6174657254687265616420 path="/" dev="rootfs" ino=1 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:rootfs:s0 tclass=dir
+11-01 17:32:37.500 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:37.526 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:32:37.545 295 1701 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:32:37.549 295 1701 D OpenGLRenderer: Swap behavior 1
+11-01 17:32:37.549 295 1701 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:32:37.549 295 1701 D OpenGLRenderer: Swap behavior 0
+11-01 17:32:37.598 409 409 I chatty : uid=10013(u0_a13) com.android.systemui expire 16 lines
+11-01 17:32:37.598 409 409 W com.android.systemui: type=1400 audit(0.0:141): avc: granted { getattr } for comm=496E666C6174657254687265616420 path="/" dev="rootfs" ino=1 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:rootfs:s0 tclass=dir
+11-01 17:32:38.155 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:38.155 7493 7532 E AudioTrack: Unable to query output sample rate for stream type -1; status -1
+11-01 17:32:38.155 7493 7532 E AudioTrack-JNI: AudioTrack::getMinFrameCount() for sample rate 24000 failed with status -1
+11-01 17:32:38.155 7493 7532 E android.media.AudioTrack: getMinBufferSize(): error querying hardware
+11-01 17:32:38.155 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 24000,format 1, channels 3, flags 0
+11-01 17:32:38.155 7493 7532 E AudioTrack: Could not get audio output for session 209, stream type -1, usage 1, sample rate 24000, format 0x1, channel mask 0x3, flags 0
+11-01 17:32:38.155 7493 7532 E AudioTrack-JNI: Error -22 initializing AudioTrack
+11-01 17:32:38.155 7493 7532 E android.media.AudioTrack: Error code -20 when initializing AudioTrack.
+11-01 17:32:38.155 7493 7532 W AudioTrack: Use of stream types is deprecated for operations other than volume control
+11-01 17:32:38.155 7493 7532 W AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
+11-01 17:32:38.155 7493 7532 E FMOD : AudioTrack failed to initialize (status 0)
+11-01 17:32:38.156 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:38.156 7493 7532 E AudioTrack: Unable to query output sample rate for stream type -1; status -1
+11-01 17:32:38.156 7493 7532 E AudioTrack-JNI: AudioTrack::getMinFrameCount() for sample rate 24000 failed with status -1
+11-01 17:32:38.156 7493 7532 E android.media.AudioTrack: getMinBufferSize(): error querying hardware
+11-01 17:32:38.156 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 24000,format 1, channels 3, flags 0
+11-01 17:32:38.156 7493 7532 E AudioTrack: Could not get audio output for session 217, stream type -1, usage 1, sample rate 24000, format 0x1, channel mask 0x3, flags 0
+11-01 17:32:38.157 7493 7532 E AudioTrack-JNI: Error -22 initializing AudioTrack
+11-01 17:32:38.157 7493 7532 E android.media.AudioTrack: Error code -20 when initializing AudioTrack.
+11-01 17:32:38.157 7493 7532 W AudioTrack: Use of stream types is deprecated for operations other than volume control
+11-01 17:32:38.157 7493 7532 W AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
+11-01 17:32:38.157 7493 7532 E FMOD : AudioTrack failed to initialize (status 0)
+11-01 17:32:38.157 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:32:38.157 7493 7532 E AudioTrack: Unable to query output sample rate for stream type -1; status -1
+11-01 17:32:38.157 7493 7532 E AudioTrack-JNI: AudioTrack::getMinFrameCount() for sample rate 24000 failed with status -1
+11-01 17:32:38.157 7493 7532 E android.media.AudioTrack: getMinBufferSize(): error querying hardware
+11-01 17:32:38.157 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 3, samplingRate 24000,format 1, channels 3, flags 0
+11-01 17:32:38.157 7493 7532 E AudioTrack: Could not get audio output for session 225, stream type -1, usage 1, sample rate 24000, format 0x1, channel mask 0x3, flags 0
+11-01 17:32:38.162 7493 7532 E AudioTrack-JNI: Error -22 initializing AudioTrack
+11-01 17:32:38.162 7493 7532 E android.media.AudioTrack: Error code -20 when initializing AudioTrack.
+11-01 17:32:38.165 7493 7532 W AudioTrack: Use of stream types is deprecated for operations other than volume control
+11-01 17:32:38.166 7493 7532 W AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
+11-01 17:32:38.166 7493 7532 E FMOD : AudioTrack failed to initialize (status 0)
+11-01 17:32:38.412 295 312 W Looper : Dispatch took 848ms on android.ui, h=Handler (com.android.server.policy.ImmersiveModeConfirmation$H) {27e1a27} cb=null msg=1
+11-01 17:32:38.533 7493 7511 W Unity : Hardware resolution scaling not supported, falling back to software scaling (blit).
+11-01 17:32:38.533 7493 7511 W Unity :
+11-01 17:32:38.533 7493 7511 W Unity : (Filename: Line: 467)
+11-01 17:32:38.533 7493 7511 W Unity :
+11-01 17:32:39.515 295 395 E TaskPersister: File error accessing recents directory (directory doesn't exist?).
+11-01 17:32:42.254 7493 7519 E Unity : -------- GLSL link error:
+11-01 17:32:42.254 7493 7519 E Unity :
+11-01 17:32:42.254 7493 7519 E Unity :
+11-01 17:32:42.254 7493 7519 E Unity :
+11-01 17:32:42.254 7493 7519 E Unity : (Filename: Line: 582)
+11-01 17:32:42.254 7493 7519 E Unity :
+11-01 17:32:42.306 7493 7519 D Unity : #version 100
+11-01 17:32:42.306 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:42.306 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:42.306 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:42.306 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:42.306 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp mat4 unity_World2Shadow[4];
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:42.306 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:42.306 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:42.306 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:42.306 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:42.307 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:42.307 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:42.307 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:42.307 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:42.307 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD6;
+11-01 17:32:42.307 7493 7519 D Unity : void main ()
+11-01 17:32:42.307 7493 7519 D Unity : {
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:42.307 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec4 tmpvar_10;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec4 tmpvar_11;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_11 = (_Object2World * _glesVertex);
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:42.307 7493 7519 D Unity : highp vec4 texcoord_12;
+11-01 17:32:42.307 7493 7519 D Unity : texcoord_12.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:42.307 7493 7519 D Unity : highp vec2 tmpvar_13;
+11-01 17:32:42.307 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_13 = tmpvar_2;
+11-01 17:32:42.307 7493 7519 D Unity : } else {
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_13 = tmpvar_3;
+11-01 17:32:42.307 7493 7519 D Unity : };
+11-01 17:32:42.307 7493 7519 D Unity : texcoord_12.zw = ((tmpvar_13 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec3 n_14;
+11-01 17:32:42.307 7493 7519 D Unity : n_14 = (tmpvar_11.xyz - _WorldSpaceCameraPos);
+11-01 17:32:42.307 7493 7519 D Unity : highp vec3 norm_15;
+11-01 17:32:42.307 7493 7519 D Unity : norm_15 = tmpvar_1;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:42.307 7493 7519 D Unity : v_16.x = _World2Object[0].x;
+11-01 17:32:42.307 7493 7519 D Unity : v_16.y = _World2Object[1].x;
+11-01 17:32:42.307 7493 7519 D Unity : v_16.z = _World2Object[2].x;
+11-01 17:32:42.307 7493 7519 D Unity : v_16.w = _World2Object[3].x;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:42.307 7493 7519 D Unity : v_17.x = _World2Object[0].y;
+11-01 17:32:42.307 7493 7519 D Unity : v_17.y = _World2Object[1].y;
+11-01 17:32:42.307 7493 7519 D Unity : v_17.z = _World2Object[2].y;
+11-01 17:32:42.307 7493 7519 D Unity : v_17.w = _World2Object[3].y;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec4 v_18;
+11-01 17:32:42.307 7493 7519 D Unity : v_18.x = _World2Object[0].z;
+11-01 17:32:42.307 7493 7519 D Unity : v_18.y = _World2Object[1].z;
+11-01 17:32:42.307 7493 7519 D Unity : v_18.z = _World2Object[2].z;
+11-01 17:32:42.307 7493 7519 D Unity : v_18.w = _World2Object[3].z;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec3 tmpvar_19;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_19 = normalize(((
+11-01 17:32:42.307 7493 7519 D Unity : (v_16.xyz * norm_15.x)
+11-01 17:32:42.307 7493 7519 D Unity : +
+11-01 17:32:42.307 7493 7519 D Unity : (v_17.xyz * norm_15.y)
+11-01 17:32:42.307 7493 7519 D Unity : ) + (v_18.xyz * norm_15.z)));
+11-01 17:32:42.307 7493 7519 D Unity : highp vec3 dir_20;
+11-01 17:32:42.307 7493 7519 D Unity : dir_20 = tmpvar_4.xyz;
+11-01 17:32:42.307 7493 7519 D Unity : highp mat3 tmpvar_21;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_21[0] = _Object2World[0].xyz;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_21[1] = _Object2World[1].xyz;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_21[2] = _Object2World[2].xyz;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec4 tmpvar_22;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_22.xyz = normalize((tmpvar_21 * dir_20));
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_22.w = tmpvar_4.w;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec3 normal_23;
+11-01 17:32:42.307 7493 7519 D Unity : normal_23 = tmpvar_19;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec3 tangent_24;
+11-01 17:32:42.307 7493 7519 D Unity : tangent_24 = tmpvar_22.xyz;
+11-01 17:32:42.307 7493 7519 D Unity : mediump float tangentSign_25;
+11-01 17:32:42.307 7493 7519 D Unity : tangentSign_25 = tmpvar_22.w;
+11-01 17:32:42.307 7493 7519 D Unity : mediump float sign_26;
+11-01 17:32:42.307 7493 7519 D Unity : highp float tmpvar_27;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_27 = (tangentSign_25 * unity_WorldTransformParams.w);
+11-01 17:32:42.307 7493 7519 D Unity : sign_26 = tmpvar_27;
+11-01 17:32:42.307 7493 7519 D Unity : mediump vec3 tmpvar_28;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_28 = (((normal_23.yzx * tangent_24.zxy) - (normal_23.zxy * tangent_24.yzx)) * sign_26);
+11-01 17:32:42.307 7493 7519 D Unity : mediump mat3 tmpvar_29;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[0].x = tangent_24.x;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[0].y = tmpvar_28.x;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[0].z = normal_23.x;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[1].x = tangent_24.y;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[1].y = tmpvar_28.y;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[1].z = normal_23.y;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[2].x = tangent_24.z;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[2].y = tmpvar_28.z;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_29[2].z = normal_23.z;
+11-01 17:32:42.307 7493 7519 D Unity : tangentToWorld_5 = tmpvar_29;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:42.307 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].x;
+11-01 17:32:42.307 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].x;
+11-01 17:32:42.307 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].x;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_7.xyz = v_30;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:42.307 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].y;
+11-01 17:32:42.307 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].y;
+11-01 17:32:42.307 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].y;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_8.xyz = v_31;
+11-01 17:32:42.307 7493 7519 D Unity : highp vec3 v_32;
+11-01 17:32:42.307 7493 7519 D Unity : v_32.x = tangentToWorld_5[0].z;
+11-01 17:32:42.307 7493 7519 D Unity : v_32.y = tangentToWorld_5[1].z;
+11-01 17:32:42.307 7493 7519 D Unity : v_32.z = tangentToWorld_5[2].z;
+11-01 17:32:42.307 7493 7519 D Unity : tmpvar_9.xyz = v_32;
+11-01 17:32:42.308 7493 7519 D Unity : tmpvar_10 = (unity_World2Shadow[0] * (_Object2World * _glesVertex));
+11-01 17:32:42.308 7493 7519 D Unity : mediump vec3 normalWorld_33;
+11-01 17:32:42.308 7493 7519 D Unity : normalWorld_33 = tmpvar_19;
+11-01 17:32:42.308 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_34;
+11-01 17:32:42.308 7493 7519 D Unity : ambientOrLightmapUV_34.w = 0.0;
+11-01 17:32:42.308 7493 7519 D Unity : mediump vec4 tmpvar_35;
+11-01 17:32:42.308 7493 7519 D Unity : tmpvar_35.w = 1.0;
+11-01 17:32:42.308 7493 7519 D Unity : tmpvar_35.xyz = normalWorld_33;
+11-01 17:32:42.308 7493 7519 D Unity : mediump vec3 x2_36;
+11-01 17:32:42.308 7493 7519 D Unity : mediump vec3 x1_37;
+11-01 17:32:42.308 7493 7519 D Unity : x1_37.x = dot (unity_SHAr, tmpvar_35);
+11-01 17:32:42.308 7493 7519 D Unity : x1_37.y = dot (unity_SHAg, tmpvar_35);
+11-01 17:32:42.308 7493 7519 D Unity : x1_37.z = dot (unity_SHAb, tmpvar_35);
+11-01 17:32:42.308 7493 7519 D Unity : mediump vec4 tmpvar_38;
+11-01 17:32:42.308 7493 7519 D Unity : tmpvar_38 = (normalWorld_33.xyzz * normalWorld_33.yzzx);
+11-01 17:32:42.308 7493 7519 D Unity : x2_36.x = dot (unity_SHBr, tmpvar_38);
+11-01 17:32:42.308 7493 7519 D Unity : x2_36.y = dot (unity_SHBg, tmpvar_38);
+11-01 17:32:42.308 7493 7519 D Unity : x2_36.z = dot (unity_SHBb, tmpvar_38);
+11-01 17:32:42.308 7493 7519 D Unity : ambientOrLightmapUV_34.xyz = ((x2_36 + (unity_SHC.xyz *
+11-01 17:32:42.308 7493 7519 D Unity : ((normalWorld_33.x * normalWorld_33.x) - (normalWorld_33.y * normalWorld_33.y))
+11-01 17:32:42.308 7493 7519 D Unity : )) + x1_37);
+11-01 17:32:42.308 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:42.308 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_12;
+11-01 17:32:42.308 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_14);
+11-01 17:32:42.308 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:42.308 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:42.308 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:42.308 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_34;
+11-01 17:32:42.308 7493 7519 D Unity : xlv_TEXCOORD6 = tmpvar_10;
+11-01 17:32:42.308 7493 7519 D Unity : }
+11-01 17:32:42.308 7493 7519 D Unity : vertex shader
+11-01 17:32:42.308 7493 7519 D Unity : Compile failed.
+11-01 17:32:42.330 7493 7519 D Unity : #version 100
+11-01 17:32:42.330 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:42.330 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:42.330 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:42.330 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:42.330 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp mat4 unity_World2Shadow[4];
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:42.330 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:42.330 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:42.330 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:42.330 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:42.330 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:42.330 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:42.330 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:42.330 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:42.330 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD6;
+11-01 17:32:42.330 7493 7519 D Unity : void main ()
+11-01 17:32:42.330 7493 7519 D Unity : {
+11-01 17:32:42.330 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:42.330 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:42.330 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:42.330 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:42.330 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:42.330 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:42.330 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:42.330 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:42.330 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:42.330 7493 7519 D Unity : mediump vec4 tmpvar_10;
+11-01 17:32:42.330 7493 7519 D Unity : highp vec4 tmpvar_11;
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_11 = (_Object2World * _glesVertex);
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:42.330 7493 7519 D Unity : highp vec4 texcoord_12;
+11-01 17:32:42.330 7493 7519 D Unity : texcoord_12.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:42.330 7493 7519 D Unity : highp vec2 tmpvar_13;
+11-01 17:32:42.330 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_13 = tmpvar_2;
+11-01 17:32:42.330 7493 7519 D Unity : } else {
+11-01 17:32:42.330 7493 7519 D Unity : tmpvar_13 = tmpvar_3;
+11-01 17:32:42.330 7493 7519 D Unity : };
+11-01 17:32:42.331 7493 7519 D Unity : texcoord_12.zw = ((tmpvar_13 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec3 n_14;
+11-01 17:32:42.331 7493 7519 D Unity : n_14 = (tmpvar_11.xyz - _WorldSpaceCameraPos);
+11-01 17:32:42.331 7493 7519 D Unity : highp vec3 norm_15;
+11-01 17:32:42.331 7493 7519 D Unity : norm_15 = tmpvar_1;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:42.331 7493 7519 D Unity : v_16.x = _World2Object[0].x;
+11-01 17:32:42.331 7493 7519 D Unity : v_16.y = _World2Object[1].x;
+11-01 17:32:42.331 7493 7519 D Unity : v_16.z = _World2Object[2].x;
+11-01 17:32:42.331 7493 7519 D Unity : v_16.w = _World2Object[3].x;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:42.331 7493 7519 D Unity : v_17.x = _World2Object[0].y;
+11-01 17:32:42.331 7493 7519 D Unity : v_17.y = _World2Object[1].y;
+11-01 17:32:42.331 7493 7519 D Unity : v_17.z = _World2Object[2].y;
+11-01 17:32:42.331 7493 7519 D Unity : v_17.w = _World2Object[3].y;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec4 v_18;
+11-01 17:32:42.331 7493 7519 D Unity : v_18.x = _World2Object[0].z;
+11-01 17:32:42.331 7493 7519 D Unity : v_18.y = _World2Object[1].z;
+11-01 17:32:42.331 7493 7519 D Unity : v_18.z = _World2Object[2].z;
+11-01 17:32:42.331 7493 7519 D Unity : v_18.w = _World2Object[3].z;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec3 tmpvar_19;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_19 = normalize(((
+11-01 17:32:42.331 7493 7519 D Unity : (v_16.xyz * norm_15.x)
+11-01 17:32:42.331 7493 7519 D Unity : +
+11-01 17:32:42.331 7493 7519 D Unity : (v_17.xyz * norm_15.y)
+11-01 17:32:42.331 7493 7519 D Unity : ) + (v_18.xyz * norm_15.z)));
+11-01 17:32:42.331 7493 7519 D Unity : highp vec3 dir_20;
+11-01 17:32:42.331 7493 7519 D Unity : dir_20 = tmpvar_4.xyz;
+11-01 17:32:42.331 7493 7519 D Unity : highp mat3 tmpvar_21;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_21[0] = _Object2World[0].xyz;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_21[1] = _Object2World[1].xyz;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_21[2] = _Object2World[2].xyz;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec4 tmpvar_22;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_22.xyz = normalize((tmpvar_21 * dir_20));
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_22.w = tmpvar_4.w;
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec3 normal_23;
+11-01 17:32:42.331 7493 7519 D Unity : normal_23 = tmpvar_19;
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec3 tangent_24;
+11-01 17:32:42.331 7493 7519 D Unity : tangent_24 = tmpvar_22.xyz;
+11-01 17:32:42.331 7493 7519 D Unity : mediump float tangentSign_25;
+11-01 17:32:42.331 7493 7519 D Unity : tangentSign_25 = tmpvar_22.w;
+11-01 17:32:42.331 7493 7519 D Unity : mediump float sign_26;
+11-01 17:32:42.331 7493 7519 D Unity : highp float tmpvar_27;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_27 = (tangentSign_25 * unity_WorldTransformParams.w);
+11-01 17:32:42.331 7493 7519 D Unity : sign_26 = tmpvar_27;
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec3 tmpvar_28;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_28 = (((normal_23.yzx * tangent_24.zxy) - (normal_23.zxy * tangent_24.yzx)) * sign_26);
+11-01 17:32:42.331 7493 7519 D Unity : mediump mat3 tmpvar_29;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[0].x = tangent_24.x;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[0].y = tmpvar_28.x;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[0].z = normal_23.x;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[1].x = tangent_24.y;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[1].y = tmpvar_28.y;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[1].z = normal_23.y;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[2].x = tangent_24.z;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[2].y = tmpvar_28.z;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_29[2].z = normal_23.z;
+11-01 17:32:42.331 7493 7519 D Unity : tangentToWorld_5 = tmpvar_29;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:42.331 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].x;
+11-01 17:32:42.331 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].x;
+11-01 17:32:42.331 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].x;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_7.xyz = v_30;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:42.331 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].y;
+11-01 17:32:42.331 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].y;
+11-01 17:32:42.331 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].y;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_8.xyz = v_31;
+11-01 17:32:42.331 7493 7519 D Unity : highp vec3 v_32;
+11-01 17:32:42.331 7493 7519 D Unity : v_32.x = tangentToWorld_5[0].z;
+11-01 17:32:42.331 7493 7519 D Unity : v_32.y = tangentToWorld_5[1].z;
+11-01 17:32:42.331 7493 7519 D Unity : v_32.z = tangentToWorld_5[2].z;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_9.xyz = v_32;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_10 = (unity_World2Shadow[0] * (_Object2World * _glesVertex));
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec3 normalWorld_33;
+11-01 17:32:42.331 7493 7519 D Unity : normalWorld_33 = tmpvar_19;
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_34;
+11-01 17:32:42.331 7493 7519 D Unity : ambientOrLightmapUV_34.w = 0.0;
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec4 tmpvar_35;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_35.w = 1.0;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_35.xyz = normalWorld_33;
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec3 x2_36;
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec3 x1_37;
+11-01 17:32:42.331 7493 7519 D Unity : x1_37.x = dot (unity_SHAr, tmpvar_35);
+11-01 17:32:42.331 7493 7519 D Unity : x1_37.y = dot (unity_SHAg, tmpvar_35);
+11-01 17:32:42.331 7493 7519 D Unity : x1_37.z = dot (unity_SHAb, tmpvar_35);
+11-01 17:32:42.331 7493 7519 D Unity : mediump vec4 tmpvar_38;
+11-01 17:32:42.331 7493 7519 D Unity : tmpvar_38 = (normalWorld_33.xyzz * normalWorld_33.yzzx);
+11-01 17:32:42.331 7493 7519 D Unity : x2_36.x = dot (unity_SHBr, tmpvar_38);
+11-01 17:32:42.331 7493 7519 D Unity : x2_36.y = dot (unity_SHBg, tmpvar_38);
+11-01 17:32:42.331 7493 7519 D Unity : x2_36.z = dot (unity_SHBb, tmpvar_38);
+11-01 17:32:42.331 7493 7519 D Unity : ambientOrLightmapUV_34.xyz = ((x2_36 + (unity_SHC.xyz *
+11-01 17:32:42.331 7493 7519 D Unity : ((normalWorld_33.x * normalWorld_33.x) - (normalWorld_33.y * normalWorld_33.y))
+11-01 17:32:42.331 7493 7519 D Unity : )) + x1_37);
+11-01 17:32:42.331 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:42.331 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_12;
+11-01 17:32:42.331 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_14);
+11-01 17:32:42.331 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:42.331 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:42.331 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:42.331 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_34;
+11-01 17:32:42.331 7493 7519 D Unity : xlv_TEXCOORD6 = tmpvar_10;
+11-01 17:32:42.331 7493 7519 D Unity : }
+11-01 17:32:42.331 7493 7519 D Unity : vertex shader
+11-01 17:32:42.331 7493 7519 D Unity : Compile failed.
+11-01 17:32:42.354 7493 7519 D Unity : #version 100
+11-01 17:32:42.355 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:42.355 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:42.355 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:42.355 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:42.355 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:42.355 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:42.355 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:42.355 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:42.355 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:42.355 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:42.355 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:42.355 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:42.355 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:42.355 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:42.355 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:42.355 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:42.355 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:42.355 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:42.355 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:42.355 7493 7519 D Unity : void main ()
+11-01 17:32:42.355 7493 7519 D Unity : {
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:42.355 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec4 tmpvar_10;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_10 = (_Object2World * _glesVertex);
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:42.355 7493 7519 D Unity : highp vec4 texcoord_11;
+11-01 17:32:42.355 7493 7519 D Unity : texcoord_11.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:42.355 7493 7519 D Unity : highp vec2 tmpvar_12;
+11-01 17:32:42.355 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_12 = tmpvar_2;
+11-01 17:32:42.355 7493 7519 D Unity : } else {
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_12 = tmpvar_3;
+11-01 17:32:42.355 7493 7519 D Unity : };
+11-01 17:32:42.355 7493 7519 D Unity : texcoord_11.zw = ((tmpvar_12 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec3 n_13;
+11-01 17:32:42.355 7493 7519 D Unity : n_13 = (tmpvar_10.xyz - _WorldSpaceCameraPos);
+11-01 17:32:42.355 7493 7519 D Unity : highp vec3 norm_14;
+11-01 17:32:42.355 7493 7519 D Unity : norm_14 = tmpvar_1;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec4 v_15;
+11-01 17:32:42.355 7493 7519 D Unity : v_15.x = _World2Object[0].x;
+11-01 17:32:42.355 7493 7519 D Unity : v_15.y = _World2Object[1].x;
+11-01 17:32:42.355 7493 7519 D Unity : v_15.z = _World2Object[2].x;
+11-01 17:32:42.355 7493 7519 D Unity : v_15.w = _World2Object[3].x;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:42.355 7493 7519 D Unity : v_16.x = _World2Object[0].y;
+11-01 17:32:42.355 7493 7519 D Unity : v_16.y = _World2Object[1].y;
+11-01 17:32:42.355 7493 7519 D Unity : v_16.z = _World2Object[2].y;
+11-01 17:32:42.355 7493 7519 D Unity : v_16.w = _World2Object[3].y;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:42.355 7493 7519 D Unity : v_17.x = _World2Object[0].z;
+11-01 17:32:42.355 7493 7519 D Unity : v_17.y = _World2Object[1].z;
+11-01 17:32:42.355 7493 7519 D Unity : v_17.z = _World2Object[2].z;
+11-01 17:32:42.355 7493 7519 D Unity : v_17.w = _World2Object[3].z;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec3 tmpvar_18;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_18 = normalize(((
+11-01 17:32:42.355 7493 7519 D Unity : (v_15.xyz * norm_14.x)
+11-01 17:32:42.355 7493 7519 D Unity : +
+11-01 17:32:42.355 7493 7519 D Unity : (v_16.xyz * norm_14.y)
+11-01 17:32:42.355 7493 7519 D Unity : ) + (v_17.xyz * norm_14.z)));
+11-01 17:32:42.355 7493 7519 D Unity : highp vec3 dir_19;
+11-01 17:32:42.355 7493 7519 D Unity : dir_19 = tmpvar_4.xyz;
+11-01 17:32:42.355 7493 7519 D Unity : highp mat3 tmpvar_20;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_20[0] = _Object2World[0].xyz;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_20[1] = _Object2World[1].xyz;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_20[2] = _Object2World[2].xyz;
+11-01 17:32:42.355 7493 7519 D Unity : highp vec4 tmpvar_21;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_21.xyz = normalize((tmpvar_20 * dir_19));
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_21.w = tmpvar_4.w;
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec3 normal_22;
+11-01 17:32:42.355 7493 7519 D Unity : normal_22 = tmpvar_18;
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec3 tangent_23;
+11-01 17:32:42.355 7493 7519 D Unity : tangent_23 = tmpvar_21.xyz;
+11-01 17:32:42.355 7493 7519 D Unity : mediump float tangentSign_24;
+11-01 17:32:42.355 7493 7519 D Unity : tangentSign_24 = tmpvar_21.w;
+11-01 17:32:42.355 7493 7519 D Unity : mediump float sign_25;
+11-01 17:32:42.355 7493 7519 D Unity : highp float tmpvar_26;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_26 = (tangentSign_24 * unity_WorldTransformParams.w);
+11-01 17:32:42.355 7493 7519 D Unity : sign_25 = tmpvar_26;
+11-01 17:32:42.355 7493 7519 D Unity : mediump vec3 tmpvar_27;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_27 = (((normal_22.yzx * tangent_23.zxy) - (normal_22.zxy * tangent_23.yzx)) * sign_25);
+11-01 17:32:42.355 7493 7519 D Unity : mediump mat3 tmpvar_28;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_28[0].x = tangent_23.x;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_28[0].y = tmpvar_27.x;
+11-01 17:32:42.355 7493 7519 D Unity : tmpvar_28[0].z = normal_22.x;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_28[1].x = tangent_23.y;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_28[1].y = tmpvar_27.y;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_28[1].z = normal_22.y;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_28[2].x = tangent_23.z;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_28[2].y = tmpvar_27.z;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_28[2].z = normal_22.z;
+11-01 17:32:42.356 7493 7519 D Unity : tangentToWorld_5 = tmpvar_28;
+11-01 17:32:42.356 7493 7519 D Unity : highp vec3 v_29;
+11-01 17:32:42.356 7493 7519 D Unity : v_29.x = tangentToWorld_5[0].x;
+11-01 17:32:42.356 7493 7519 D Unity : v_29.y = tangentToWorld_5[1].x;
+11-01 17:32:42.356 7493 7519 D Unity : v_29.z = tangentToWorld_5[2].x;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_7.xyz = v_29;
+11-01 17:32:42.356 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:42.356 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].y;
+11-01 17:32:42.356 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].y;
+11-01 17:32:42.356 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].y;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_8.xyz = v_30;
+11-01 17:32:42.356 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:42.356 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].z;
+11-01 17:32:42.356 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].z;
+11-01 17:32:42.356 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].z;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_9.xyz = v_31;
+11-01 17:32:42.356 7493 7519 D Unity : mediump vec3 normalWorld_32;
+11-01 17:32:42.356 7493 7519 D Unity : normalWorld_32 = tmpvar_18;
+11-01 17:32:42.356 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_33;
+11-01 17:32:42.356 7493 7519 D Unity : ambientOrLightmapUV_33.w = 0.0;
+11-01 17:32:42.356 7493 7519 D Unity : mediump vec4 tmpvar_34;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_34.w = 1.0;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_34.xyz = normalWorld_32;
+11-01 17:32:42.356 7493 7519 D Unity : mediump vec3 x2_35;
+11-01 17:32:42.356 7493 7519 D Unity : mediump vec3 x1_36;
+11-01 17:32:42.356 7493 7519 D Unity : x1_36.x = dot (unity_SHAr, tmpvar_34);
+11-01 17:32:42.356 7493 7519 D Unity : x1_36.y = dot (unity_SHAg, tmpvar_34);
+11-01 17:32:42.356 7493 7519 D Unity : x1_36.z = dot (unity_SHAb, tmpvar_34);
+11-01 17:32:42.356 7493 7519 D Unity : mediump vec4 tmpvar_37;
+11-01 17:32:42.356 7493 7519 D Unity : tmpvar_37 = (normalWorld_32.xyzz * normalWorld_32.yzzx);
+11-01 17:32:42.356 7493 7519 D Unity : x2_35.x = dot (unity_SHBr, tmpvar_37);
+11-01 17:32:42.356 7493 7519 D Unity : x2_35.y = dot (unity_SHBg, tmpvar_37);
+11-01 17:32:42.356 7493 7519 D Unity : x2_35.z = dot (unity_SHBb, tmpvar_37);
+11-01 17:32:42.356 7493 7519 D Unity : ambientOrLightmapUV_33.xyz = ((x2_35 + (unity_SHC.xyz *
+11-01 17:32:42.356 7493 7519 D Unity : ((normalWorld_32.x * normalWorld_32.x) - (normalWorld_32.y * normalWorld_32.y))
+11-01 17:32:42.356 7493 7519 D Unity : )) + x1_36);
+11-01 17:32:42.356 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:42.356 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_11;
+11-01 17:32:42.356 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_13);
+11-01 17:32:42.356 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:42.356 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:42.356 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:42.356 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_33;
+11-01 17:32:42.356 7493 7519 D Unity : }
+11-01 17:32:42.356 7493 7519 D Unity : vertex shader
+11-01 17:32:42.356 7493 7519 D Unity : Compile failed.
+11-01 17:32:42.379 7493 7519 D Unity : #version 100
+11-01 17:32:42.379 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:42.379 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:42.379 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:42.379 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:42.379 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp mat4 unity_World2Shadow[4];
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:42.379 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:42.379 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:42.379 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:42.379 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:42.379 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:42.379 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:42.379 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:42.379 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:42.379 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD6;
+11-01 17:32:42.379 7493 7519 D Unity : void main ()
+11-01 17:32:42.379 7493 7519 D Unity : {
+11-01 17:32:42.379 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:42.379 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:42.379 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:42.379 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:42.379 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:42.379 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:42.379 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:42.379 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:42.379 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:42.379 7493 7519 D Unity : mediump vec4 tmpvar_10;
+11-01 17:32:42.379 7493 7519 D Unity : highp vec4 tmpvar_11;
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_11 = (_Object2World * _glesVertex);
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:42.379 7493 7519 D Unity : highp vec4 texcoord_12;
+11-01 17:32:42.379 7493 7519 D Unity : texcoord_12.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:42.379 7493 7519 D Unity : highp vec2 tmpvar_13;
+11-01 17:32:42.379 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_13 = tmpvar_2;
+11-01 17:32:42.379 7493 7519 D Unity : } else {
+11-01 17:32:42.379 7493 7519 D Unity : tmpvar_13 = tmpvar_3;
+11-01 17:32:42.379 7493 7519 D Unity : };
+11-01 17:32:42.379 7493 7519 D Unity : texcoord_12.zw = ((tmpvar_13 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec3 n_14;
+11-01 17:32:42.380 7493 7519 D Unity : n_14 = (tmpvar_11.xyz - _WorldSpaceCameraPos);
+11-01 17:32:42.380 7493 7519 D Unity : highp vec3 norm_15;
+11-01 17:32:42.380 7493 7519 D Unity : norm_15 = tmpvar_1;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:42.380 7493 7519 D Unity : v_16.x = _World2Object[0].x;
+11-01 17:32:42.380 7493 7519 D Unity : v_16.y = _World2Object[1].x;
+11-01 17:32:42.380 7493 7519 D Unity : v_16.z = _World2Object[2].x;
+11-01 17:32:42.380 7493 7519 D Unity : v_16.w = _World2Object[3].x;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:42.380 7493 7519 D Unity : v_17.x = _World2Object[0].y;
+11-01 17:32:42.380 7493 7519 D Unity : v_17.y = _World2Object[1].y;
+11-01 17:32:42.380 7493 7519 D Unity : v_17.z = _World2Object[2].y;
+11-01 17:32:42.380 7493 7519 D Unity : v_17.w = _World2Object[3].y;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec4 v_18;
+11-01 17:32:42.380 7493 7519 D Unity : v_18.x = _World2Object[0].z;
+11-01 17:32:42.380 7493 7519 D Unity : v_18.y = _World2Object[1].z;
+11-01 17:32:42.380 7493 7519 D Unity : v_18.z = _World2Object[2].z;
+11-01 17:32:42.380 7493 7519 D Unity : v_18.w = _World2Object[3].z;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec3 tmpvar_19;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_19 = normalize(((
+11-01 17:32:42.380 7493 7519 D Unity : (v_16.xyz * norm_15.x)
+11-01 17:32:42.380 7493 7519 D Unity : +
+11-01 17:32:42.380 7493 7519 D Unity : (v_17.xyz * norm_15.y)
+11-01 17:32:42.380 7493 7519 D Unity : ) + (v_18.xyz * norm_15.z)));
+11-01 17:32:42.380 7493 7519 D Unity : highp vec3 dir_20;
+11-01 17:32:42.380 7493 7519 D Unity : dir_20 = tmpvar_4.xyz;
+11-01 17:32:42.380 7493 7519 D Unity : highp mat3 tmpvar_21;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_21[0] = _Object2World[0].xyz;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_21[1] = _Object2World[1].xyz;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_21[2] = _Object2World[2].xyz;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec4 tmpvar_22;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_22.xyz = normalize((tmpvar_21 * dir_20));
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_22.w = tmpvar_4.w;
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec3 normal_23;
+11-01 17:32:42.380 7493 7519 D Unity : normal_23 = tmpvar_19;
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec3 tangent_24;
+11-01 17:32:42.380 7493 7519 D Unity : tangent_24 = tmpvar_22.xyz;
+11-01 17:32:42.380 7493 7519 D Unity : mediump float tangentSign_25;
+11-01 17:32:42.380 7493 7519 D Unity : tangentSign_25 = tmpvar_22.w;
+11-01 17:32:42.380 7493 7519 D Unity : mediump float sign_26;
+11-01 17:32:42.380 7493 7519 D Unity : highp float tmpvar_27;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_27 = (tangentSign_25 * unity_WorldTransformParams.w);
+11-01 17:32:42.380 7493 7519 D Unity : sign_26 = tmpvar_27;
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec3 tmpvar_28;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_28 = (((normal_23.yzx * tangent_24.zxy) - (normal_23.zxy * tangent_24.yzx)) * sign_26);
+11-01 17:32:42.380 7493 7519 D Unity : mediump mat3 tmpvar_29;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[0].x = tangent_24.x;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[0].y = tmpvar_28.x;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[0].z = normal_23.x;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[1].x = tangent_24.y;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[1].y = tmpvar_28.y;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[1].z = normal_23.y;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[2].x = tangent_24.z;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[2].y = tmpvar_28.z;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_29[2].z = normal_23.z;
+11-01 17:32:42.380 7493 7519 D Unity : tangentToWorld_5 = tmpvar_29;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:42.380 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].x;
+11-01 17:32:42.380 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].x;
+11-01 17:32:42.380 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].x;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_7.xyz = v_30;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:42.380 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].y;
+11-01 17:32:42.380 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].y;
+11-01 17:32:42.380 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].y;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_8.xyz = v_31;
+11-01 17:32:42.380 7493 7519 D Unity : highp vec3 v_32;
+11-01 17:32:42.380 7493 7519 D Unity : v_32.x = tangentToWorld_5[0].z;
+11-01 17:32:42.380 7493 7519 D Unity : v_32.y = tangentToWorld_5[1].z;
+11-01 17:32:42.380 7493 7519 D Unity : v_32.z = tangentToWorld_5[2].z;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_9.xyz = v_32;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_10 = (unity_World2Shadow[0] * (_Object2World * _glesVertex));
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec3 normalWorld_33;
+11-01 17:32:42.380 7493 7519 D Unity : normalWorld_33 = tmpvar_19;
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_34;
+11-01 17:32:42.380 7493 7519 D Unity : ambientOrLightmapUV_34.w = 0.0;
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec4 tmpvar_35;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_35.w = 1.0;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_35.xyz = normalWorld_33;
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec3 x2_36;
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec3 x1_37;
+11-01 17:32:42.380 7493 7519 D Unity : x1_37.x = dot (unity_SHAr, tmpvar_35);
+11-01 17:32:42.380 7493 7519 D Unity : x1_37.y = dot (unity_SHAg, tmpvar_35);
+11-01 17:32:42.380 7493 7519 D Unity : x1_37.z = dot (unity_SHAb, tmpvar_35);
+11-01 17:32:42.380 7493 7519 D Unity : mediump vec4 tmpvar_38;
+11-01 17:32:42.380 7493 7519 D Unity : tmpvar_38 = (normalWorld_33.xyzz * normalWorld_33.yzzx);
+11-01 17:32:42.380 7493 7519 D Unity : x2_36.x = dot (unity_SHBr, tmpvar_38);
+11-01 17:32:42.380 7493 7519 D Unity : x2_36.y = dot (unity_SHBg, tmpvar_38);
+11-01 17:32:42.380 7493 7519 D Unity : x2_36.z = dot (unity_SHBb, tmpvar_38);
+11-01 17:32:42.380 7493 7519 D Unity : ambientOrLightmapUV_34.xyz = ((x2_36 + (unity_SHC.xyz *
+11-01 17:32:42.380 7493 7519 D Unity : ((normalWorld_33.x * normalWorld_33.x) - (normalWorld_33.y * normalWorld_33.y))
+11-01 17:32:42.380 7493 7519 D Unity : )) + x1_37);
+11-01 17:32:42.380 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:42.380 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_12;
+11-01 17:32:42.380 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_14);
+11-01 17:32:42.380 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:42.380 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:42.380 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:42.380 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_34;
+11-01 17:32:42.380 7493 7519 D Unity : xlv_TEXCOORD6 = tmpvar_10;
+11-01 17:32:42.380 7493 7519 D Unity : }
+11-01 17:32:42.380 7493 7519 D Unity : vertex shader
+11-01 17:32:42.380 7493 7519 D Unity : Compile failed.
+11-01 17:32:42.402 7493 7519 D Unity : #version 100
+11-01 17:32:42.402 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:42.402 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:42.402 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:42.402 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:42.402 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:42.402 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:42.402 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:42.402 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:42.402 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:42.402 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:42.402 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:42.402 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:42.402 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:42.402 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:42.402 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:42.402 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:42.402 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:42.402 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:42.402 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:42.402 7493 7519 D Unity : void main ()
+11-01 17:32:42.402 7493 7519 D Unity : {
+11-01 17:32:42.402 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:42.402 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:42.402 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:42.402 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:42.402 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:42.402 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec4 tmpvar_10;
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_10 = (_Object2World * _glesVertex);
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:42.402 7493 7519 D Unity : highp vec4 texcoord_11;
+11-01 17:32:42.402 7493 7519 D Unity : texcoord_11.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:42.402 7493 7519 D Unity : highp vec2 tmpvar_12;
+11-01 17:32:42.402 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_12 = tmpvar_2;
+11-01 17:32:42.402 7493 7519 D Unity : } else {
+11-01 17:32:42.402 7493 7519 D Unity : tmpvar_12 = tmpvar_3;
+11-01 17:32:42.402 7493 7519 D Unity : };
+11-01 17:32:42.402 7493 7519 D Unity : texcoord_11.zw = ((tmpvar_12 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:42.402 7493 7519 D Unity : mediump vec3 n_13;
+11-01 17:32:42.402 7493 7519 D Unity : n_13 = (tmpvar_10.xyz - _WorldSpaceCameraPos);
+11-01 17:32:42.402 7493 7519 D Unity : highp vec3 norm_14;
+11-01 17:32:42.402 7493 7519 D Unity : norm_14 = tmpvar_1;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec4 v_15;
+11-01 17:32:42.402 7493 7519 D Unity : v_15.x = _World2Object[0].x;
+11-01 17:32:42.402 7493 7519 D Unity : v_15.y = _World2Object[1].x;
+11-01 17:32:42.402 7493 7519 D Unity : v_15.z = _World2Object[2].x;
+11-01 17:32:42.402 7493 7519 D Unity : v_15.w = _World2Object[3].x;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:42.402 7493 7519 D Unity : v_16.x = _World2Object[0].y;
+11-01 17:32:42.402 7493 7519 D Unity : v_16.y = _World2Object[1].y;
+11-01 17:32:42.402 7493 7519 D Unity : v_16.z = _World2Object[2].y;
+11-01 17:32:42.402 7493 7519 D Unity : v_16.w = _World2Object[3].y;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:42.402 7493 7519 D Unity : v_17.x = _World2Object[0].z;
+11-01 17:32:42.402 7493 7519 D Unity : v_17.y = _World2Object[1].z;
+11-01 17:32:42.402 7493 7519 D Unity : v_17.z = _World2Object[2].z;
+11-01 17:32:42.402 7493 7519 D Unity : v_17.w = _World2Object[3].z;
+11-01 17:32:42.402 7493 7519 D Unity : highp vec3 tmpvar_18;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_18 = normalize(((
+11-01 17:32:42.403 7493 7519 D Unity : (v_15.xyz * norm_14.x)
+11-01 17:32:42.403 7493 7519 D Unity : +
+11-01 17:32:42.403 7493 7519 D Unity : (v_16.xyz * norm_14.y)
+11-01 17:32:42.403 7493 7519 D Unity : ) + (v_17.xyz * norm_14.z)));
+11-01 17:32:42.403 7493 7519 D Unity : highp vec3 dir_19;
+11-01 17:32:42.403 7493 7519 D Unity : dir_19 = tmpvar_4.xyz;
+11-01 17:32:42.403 7493 7519 D Unity : highp mat3 tmpvar_20;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_20[0] = _Object2World[0].xyz;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_20[1] = _Object2World[1].xyz;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_20[2] = _Object2World[2].xyz;
+11-01 17:32:42.403 7493 7519 D Unity : highp vec4 tmpvar_21;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_21.xyz = normalize((tmpvar_20 * dir_19));
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_21.w = tmpvar_4.w;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec3 normal_22;
+11-01 17:32:42.403 7493 7519 D Unity : normal_22 = tmpvar_18;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec3 tangent_23;
+11-01 17:32:42.403 7493 7519 D Unity : tangent_23 = tmpvar_21.xyz;
+11-01 17:32:42.403 7493 7519 D Unity : mediump float tangentSign_24;
+11-01 17:32:42.403 7493 7519 D Unity : tangentSign_24 = tmpvar_21.w;
+11-01 17:32:42.403 7493 7519 D Unity : mediump float sign_25;
+11-01 17:32:42.403 7493 7519 D Unity : highp float tmpvar_26;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_26 = (tangentSign_24 * unity_WorldTransformParams.w);
+11-01 17:32:42.403 7493 7519 D Unity : sign_25 = tmpvar_26;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec3 tmpvar_27;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_27 = (((normal_22.yzx * tangent_23.zxy) - (normal_22.zxy * tangent_23.yzx)) * sign_25);
+11-01 17:32:42.403 7493 7519 D Unity : mediump mat3 tmpvar_28;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[0].x = tangent_23.x;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[0].y = tmpvar_27.x;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[0].z = normal_22.x;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[1].x = tangent_23.y;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[1].y = tmpvar_27.y;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[1].z = normal_22.y;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[2].x = tangent_23.z;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[2].y = tmpvar_27.z;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_28[2].z = normal_22.z;
+11-01 17:32:42.403 7493 7519 D Unity : tangentToWorld_5 = tmpvar_28;
+11-01 17:32:42.403 7493 7519 D Unity : highp vec3 v_29;
+11-01 17:32:42.403 7493 7519 D Unity : v_29.x = tangentToWorld_5[0].x;
+11-01 17:32:42.403 7493 7519 D Unity : v_29.y = tangentToWorld_5[1].x;
+11-01 17:32:42.403 7493 7519 D Unity : v_29.z = tangentToWorld_5[2].x;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_7.xyz = v_29;
+11-01 17:32:42.403 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:42.403 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].y;
+11-01 17:32:42.403 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].y;
+11-01 17:32:42.403 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].y;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_8.xyz = v_30;
+11-01 17:32:42.403 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:42.403 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].z;
+11-01 17:32:42.403 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].z;
+11-01 17:32:42.403 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].z;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_9.xyz = v_31;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec3 normalWorld_32;
+11-01 17:32:42.403 7493 7519 D Unity : normalWorld_32 = tmpvar_18;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_33;
+11-01 17:32:42.403 7493 7519 D Unity : ambientOrLightmapUV_33.w = 0.0;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec4 tmpvar_34;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_34.w = 1.0;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_34.xyz = normalWorld_32;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec3 x2_35;
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec3 x1_36;
+11-01 17:32:42.403 7493 7519 D Unity : x1_36.x = dot (unity_SHAr, tmpvar_34);
+11-01 17:32:42.403 7493 7519 D Unity : x1_36.y = dot (unity_SHAg, tmpvar_34);
+11-01 17:32:42.403 7493 7519 D Unity : x1_36.z = dot (unity_SHAb, tmpvar_34);
+11-01 17:32:42.403 7493 7519 D Unity : mediump vec4 tmpvar_37;
+11-01 17:32:42.403 7493 7519 D Unity : tmpvar_37 = (normalWorld_32.xyzz * normalWorld_32.yzzx);
+11-01 17:32:42.403 7493 7519 D Unity : x2_35.x = dot (unity_SHBr, tmpvar_37);
+11-01 17:32:42.403 7493 7519 D Unity : x2_35.y = dot (unity_SHBg, tmpvar_37);
+11-01 17:32:42.403 7493 7519 D Unity : x2_35.z = dot (unity_SHBb, tmpvar_37);
+11-01 17:32:42.403 7493 7519 D Unity : ambientOrLightmapUV_33.xyz = ((x2_35 + (unity_SHC.xyz *
+11-01 17:32:42.403 7493 7519 D Unity : ((normalWorld_32.x * normalWorld_32.x) - (normalWorld_32.y * normalWorld_32.y))
+11-01 17:32:42.403 7493 7519 D Unity : )) + x1_36);
+11-01 17:32:42.403 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:42.403 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_11;
+11-01 17:32:42.403 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_13);
+11-01 17:32:42.403 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:42.403 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:42.403 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:42.403 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_33;
+11-01 17:32:42.403 7493 7519 D Unity : }
+11-01 17:32:42.403 7493 7519 D Unity : vertex shader
+11-01 17:32:42.403 7493 7519 D Unity : Compile failed.
+11-01 17:32:42.424 7493 7519 D Unity : #version 100
+11-01 17:32:42.424 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:42.424 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:42.424 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:42.424 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:42.424 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:42.424 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:42.424 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:42.424 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:42.424 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:42.424 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:42.424 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:42.424 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:42.425 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:42.425 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:42.425 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:42.425 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:42.425 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:42.425 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:42.425 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:42.425 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:42.425 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:42.425 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:42.425 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:42.425 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:42.425 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:42.425 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:42.425 7493 7519 D Unity : void main ()
+11-01 17:32:42.425 7493 7519 D Unity : {
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:42.425 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec4 tmpvar_10;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_10 = (_Object2World * _glesVertex);
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:42.425 7493 7519 D Unity : highp vec4 texcoord_11;
+11-01 17:32:42.425 7493 7519 D Unity : texcoord_11.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:42.425 7493 7519 D Unity : highp vec2 tmpvar_12;
+11-01 17:32:42.425 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_12 = tmpvar_2;
+11-01 17:32:42.425 7493 7519 D Unity : } else {
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_12 = tmpvar_3;
+11-01 17:32:42.425 7493 7519 D Unity : };
+11-01 17:32:42.425 7493 7519 D Unity : texcoord_11.zw = ((tmpvar_12 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec3 n_13;
+11-01 17:32:42.425 7493 7519 D Unity : n_13 = (tmpvar_10.xyz - _WorldSpaceCameraPos);
+11-01 17:32:42.425 7493 7519 D Unity : highp vec3 norm_14;
+11-01 17:32:42.425 7493 7519 D Unity : norm_14 = tmpvar_1;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec4 v_15;
+11-01 17:32:42.425 7493 7519 D Unity : v_15.x = _World2Object[0].x;
+11-01 17:32:42.425 7493 7519 D Unity : v_15.y = _World2Object[1].x;
+11-01 17:32:42.425 7493 7519 D Unity : v_15.z = _World2Object[2].x;
+11-01 17:32:42.425 7493 7519 D Unity : v_15.w = _World2Object[3].x;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:42.425 7493 7519 D Unity : v_16.x = _World2Object[0].y;
+11-01 17:32:42.425 7493 7519 D Unity : v_16.y = _World2Object[1].y;
+11-01 17:32:42.425 7493 7519 D Unity : v_16.z = _World2Object[2].y;
+11-01 17:32:42.425 7493 7519 D Unity : v_16.w = _World2Object[3].y;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:42.425 7493 7519 D Unity : v_17.x = _World2Object[0].z;
+11-01 17:32:42.425 7493 7519 D Unity : v_17.y = _World2Object[1].z;
+11-01 17:32:42.425 7493 7519 D Unity : v_17.z = _World2Object[2].z;
+11-01 17:32:42.425 7493 7519 D Unity : v_17.w = _World2Object[3].z;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec3 tmpvar_18;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_18 = normalize(((
+11-01 17:32:42.425 7493 7519 D Unity : (v_15.xyz * norm_14.x)
+11-01 17:32:42.425 7493 7519 D Unity : +
+11-01 17:32:42.425 7493 7519 D Unity : (v_16.xyz * norm_14.y)
+11-01 17:32:42.425 7493 7519 D Unity : ) + (v_17.xyz * norm_14.z)));
+11-01 17:32:42.425 7493 7519 D Unity : highp vec3 dir_19;
+11-01 17:32:42.425 7493 7519 D Unity : dir_19 = tmpvar_4.xyz;
+11-01 17:32:42.425 7493 7519 D Unity : highp mat3 tmpvar_20;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_20[0] = _Object2World[0].xyz;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_20[1] = _Object2World[1].xyz;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_20[2] = _Object2World[2].xyz;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec4 tmpvar_21;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_21.xyz = normalize((tmpvar_20 * dir_19));
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_21.w = tmpvar_4.w;
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec3 normal_22;
+11-01 17:32:42.425 7493 7519 D Unity : normal_22 = tmpvar_18;
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec3 tangent_23;
+11-01 17:32:42.425 7493 7519 D Unity : tangent_23 = tmpvar_21.xyz;
+11-01 17:32:42.425 7493 7519 D Unity : mediump float tangentSign_24;
+11-01 17:32:42.425 7493 7519 D Unity : tangentSign_24 = tmpvar_21.w;
+11-01 17:32:42.425 7493 7519 D Unity : mediump float sign_25;
+11-01 17:32:42.425 7493 7519 D Unity : highp float tmpvar_26;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_26 = (tangentSign_24 * unity_WorldTransformParams.w);
+11-01 17:32:42.425 7493 7519 D Unity : sign_25 = tmpvar_26;
+11-01 17:32:42.425 7493 7519 D Unity : mediump vec3 tmpvar_27;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_27 = (((normal_22.yzx * tangent_23.zxy) - (normal_22.zxy * tangent_23.yzx)) * sign_25);
+11-01 17:32:42.425 7493 7519 D Unity : mediump mat3 tmpvar_28;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[0].x = tangent_23.x;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[0].y = tmpvar_27.x;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[0].z = normal_22.x;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[1].x = tangent_23.y;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[1].y = tmpvar_27.y;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[1].z = normal_22.y;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[2].x = tangent_23.z;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[2].y = tmpvar_27.z;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_28[2].z = normal_22.z;
+11-01 17:32:42.425 7493 7519 D Unity : tangentToWorld_5 = tmpvar_28;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec3 v_29;
+11-01 17:32:42.425 7493 7519 D Unity : v_29.x = tangentToWorld_5[0].x;
+11-01 17:32:42.425 7493 7519 D Unity : v_29.y = tangentToWorld_5[1].x;
+11-01 17:32:42.425 7493 7519 D Unity : v_29.z = tangentToWorld_5[2].x;
+11-01 17:32:42.425 7493 7519 D Unity : tmpvar_7.xyz = v_29;
+11-01 17:32:42.425 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:42.425 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].y;
+11-01 17:32:42.425 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].y;
+11-01 17:32:42.425 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].y;
+11-01 17:32:42.426 7493 7519 D Unity : tmpvar_8.xyz = v_30;
+11-01 17:32:42.426 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:42.426 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].z;
+11-01 17:32:42.426 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].z;
+11-01 17:32:42.426 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].z;
+11-01 17:32:42.426 7493 7519 D Unity : tmpvar_9.xyz = v_31;
+11-01 17:32:42.426 7493 7519 D Unity : mediump vec3 normalWorld_32;
+11-01 17:32:42.426 7493 7519 D Unity : normalWorld_32 = tmpvar_18;
+11-01 17:32:42.426 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_33;
+11-01 17:32:42.426 7493 7519 D Unity : ambientOrLightmapUV_33.w = 0.0;
+11-01 17:32:42.426 7493 7519 D Unity : mediump vec4 tmpvar_34;
+11-01 17:32:42.426 7493 7519 D Unity : tmpvar_34.w = 1.0;
+11-01 17:32:42.426 7493 7519 D Unity : tmpvar_34.xyz = normalWorld_32;
+11-01 17:32:42.426 7493 7519 D Unity : mediump vec3 x2_35;
+11-01 17:32:42.426 7493 7519 D Unity : mediump vec3 x1_36;
+11-01 17:32:42.426 7493 7519 D Unity : x1_36.x = dot (unity_SHAr, tmpvar_34);
+11-01 17:32:42.426 7493 7519 D Unity : x1_36.y = dot (unity_SHAg, tmpvar_34);
+11-01 17:32:42.426 7493 7519 D Unity : x1_36.z = dot (unity_SHAb, tmpvar_34);
+11-01 17:32:42.426 7493 7519 D Unity : mediump vec4 tmpvar_37;
+11-01 17:32:42.426 7493 7519 D Unity : tmpvar_37 = (normalWorld_32.xyzz * normalWorld_32.yzzx);
+11-01 17:32:42.426 7493 7519 D Unity : x2_35.x = dot (unity_SHBr, tmpvar_37);
+11-01 17:32:42.426 7493 7519 D Unity : x2_35.y = dot (unity_SHBg, tmpvar_37);
+11-01 17:32:42.426 7493 7519 D Unity : x2_35.z = dot (unity_SHBb, tmpvar_37);
+11-01 17:32:42.426 7493 7519 D Unity : ambientOrLightmapUV_33.xyz = ((x2_35 + (unity_SHC.xyz *
+11-01 17:32:42.426 7493 7519 D Unity : ((normalWorld_32.x * normalWorld_32.x) - (normalWorld_32.y * normalWorld_32.y))
+11-01 17:32:42.426 7493 7519 D Unity : )) + x1_36);
+11-01 17:32:42.426 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:42.426 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_11;
+11-01 17:32:42.426 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_13);
+11-01 17:32:42.426 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:42.426 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:42.426 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:42.426 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_33;
+11-01 17:32:42.426 7493 7519 D Unity : }
+11-01 17:32:42.426 7493 7519 D Unity : vertex shader
+11-01 17:32:42.426 7493 7519 D Unity : Compile failed.
+11-01 17:32:42.488 7493 7519 D Unity : #version 100
+11-01 17:32:42.488 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:42.488 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:42.488 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:42.488 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:42.488 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:42.488 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:42.488 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:42.488 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:42.488 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:42.488 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:42.488 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:42.488 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:42.488 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:42.488 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:42.488 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:42.488 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:42.488 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:42.488 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:42.488 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:42.488 7493 7519 D Unity : void main ()
+11-01 17:32:42.488 7493 7519 D Unity : {
+11-01 17:32:42.488 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:42.488 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:42.488 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:42.488 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:42.488 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:42.489 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:42.489 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:42.489 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:42.489 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:42.489 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:42.489 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:42.489 7493 7519 D Unity : highp vec4 tmpvar_10;
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_10 = (_Object2World * _glesVertex);
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:42.489 7493 7519 D Unity : highp vec4 texcoord_11;
+11-01 17:32:42.489 7493 7519 D Unity : texcoord_11.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:42.489 7493 7519 D Unity : highp vec2 tmpvar_12;
+11-01 17:32:42.489 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_12 = tmpvar_2;
+11-01 17:32:42.489 7493 7519 D Unity : } else {
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_12 = tmpvar_3;
+11-01 17:32:42.489 7493 7519 D Unity : };
+11-01 17:32:42.489 7493 7519 D Unity : texcoord_11.zw = ((tmpvar_12 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:42.489 7493 7519 D Unity : mediump vec3 n_13;
+11-01 17:32:42.489 7493 7519 D Unity : n_13 = (tmpvar_10.xyz - _WorldSpaceCameraPos);
+11-01 17:32:42.489 7493 7519 D Unity : highp vec3 norm_14;
+11-01 17:32:42.489 7493 7519 D Unity : norm_14 = tmpvar_1;
+11-01 17:32:42.489 7493 7519 D Unity : highp vec4 v_15;
+11-01 17:32:42.489 7493 7519 D Unity : v_15.x = _World2Object[0].x;
+11-01 17:32:42.489 7493 7519 D Unity : v_15.y = _World2Object[1].x;
+11-01 17:32:42.489 7493 7519 D Unity : v_15.z = _World2Object[2].x;
+11-01 17:32:42.489 7493 7519 D Unity : v_15.w = _World2Object[3].x;
+11-01 17:32:42.489 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:42.489 7493 7519 D Unity : v_16.x = _World2Object[0].y;
+11-01 17:32:42.489 7493 7519 D Unity : v_16.y = _World2Object[1].y;
+11-01 17:32:42.489 7493 7519 D Unity : v_16.z = _World2Object[2].y;
+11-01 17:32:42.489 7493 7519 D Unity : v_16.w = _World2Object[3].y;
+11-01 17:32:42.489 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:42.489 7493 7519 D Unity : v_17.x = _World2Object[0].z;
+11-01 17:32:42.489 7493 7519 D Unity : v_17.y = _World2Object[1].z;
+11-01 17:32:42.489 7493 7519 D Unity : v_17.z = _World2Object[2].z;
+11-01 17:32:42.489 7493 7519 D Unity : v_17.w = _World2Object[3].z;
+11-01 17:32:42.489 7493 7519 D Unity : highp vec3 tmpvar_18;
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_18 = normalize(((
+11-01 17:32:42.489 7493 7519 D Unity : (v_15.xyz * norm_14.x)
+11-01 17:32:42.489 7493 7519 D Unity : +
+11-01 17:32:42.489 7493 7519 D Unity : (v_16.xyz * norm_14.y)
+11-01 17:32:42.489 7493 7519 D Unity : ) + (v_17.xyz * norm_14.z)));
+11-01 17:32:42.489 7493 7519 D Unity : highp vec3 dir_19;
+11-01 17:32:42.489 7493 7519 D Unity : dir_19 = tmpvar_4.xyz;
+11-01 17:32:42.489 7493 7519 D Unity : highp mat3 tmpvar_20;
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_20[0] = _Object2World[0].xyz;
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_20[1] = _Object2World[1].xyz;
+11-01 17:32:42.489 7493 7519 D Unity : tmpvar_20[2] = _Object2World[2].xyz;
+11-01 17:32:42.489 7493 7519 D Unity : highp vec4 tmpvar_21;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_21.xyz = normalize((tmpvar_20 * dir_19));
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_21.w = tmpvar_4.w;
+11-01 17:32:42.490 7493 7519 D Unity : mediump vec3 normal_22;
+11-01 17:32:42.490 7493 7519 D Unity : normal_22 = tmpvar_18;
+11-01 17:32:42.490 7493 7519 D Unity : mediump vec3 tangent_23;
+11-01 17:32:42.490 7493 7519 D Unity : tangent_23 = tmpvar_21.xyz;
+11-01 17:32:42.490 7493 7519 D Unity : mediump float tangentSign_24;
+11-01 17:32:42.490 7493 7519 D Unity : tangentSign_24 = tmpvar_21.w;
+11-01 17:32:42.490 7493 7519 D Unity : mediump float sign_25;
+11-01 17:32:42.490 7493 7519 D Unity : highp float tmpvar_26;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_26 = (tangentSign_24 * unity_WorldTransformParams.w);
+11-01 17:32:42.490 7493 7519 D Unity : sign_25 = tmpvar_26;
+11-01 17:32:42.490 7493 7519 D Unity : mediump vec3 tmpvar_27;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_27 = (((normal_22.yzx * tangent_23.zxy) - (normal_22.zxy * tangent_23.yzx)) * sign_25);
+11-01 17:32:42.490 7493 7519 D Unity : mediump mat3 tmpvar_28;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[0].x = tangent_23.x;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[0].y = tmpvar_27.x;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[0].z = normal_22.x;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[1].x = tangent_23.y;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[1].y = tmpvar_27.y;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[1].z = normal_22.y;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[2].x = tangent_23.z;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[2].y = tmpvar_27.z;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_28[2].z = normal_22.z;
+11-01 17:32:42.490 7493 7519 D Unity : tangentToWorld_5 = tmpvar_28;
+11-01 17:32:42.490 7493 7519 D Unity : highp vec3 v_29;
+11-01 17:32:42.490 7493 7519 D Unity : v_29.x = tangentToWorld_5[0].x;
+11-01 17:32:42.490 7493 7519 D Unity : v_29.y = tangentToWorld_5[1].x;
+11-01 17:32:42.490 7493 7519 D Unity : v_29.z = tangentToWorld_5[2].x;
+11-01 17:32:42.490 7493 7519 D Unity : tmpvar_7.xyz = v_29;
+11-01 17:32:42.490 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:42.490 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].y;
+11-01 17:32:42.491 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].y;
+11-01 17:32:42.491 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].y;
+11-01 17:32:42.491 7493 7519 D Unity : tmpvar_8.xyz = v_30;
+11-01 17:32:42.491 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:42.491 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].z;
+11-01 17:32:42.491 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].z;
+11-01 17:32:42.491 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].z;
+11-01 17:32:42.491 7493 7519 D Unity : tmpvar_9.xyz = v_31;
+11-01 17:32:42.491 7493 7519 D Unity : mediump vec3 normalWorld_32;
+11-01 17:32:42.491 7493 7519 D Unity : normalWorld_32 = tmpvar_18;
+11-01 17:32:42.491 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_33;
+11-01 17:32:42.491 7493 7519 D Unity : ambientOrLightmapUV_33.w = 0.0;
+11-01 17:32:42.491 7493 7519 D Unity : mediump vec4 tmpvar_34;
+11-01 17:32:42.491 7493 7519 D Unity : tmpvar_34.w = 1.0;
+11-01 17:32:42.491 7493 7519 D Unity : tmpvar_34.xyz = normalWorld_32;
+11-01 17:32:42.491 7493 7519 D Unity : mediump vec3 x2_35;
+11-01 17:32:42.491 7493 7519 D Unity : mediump vec3 x1_36;
+11-01 17:32:42.491 7493 7519 D Unity : x1_36.x = dot (unity_SHAr, tmpvar_34);
+11-01 17:32:42.491 7493 7519 D Unity : x1_36.y = dot (unity_SHAg, tmpvar_34);
+11-01 17:32:42.491 7493 7519 D Unity : x1_36.z = dot (unity_SHAb, tmpvar_34);
+11-01 17:32:42.491 7493 7519 D Unity : mediump vec4 tmpvar_37;
+11-01 17:32:42.491 7493 7519 D Unity : tmpvar_37 = (normalWorld_32.xyzz * normalWorld_32.yzzx);
+11-01 17:32:42.491 7493 7519 D Unity : x2_35.x = dot (unity_SHBr, tmpvar_37);
+11-01 17:32:42.491 7493 7519 D Unity : x2_35.y = dot (unity_SHBg, tmpvar_37);
+11-01 17:32:42.491 7493 7519 D Unity : x2_35.z = dot (unity_SHBb, tmpvar_37);
+11-01 17:32:42.491 7493 7519 D Unity : ambientOrLightmapUV_33.xyz = ((x2_35 + (unity_SHC.xyz *
+11-01 17:32:42.491 7493 7519 D Unity : ((normalWorld_32.x * normalWorld_32.x) - (normalWorld_32.y * normalWorld_32.y))
+11-01 17:32:42.491 7493 7519 D Unity : )) + x1_36);
+11-01 17:32:42.491 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:42.491 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_11;
+11-01 17:32:42.491 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_13);
+11-01 17:32:42.491 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:42.491 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:42.491 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:42.491 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_33;
+11-01 17:32:42.491 7493 7519 D Unity : }
+11-01 17:32:42.491 7493 7519 D Unity : vertex shader
+11-01 17:32:42.491 7493 7519 D Unity : Compile failed.
+11-01 17:32:43.885 7493 7519 D Unity : #version 100
+11-01 17:32:43.885 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:43.885 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:43.885 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:43.885 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:43.885 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp mat4 unity_World2Shadow[4];
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:43.885 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:43.885 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:43.885 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:43.885 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:43.885 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:43.885 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:43.885 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:43.885 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:43.885 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD6;
+11-01 17:32:43.885 7493 7519 D Unity : void main ()
+11-01 17:32:43.885 7493 7519 D Unity : {
+11-01 17:32:43.885 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:43.885 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:43.885 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:43.885 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:43.885 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:43.885 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:43.885 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:43.885 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:43.885 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:43.885 7493 7519 D Unity : mediump vec4 tmpvar_10;
+11-01 17:32:43.885 7493 7519 D Unity : highp vec4 tmpvar_11;
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_11 = (_Object2World * _glesVertex);
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:43.885 7493 7519 D Unity : highp vec4 texcoord_12;
+11-01 17:32:43.885 7493 7519 D Unity : texcoord_12.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:43.885 7493 7519 D Unity : highp vec2 tmpvar_13;
+11-01 17:32:43.885 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_13 = tmpvar_2;
+11-01 17:32:43.885 7493 7519 D Unity : } else {
+11-01 17:32:43.885 7493 7519 D Unity : tmpvar_13 = tmpvar_3;
+11-01 17:32:43.885 7493 7519 D Unity : };
+11-01 17:32:43.885 7493 7519 D Unity : texcoord_12.zw = ((tmpvar_13 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:43.885 7493 7519 D Unity : mediump vec3 n_14;
+11-01 17:32:43.885 7493 7519 D Unity : n_14 = (tmpvar_11.xyz - _WorldSpaceCameraPos);
+11-01 17:32:43.885 7493 7519 D Unity : highp vec3 norm_15;
+11-01 17:32:43.885 7493 7519 D Unity : norm_15 = tmpvar_1;
+11-01 17:32:43.885 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:43.885 7493 7519 D Unity : v_16.x = _World2Object[0].x;
+11-01 17:32:43.885 7493 7519 D Unity : v_16.y = _World2Object[1].x;
+11-01 17:32:43.886 7493 7519 D Unity : v_16.z = _World2Object[2].x;
+11-01 17:32:43.886 7493 7519 D Unity : v_16.w = _World2Object[3].x;
+11-01 17:32:43.886 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:43.886 7493 7519 D Unity : v_17.x = _World2Object[0].y;
+11-01 17:32:43.886 7493 7519 D Unity : v_17.y = _World2Object[1].y;
+11-01 17:32:43.886 7493 7519 D Unity : v_17.z = _World2Object[2].y;
+11-01 17:32:43.886 7493 7519 D Unity : v_17.w = _World2Object[3].y;
+11-01 17:32:43.886 7493 7519 D Unity : highp vec4 v_18;
+11-01 17:32:43.886 7493 7519 D Unity : v_18.x = _World2Object[0].z;
+11-01 17:32:43.886 7493 7519 D Unity : v_18.y = _World2Object[1].z;
+11-01 17:32:43.886 7493 7519 D Unity : v_18.z = _World2Object[2].z;
+11-01 17:32:43.886 7493 7519 D Unity : v_18.w = _World2Object[3].z;
+11-01 17:32:43.886 7493 7519 D Unity : highp vec3 tmpvar_19;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_19 = normalize(((
+11-01 17:32:43.886 7493 7519 D Unity : (v_16.xyz * norm_15.x)
+11-01 17:32:43.886 7493 7519 D Unity : +
+11-01 17:32:43.886 7493 7519 D Unity : (v_17.xyz * norm_15.y)
+11-01 17:32:43.886 7493 7519 D Unity : ) + (v_18.xyz * norm_15.z)));
+11-01 17:32:43.886 7493 7519 D Unity : highp vec3 dir_20;
+11-01 17:32:43.886 7493 7519 D Unity : dir_20 = tmpvar_4.xyz;
+11-01 17:32:43.886 7493 7519 D Unity : highp mat3 tmpvar_21;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_21[0] = _Object2World[0].xyz;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_21[1] = _Object2World[1].xyz;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_21[2] = _Object2World[2].xyz;
+11-01 17:32:43.886 7493 7519 D Unity : highp vec4 tmpvar_22;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_22.xyz = normalize((tmpvar_21 * dir_20));
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_22.w = tmpvar_4.w;
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec3 normal_23;
+11-01 17:32:43.886 7493 7519 D Unity : normal_23 = tmpvar_19;
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec3 tangent_24;
+11-01 17:32:43.886 7493 7519 D Unity : tangent_24 = tmpvar_22.xyz;
+11-01 17:32:43.886 7493 7519 D Unity : mediump float tangentSign_25;
+11-01 17:32:43.886 7493 7519 D Unity : tangentSign_25 = tmpvar_22.w;
+11-01 17:32:43.886 7493 7519 D Unity : mediump float sign_26;
+11-01 17:32:43.886 7493 7519 D Unity : highp float tmpvar_27;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_27 = (tangentSign_25 * unity_WorldTransformParams.w);
+11-01 17:32:43.886 7493 7519 D Unity : sign_26 = tmpvar_27;
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec3 tmpvar_28;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_28 = (((normal_23.yzx * tangent_24.zxy) - (normal_23.zxy * tangent_24.yzx)) * sign_26);
+11-01 17:32:43.886 7493 7519 D Unity : mediump mat3 tmpvar_29;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[0].x = tangent_24.x;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[0].y = tmpvar_28.x;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[0].z = normal_23.x;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[1].x = tangent_24.y;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[1].y = tmpvar_28.y;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[1].z = normal_23.y;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[2].x = tangent_24.z;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[2].y = tmpvar_28.z;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_29[2].z = normal_23.z;
+11-01 17:32:43.886 7493 7519 D Unity : tangentToWorld_5 = tmpvar_29;
+11-01 17:32:43.886 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:43.886 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].x;
+11-01 17:32:43.886 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].x;
+11-01 17:32:43.886 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].x;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_7.xyz = v_30;
+11-01 17:32:43.886 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:43.886 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].y;
+11-01 17:32:43.886 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].y;
+11-01 17:32:43.886 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].y;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_8.xyz = v_31;
+11-01 17:32:43.886 7493 7519 D Unity : highp vec3 v_32;
+11-01 17:32:43.886 7493 7519 D Unity : v_32.x = tangentToWorld_5[0].z;
+11-01 17:32:43.886 7493 7519 D Unity : v_32.y = tangentToWorld_5[1].z;
+11-01 17:32:43.886 7493 7519 D Unity : v_32.z = tangentToWorld_5[2].z;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_9.xyz = v_32;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_10 = (unity_World2Shadow[0] * (_Object2World * _glesVertex));
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec3 normalWorld_33;
+11-01 17:32:43.886 7493 7519 D Unity : normalWorld_33 = tmpvar_19;
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_34;
+11-01 17:32:43.886 7493 7519 D Unity : ambientOrLightmapUV_34.w = 0.0;
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec4 tmpvar_35;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_35.w = 1.0;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_35.xyz = normalWorld_33;
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec3 x2_36;
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec3 x1_37;
+11-01 17:32:43.886 7493 7519 D Unity : x1_37.x = dot (unity_SHAr, tmpvar_35);
+11-01 17:32:43.886 7493 7519 D Unity : x1_37.y = dot (unity_SHAg, tmpvar_35);
+11-01 17:32:43.886 7493 7519 D Unity : x1_37.z = dot (unity_SHAb, tmpvar_35);
+11-01 17:32:43.886 7493 7519 D Unity : mediump vec4 tmpvar_38;
+11-01 17:32:43.886 7493 7519 D Unity : tmpvar_38 = (normalWorld_33.xyzz * normalWorld_33.yzzx);
+11-01 17:32:43.886 7493 7519 D Unity : x2_36.x = dot (unity_SHBr, tmpvar_38);
+11-01 17:32:43.886 7493 7519 D Unity : x2_36.y = dot (unity_SHBg, tmpvar_38);
+11-01 17:32:43.886 7493 7519 D Unity : x2_36.z = dot (unity_SHBb, tmpvar_38);
+11-01 17:32:43.886 7493 7519 D Unity : ambientOrLightmapUV_34.xyz = ((x2_36 + (unity_SHC.xyz *
+11-01 17:32:43.886 7493 7519 D Unity : ((normalWorld_33.x * normalWorld_33.x) - (normalWorld_33.y * normalWorld_33.y))
+11-01 17:32:43.886 7493 7519 D Unity : )) + x1_37);
+11-01 17:32:43.886 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:43.886 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_12;
+11-01 17:32:43.886 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_14);
+11-01 17:32:43.886 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:43.886 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:43.886 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:43.886 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_34;
+11-01 17:32:43.886 7493 7519 D Unity : xlv_TEXCOORD6 = tmpvar_10;
+11-01 17:32:43.886 7493 7519 D Unity : }
+11-01 17:32:43.886 7493 7519 D Unity : vertex shader
+11-01 17:32:43.886 7493 7519 D Unity : Compile failed.
+11-01 17:32:47.768 295 368 E HalDeviceManager: Should have at least 1 chip!
+11-01 17:32:47.768 295 368 E HalDeviceManager: getSupportedIfaceTypesInternal: no chip info found
+11-01 17:32:47.768 295 314 E BluetoothAdapter: Bluetooth binder is null
+11-01 17:32:47.769 295 314 E BatteryStatsService: no controller energy info supplied
+11-01 17:32:47.770 483 483 E PhoneInterfaceManager: [PhoneIntfMgr] queryModemActivityInfo: Empty response
+11-01 17:32:47.774 295 314 E BatteryStatsService: modem info is invalid: ModemActivityInfo{ mTimestamp=0 mSleepTimeMs=0 mIdleTimeMs=0 mTxTimeMs[]=[0, 0, 0, 0, 0] mRxTimeMs=0 mEnergyUsed=0}
+11-01 17:32:59.385 7493 7519 E Unity : -------- GLSL link error:
+11-01 17:32:59.385 7493 7519 E Unity :
+11-01 17:32:59.385 7493 7519 E Unity :
+11-01 17:32:59.385 7493 7519 E Unity :
+11-01 17:32:59.385 7493 7519 E Unity : (Filename: Line: 582)
+11-01 17:32:59.385 7493 7519 E Unity :
+11-01 17:32:59.482 7493 7519 D Unity : #version 100
+11-01 17:32:59.482 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:59.482 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:59.482 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:59.482 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:59.482 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:59.482 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:59.482 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:59.482 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:59.482 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:59.482 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:59.482 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:59.482 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:59.482 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:59.482 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:59.482 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:59.482 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:59.482 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:59.482 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:59.482 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:59.482 7493 7519 D Unity : void main ()
+11-01 17:32:59.482 7493 7519 D Unity : {
+11-01 17:32:59.482 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:59.482 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:59.482 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:59.482 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:59.482 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:59.482 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:59.482 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:59.482 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:59.482 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:59.482 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec4 tmpvar_10;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_10 = (_Object2World * _glesVertex);
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:59.483 7493 7519 D Unity : highp vec4 texcoord_11;
+11-01 17:32:59.483 7493 7519 D Unity : texcoord_11.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:59.483 7493 7519 D Unity : highp vec2 tmpvar_12;
+11-01 17:32:59.483 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_12 = tmpvar_2;
+11-01 17:32:59.483 7493 7519 D Unity : } else {
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_12 = tmpvar_3;
+11-01 17:32:59.483 7493 7519 D Unity : };
+11-01 17:32:59.483 7493 7519 D Unity : texcoord_11.zw = ((tmpvar_12 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec3 n_13;
+11-01 17:32:59.483 7493 7519 D Unity : n_13 = (tmpvar_10.xyz - _WorldSpaceCameraPos);
+11-01 17:32:59.483 7493 7519 D Unity : highp vec3 norm_14;
+11-01 17:32:59.483 7493 7519 D Unity : norm_14 = tmpvar_1;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec4 v_15;
+11-01 17:32:59.483 7493 7519 D Unity : v_15.x = _World2Object[0].x;
+11-01 17:32:59.483 7493 7519 D Unity : v_15.y = _World2Object[1].x;
+11-01 17:32:59.483 7493 7519 D Unity : v_15.z = _World2Object[2].x;
+11-01 17:32:59.483 7493 7519 D Unity : v_15.w = _World2Object[3].x;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:59.483 7493 7519 D Unity : v_16.x = _World2Object[0].y;
+11-01 17:32:59.483 7493 7519 D Unity : v_16.y = _World2Object[1].y;
+11-01 17:32:59.483 7493 7519 D Unity : v_16.z = _World2Object[2].y;
+11-01 17:32:59.483 7493 7519 D Unity : v_16.w = _World2Object[3].y;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:59.483 7493 7519 D Unity : v_17.x = _World2Object[0].z;
+11-01 17:32:59.483 7493 7519 D Unity : v_17.y = _World2Object[1].z;
+11-01 17:32:59.483 7493 7519 D Unity : v_17.z = _World2Object[2].z;
+11-01 17:32:59.483 7493 7519 D Unity : v_17.w = _World2Object[3].z;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec3 tmpvar_18;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_18 = normalize(((
+11-01 17:32:59.483 7493 7519 D Unity : (v_15.xyz * norm_14.x)
+11-01 17:32:59.483 7493 7519 D Unity : +
+11-01 17:32:59.483 7493 7519 D Unity : (v_16.xyz * norm_14.y)
+11-01 17:32:59.483 7493 7519 D Unity : ) + (v_17.xyz * norm_14.z)));
+11-01 17:32:59.483 7493 7519 D Unity : highp vec3 dir_19;
+11-01 17:32:59.483 7493 7519 D Unity : dir_19 = tmpvar_4.xyz;
+11-01 17:32:59.483 7493 7519 D Unity : highp mat3 tmpvar_20;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_20[0] = _Object2World[0].xyz;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_20[1] = _Object2World[1].xyz;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_20[2] = _Object2World[2].xyz;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec4 tmpvar_21;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_21.xyz = normalize((tmpvar_20 * dir_19));
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_21.w = tmpvar_4.w;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec3 normal_22;
+11-01 17:32:59.483 7493 7519 D Unity : normal_22 = tmpvar_18;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec3 tangent_23;
+11-01 17:32:59.483 7493 7519 D Unity : tangent_23 = tmpvar_21.xyz;
+11-01 17:32:59.483 7493 7519 D Unity : mediump float tangentSign_24;
+11-01 17:32:59.483 7493 7519 D Unity : tangentSign_24 = tmpvar_21.w;
+11-01 17:32:59.483 7493 7519 D Unity : mediump float sign_25;
+11-01 17:32:59.483 7493 7519 D Unity : highp float tmpvar_26;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_26 = (tangentSign_24 * unity_WorldTransformParams.w);
+11-01 17:32:59.483 7493 7519 D Unity : sign_25 = tmpvar_26;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec3 tmpvar_27;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_27 = (((normal_22.yzx * tangent_23.zxy) - (normal_22.zxy * tangent_23.yzx)) * sign_25);
+11-01 17:32:59.483 7493 7519 D Unity : mediump mat3 tmpvar_28;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[0].x = tangent_23.x;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[0].y = tmpvar_27.x;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[0].z = normal_22.x;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[1].x = tangent_23.y;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[1].y = tmpvar_27.y;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[1].z = normal_22.y;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[2].x = tangent_23.z;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[2].y = tmpvar_27.z;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_28[2].z = normal_22.z;
+11-01 17:32:59.483 7493 7519 D Unity : tangentToWorld_5 = tmpvar_28;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec3 v_29;
+11-01 17:32:59.483 7493 7519 D Unity : v_29.x = tangentToWorld_5[0].x;
+11-01 17:32:59.483 7493 7519 D Unity : v_29.y = tangentToWorld_5[1].x;
+11-01 17:32:59.483 7493 7519 D Unity : v_29.z = tangentToWorld_5[2].x;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_7.xyz = v_29;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:59.483 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].y;
+11-01 17:32:59.483 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].y;
+11-01 17:32:59.483 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].y;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_8.xyz = v_30;
+11-01 17:32:59.483 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:59.483 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].z;
+11-01 17:32:59.483 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].z;
+11-01 17:32:59.483 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].z;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_9.xyz = v_31;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec3 normalWorld_32;
+11-01 17:32:59.483 7493 7519 D Unity : normalWorld_32 = tmpvar_18;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_33;
+11-01 17:32:59.483 7493 7519 D Unity : ambientOrLightmapUV_33.w = 0.0;
+11-01 17:32:59.483 7493 7519 D Unity : mediump vec4 tmpvar_34;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_34.w = 1.0;
+11-01 17:32:59.483 7493 7519 D Unity : tmpvar_34.xyz = normalWorld_32;
+11-01 17:32:59.484 7493 7519 D Unity : mediump vec3 x2_35;
+11-01 17:32:59.484 7493 7519 D Unity : mediump vec3 x1_36;
+11-01 17:32:59.484 7493 7519 D Unity : x1_36.x = dot (unity_SHAr, tmpvar_34);
+11-01 17:32:59.484 7493 7519 D Unity : x1_36.y = dot (unity_SHAg, tmpvar_34);
+11-01 17:32:59.484 7493 7519 D Unity : x1_36.z = dot (unity_SHAb, tmpvar_34);
+11-01 17:32:59.484 7493 7519 D Unity : mediump vec4 tmpvar_37;
+11-01 17:32:59.484 7493 7519 D Unity : tmpvar_37 = (normalWorld_32.xyzz * normalWorld_32.yzzx);
+11-01 17:32:59.484 7493 7519 D Unity : x2_35.x = dot (unity_SHBr, tmpvar_37);
+11-01 17:32:59.484 7493 7519 D Unity : x2_35.y = dot (unity_SHBg, tmpvar_37);
+11-01 17:32:59.484 7493 7519 D Unity : x2_35.z = dot (unity_SHBb, tmpvar_37);
+11-01 17:32:59.484 7493 7519 D Unity : ambientOrLightmapUV_33.xyz = ((x2_35 + (unity_SHC.xyz *
+11-01 17:32:59.484 7493 7519 D Unity : ((normalWorld_32.x * normalWorld_32.x) - (normalWorld_32.y * normalWorld_32.y))
+11-01 17:32:59.484 7493 7519 D Unity : )) + x1_36);
+11-01 17:32:59.484 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:59.484 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_11;
+11-01 17:32:59.484 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_13);
+11-01 17:32:59.484 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:59.484 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:59.484 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:59.484 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_33;
+11-01 17:32:59.484 7493 7519 D Unity : }
+11-01 17:32:59.484 7493 7519 D Unity : vertex shader
+11-01 17:32:59.484 7493 7519 D Unity : Compile failed.
+11-01 17:32:59.526 7493 7519 D Unity : #version 100
+11-01 17:32:59.526 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:59.526 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:59.526 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:59.526 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:59.526 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:59.526 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:59.526 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:59.526 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:59.526 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:59.526 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:59.526 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:59.526 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:59.526 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:59.526 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:59.526 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:59.526 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:59.526 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:59.526 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:59.526 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:59.526 7493 7519 D Unity : void main ()
+11-01 17:32:59.526 7493 7519 D Unity : {
+11-01 17:32:59.526 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:59.526 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:59.526 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:59.526 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:59.526 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:59.526 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:59.526 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:59.526 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:59.526 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:59.526 7493 7519 D Unity : highp vec4 tmpvar_10;
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_10 = (_Object2World * _glesVertex);
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:59.526 7493 7519 D Unity : highp vec4 texcoord_11;
+11-01 17:32:59.526 7493 7519 D Unity : texcoord_11.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:59.526 7493 7519 D Unity : highp vec2 tmpvar_12;
+11-01 17:32:59.526 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_12 = tmpvar_2;
+11-01 17:32:59.526 7493 7519 D Unity : } else {
+11-01 17:32:59.526 7493 7519 D Unity : tmpvar_12 = tmpvar_3;
+11-01 17:32:59.526 7493 7519 D Unity : };
+11-01 17:32:59.526 7493 7519 D Unity : texcoord_11.zw = ((tmpvar_12 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:59.526 7493 7519 D Unity : mediump vec3 n_13;
+11-01 17:32:59.526 7493 7519 D Unity : n_13 = (tmpvar_10.xyz - _WorldSpaceCameraPos);
+11-01 17:32:59.526 7493 7519 D Unity : highp vec3 norm_14;
+11-01 17:32:59.526 7493 7519 D Unity : norm_14 = tmpvar_1;
+11-01 17:32:59.526 7493 7519 D Unity : highp vec4 v_15;
+11-01 17:32:59.526 7493 7519 D Unity : v_15.x = _World2Object[0].x;
+11-01 17:32:59.526 7493 7519 D Unity : v_15.y = _World2Object[1].x;
+11-01 17:32:59.526 7493 7519 D Unity : v_15.z = _World2Object[2].x;
+11-01 17:32:59.527 7493 7519 D Unity : v_15.w = _World2Object[3].x;
+11-01 17:32:59.527 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:59.527 7493 7519 D Unity : v_16.x = _World2Object[0].y;
+11-01 17:32:59.527 7493 7519 D Unity : v_16.y = _World2Object[1].y;
+11-01 17:32:59.527 7493 7519 D Unity : v_16.z = _World2Object[2].y;
+11-01 17:32:59.527 7493 7519 D Unity : v_16.w = _World2Object[3].y;
+11-01 17:32:59.527 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:59.527 7493 7519 D Unity : v_17.x = _World2Object[0].z;
+11-01 17:32:59.527 7493 7519 D Unity : v_17.y = _World2Object[1].z;
+11-01 17:32:59.527 7493 7519 D Unity : v_17.z = _World2Object[2].z;
+11-01 17:32:59.527 7493 7519 D Unity : v_17.w = _World2Object[3].z;
+11-01 17:32:59.527 7493 7519 D Unity : highp vec3 tmpvar_18;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_18 = normalize(((
+11-01 17:32:59.527 7493 7519 D Unity : (v_15.xyz * norm_14.x)
+11-01 17:32:59.527 7493 7519 D Unity : +
+11-01 17:32:59.527 7493 7519 D Unity : (v_16.xyz * norm_14.y)
+11-01 17:32:59.527 7493 7519 D Unity : ) + (v_17.xyz * norm_14.z)));
+11-01 17:32:59.527 7493 7519 D Unity : highp vec3 dir_19;
+11-01 17:32:59.527 7493 7519 D Unity : dir_19 = tmpvar_4.xyz;
+11-01 17:32:59.527 7493 7519 D Unity : highp mat3 tmpvar_20;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_20[0] = _Object2World[0].xyz;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_20[1] = _Object2World[1].xyz;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_20[2] = _Object2World[2].xyz;
+11-01 17:32:59.527 7493 7519 D Unity : highp vec4 tmpvar_21;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_21.xyz = normalize((tmpvar_20 * dir_19));
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_21.w = tmpvar_4.w;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec3 normal_22;
+11-01 17:32:59.527 7493 7519 D Unity : normal_22 = tmpvar_18;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec3 tangent_23;
+11-01 17:32:59.527 7493 7519 D Unity : tangent_23 = tmpvar_21.xyz;
+11-01 17:32:59.527 7493 7519 D Unity : mediump float tangentSign_24;
+11-01 17:32:59.527 7493 7519 D Unity : tangentSign_24 = tmpvar_21.w;
+11-01 17:32:59.527 7493 7519 D Unity : mediump float sign_25;
+11-01 17:32:59.527 7493 7519 D Unity : highp float tmpvar_26;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_26 = (tangentSign_24 * unity_WorldTransformParams.w);
+11-01 17:32:59.527 7493 7519 D Unity : sign_25 = tmpvar_26;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec3 tmpvar_27;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_27 = (((normal_22.yzx * tangent_23.zxy) - (normal_22.zxy * tangent_23.yzx)) * sign_25);
+11-01 17:32:59.527 7493 7519 D Unity : mediump mat3 tmpvar_28;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[0].x = tangent_23.x;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[0].y = tmpvar_27.x;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[0].z = normal_22.x;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[1].x = tangent_23.y;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[1].y = tmpvar_27.y;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[1].z = normal_22.y;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[2].x = tangent_23.z;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[2].y = tmpvar_27.z;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_28[2].z = normal_22.z;
+11-01 17:32:59.527 7493 7519 D Unity : tangentToWorld_5 = tmpvar_28;
+11-01 17:32:59.527 7493 7519 D Unity : highp vec3 v_29;
+11-01 17:32:59.527 7493 7519 D Unity : v_29.x = tangentToWorld_5[0].x;
+11-01 17:32:59.527 7493 7519 D Unity : v_29.y = tangentToWorld_5[1].x;
+11-01 17:32:59.527 7493 7519 D Unity : v_29.z = tangentToWorld_5[2].x;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_7.xyz = v_29;
+11-01 17:32:59.527 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:59.527 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].y;
+11-01 17:32:59.527 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].y;
+11-01 17:32:59.527 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].y;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_8.xyz = v_30;
+11-01 17:32:59.527 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:59.527 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].z;
+11-01 17:32:59.527 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].z;
+11-01 17:32:59.527 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].z;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_9.xyz = v_31;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec3 normalWorld_32;
+11-01 17:32:59.527 7493 7519 D Unity : normalWorld_32 = tmpvar_18;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_33;
+11-01 17:32:59.527 7493 7519 D Unity : ambientOrLightmapUV_33.w = 0.0;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec4 tmpvar_34;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_34.w = 1.0;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_34.xyz = normalWorld_32;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec3 x2_35;
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec3 x1_36;
+11-01 17:32:59.527 7493 7519 D Unity : x1_36.x = dot (unity_SHAr, tmpvar_34);
+11-01 17:32:59.527 7493 7519 D Unity : x1_36.y = dot (unity_SHAg, tmpvar_34);
+11-01 17:32:59.527 7493 7519 D Unity : x1_36.z = dot (unity_SHAb, tmpvar_34);
+11-01 17:32:59.527 7493 7519 D Unity : mediump vec4 tmpvar_37;
+11-01 17:32:59.527 7493 7519 D Unity : tmpvar_37 = (normalWorld_32.xyzz * normalWorld_32.yzzx);
+11-01 17:32:59.527 7493 7519 D Unity : x2_35.x = dot (unity_SHBr, tmpvar_37);
+11-01 17:32:59.527 7493 7519 D Unity : x2_35.y = dot (unity_SHBg, tmpvar_37);
+11-01 17:32:59.527 7493 7519 D Unity : x2_35.z = dot (unity_SHBb, tmpvar_37);
+11-01 17:32:59.527 7493 7519 D Unity : ambientOrLightmapUV_33.xyz = ((x2_35 + (unity_SHC.xyz *
+11-01 17:32:59.527 7493 7519 D Unity : ((normalWorld_32.x * normalWorld_32.x) - (normalWorld_32.y * normalWorld_32.y))
+11-01 17:32:59.527 7493 7519 D Unity : )) + x1_36);
+11-01 17:32:59.527 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:59.527 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_11;
+11-01 17:32:59.527 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_13);
+11-01 17:32:59.527 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:59.527 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:59.527 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:59.527 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_33;
+11-01 17:32:59.527 7493 7519 D Unity : }
+11-01 17:32:59.527 7493 7519 D Unity : vertex shader
+11-01 17:32:59.527 7493 7519 D Unity : Compile failed.
+11-01 17:32:59.547 7493 7519 D Unity : #version 100
+11-01 17:32:59.547 7493 7519 D Unity : attribute vec4 _glesTANGENT;
+11-01 17:32:59.547 7493 7519 D Unity : attribute vec4 _glesVertex;
+11-01 17:32:59.547 7493 7519 D Unity : attribute vec3 _glesNormal;
+11-01 17:32:59.547 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord0;
+11-01 17:32:59.547 7493 7519 D Unity : attribute vec4 _glesMultiTexCoord1;
+11-01 17:32:59.547 7493 7519 D Unity : uniform highp vec3 _WorldSpaceCameraPos;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump vec4 unity_SHAr;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump vec4 unity_SHAg;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump vec4 unity_SHAb;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump vec4 unity_SHBr;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump vec4 unity_SHBg;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump vec4 unity_SHBb;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump vec4 unity_SHC;
+11-01 17:32:59.547 7493 7519 D Unity : uniform highp mat4 glstate_matrix_mvp;
+11-01 17:32:59.547 7493 7519 D Unity : uniform highp mat4 _Object2World;
+11-01 17:32:59.547 7493 7519 D Unity : uniform highp mat4 _World2Object;
+11-01 17:32:59.547 7493 7519 D Unity : uniform highp vec4 unity_WorldTransformParams;
+11-01 17:32:59.547 7493 7519 D Unity : uniform highp vec4 _MainTex_ST;
+11-01 17:32:59.547 7493 7519 D Unity : uniform highp vec4 _DetailAlbedoMap_ST;
+11-01 17:32:59.547 7493 7519 D Unity : uniform mediump float _UVSec;
+11-01 17:32:59.547 7493 7519 D Unity : varying highp vec4 xlv_TEXCOORD0;
+11-01 17:32:59.547 7493 7519 D Unity : varying mediump vec3 xlv_TEXCOORD1;
+11-01 17:32:59.547 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2;
+11-01 17:32:59.547 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_1;
+11-01 17:32:59.547 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD2_2;
+11-01 17:32:59.547 7493 7519 D Unity : varying mediump vec4 xlv_TEXCOORD5;
+11-01 17:32:59.547 7493 7519 D Unity : void main ()
+11-01 17:32:59.547 7493 7519 D Unity : {
+11-01 17:32:59.547 7493 7519 D Unity : mediump vec3 tmpvar_1;
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_1 = _glesNormal;
+11-01 17:32:59.547 7493 7519 D Unity : highp vec2 tmpvar_2;
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_2 = _glesMultiTexCoord0.xy;
+11-01 17:32:59.547 7493 7519 D Unity : highp vec2 tmpvar_3;
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_3 = _glesMultiTexCoord1.xy;
+11-01 17:32:59.547 7493 7519 D Unity : mediump vec4 tmpvar_4;
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_4 = _glesTANGENT;
+11-01 17:32:59.547 7493 7519 D Unity : highp mat3 tangentToWorld_5;
+11-01 17:32:59.547 7493 7519 D Unity : highp vec4 tmpvar_6;
+11-01 17:32:59.547 7493 7519 D Unity : mediump vec4 tmpvar_7;
+11-01 17:32:59.547 7493 7519 D Unity : mediump vec4 tmpvar_8;
+11-01 17:32:59.547 7493 7519 D Unity : mediump vec4 tmpvar_9;
+11-01 17:32:59.547 7493 7519 D Unity : highp vec4 tmpvar_10;
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_10 = (_Object2World * _glesVertex);
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_6 = (glstate_matrix_mvp * _glesVertex);
+11-01 17:32:59.547 7493 7519 D Unity : highp vec4 texcoord_11;
+11-01 17:32:59.547 7493 7519 D Unity : texcoord_11.xy = ((_glesMultiTexCoord0.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
+11-01 17:32:59.547 7493 7519 D Unity : highp vec2 tmpvar_12;
+11-01 17:32:59.547 7493 7519 D Unity : if ((_UVSec == 0.0)) {
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_12 = tmpvar_2;
+11-01 17:32:59.547 7493 7519 D Unity : } else {
+11-01 17:32:59.547 7493 7519 D Unity : tmpvar_12 = tmpvar_3;
+11-01 17:32:59.547 7493 7519 D Unity : };
+11-01 17:32:59.547 7493 7519 D Unity : texcoord_11.zw = ((tmpvar_12 * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
+11-01 17:32:59.547 7493 7519 D Unity : mediump vec3 n_13;
+11-01 17:32:59.547 7493 7519 D Unity : n_13 = (tmpvar_10.xyz - _WorldSpaceCameraPos);
+11-01 17:32:59.547 7493 7519 D Unity : highp vec3 norm_14;
+11-01 17:32:59.547 7493 7519 D Unity : norm_14 = tmpvar_1;
+11-01 17:32:59.547 7493 7519 D Unity : highp vec4 v_15;
+11-01 17:32:59.547 7493 7519 D Unity : v_15.x = _World2Object[0].x;
+11-01 17:32:59.547 7493 7519 D Unity : v_15.y = _World2Object[1].x;
+11-01 17:32:59.547 7493 7519 D Unity : v_15.z = _World2Object[2].x;
+11-01 17:32:59.547 7493 7519 D Unity : v_15.w = _World2Object[3].x;
+11-01 17:32:59.547 7493 7519 D Unity : highp vec4 v_16;
+11-01 17:32:59.547 7493 7519 D Unity : v_16.x = _World2Object[0].y;
+11-01 17:32:59.547 7493 7519 D Unity : v_16.y = _World2Object[1].y;
+11-01 17:32:59.547 7493 7519 D Unity : v_16.z = _World2Object[2].y;
+11-01 17:32:59.547 7493 7519 D Unity : v_16.w = _World2Object[3].y;
+11-01 17:32:59.548 7493 7519 D Unity : highp vec4 v_17;
+11-01 17:32:59.548 7493 7519 D Unity : v_17.x = _World2Object[0].z;
+11-01 17:32:59.548 7493 7519 D Unity : v_17.y = _World2Object[1].z;
+11-01 17:32:59.548 7493 7519 D Unity : v_17.z = _World2Object[2].z;
+11-01 17:32:59.548 7493 7519 D Unity : v_17.w = _World2Object[3].z;
+11-01 17:32:59.548 7493 7519 D Unity : highp vec3 tmpvar_18;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_18 = normalize(((
+11-01 17:32:59.548 7493 7519 D Unity : (v_15.xyz * norm_14.x)
+11-01 17:32:59.548 7493 7519 D Unity : +
+11-01 17:32:59.548 7493 7519 D Unity : (v_16.xyz * norm_14.y)
+11-01 17:32:59.548 7493 7519 D Unity : ) + (v_17.xyz * norm_14.z)));
+11-01 17:32:59.548 7493 7519 D Unity : highp vec3 dir_19;
+11-01 17:32:59.548 7493 7519 D Unity : dir_19 = tmpvar_4.xyz;
+11-01 17:32:59.548 7493 7519 D Unity : highp mat3 tmpvar_20;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_20[0] = _Object2World[0].xyz;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_20[1] = _Object2World[1].xyz;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_20[2] = _Object2World[2].xyz;
+11-01 17:32:59.548 7493 7519 D Unity : highp vec4 tmpvar_21;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_21.xyz = normalize((tmpvar_20 * dir_19));
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_21.w = tmpvar_4.w;
+11-01 17:32:59.548 7493 7519 D Unity : mediump vec3 normal_22;
+11-01 17:32:59.548 7493 7519 D Unity : normal_22 = tmpvar_18;
+11-01 17:32:59.548 7493 7519 D Unity : mediump vec3 tangent_23;
+11-01 17:32:59.548 7493 7519 D Unity : tangent_23 = tmpvar_21.xyz;
+11-01 17:32:59.548 7493 7519 D Unity : mediump float tangentSign_24;
+11-01 17:32:59.548 7493 7519 D Unity : tangentSign_24 = tmpvar_21.w;
+11-01 17:32:59.548 7493 7519 D Unity : mediump float sign_25;
+11-01 17:32:59.548 7493 7519 D Unity : highp float tmpvar_26;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_26 = (tangentSign_24 * unity_WorldTransformParams.w);
+11-01 17:32:59.548 7493 7519 D Unity : sign_25 = tmpvar_26;
+11-01 17:32:59.548 7493 7519 D Unity : mediump vec3 tmpvar_27;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_27 = (((normal_22.yzx * tangent_23.zxy) - (normal_22.zxy * tangent_23.yzx)) * sign_25);
+11-01 17:32:59.548 7493 7519 D Unity : mediump mat3 tmpvar_28;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[0].x = tangent_23.x;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[0].y = tmpvar_27.x;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[0].z = normal_22.x;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[1].x = tangent_23.y;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[1].y = tmpvar_27.y;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[1].z = normal_22.y;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[2].x = tangent_23.z;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[2].y = tmpvar_27.z;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_28[2].z = normal_22.z;
+11-01 17:32:59.548 7493 7519 D Unity : tangentToWorld_5 = tmpvar_28;
+11-01 17:32:59.548 7493 7519 D Unity : highp vec3 v_29;
+11-01 17:32:59.548 7493 7519 D Unity : v_29.x = tangentToWorld_5[0].x;
+11-01 17:32:59.548 7493 7519 D Unity : v_29.y = tangentToWorld_5[1].x;
+11-01 17:32:59.548 7493 7519 D Unity : v_29.z = tangentToWorld_5[2].x;
+11-01 17:32:59.548 7493 7519 D Unity : tmpvar_7.xyz = v_29;
+11-01 17:32:59.548 7493 7519 D Unity : highp vec3 v_30;
+11-01 17:32:59.548 7493 7519 D Unity : v_30.x = tangentToWorld_5[0].y;
+11-01 17:32:59.550 7493 7519 D Unity : v_30.y = tangentToWorld_5[1].y;
+11-01 17:32:59.550 7493 7519 D Unity : v_30.z = tangentToWorld_5[2].y;
+11-01 17:32:59.550 7493 7519 D Unity : tmpvar_8.xyz = v_30;
+11-01 17:32:59.550 7493 7519 D Unity : highp vec3 v_31;
+11-01 17:32:59.550 7493 7519 D Unity : v_31.x = tangentToWorld_5[0].z;
+11-01 17:32:59.550 7493 7519 D Unity : v_31.y = tangentToWorld_5[1].z;
+11-01 17:32:59.550 7493 7519 D Unity : v_31.z = tangentToWorld_5[2].z;
+11-01 17:32:59.550 7493 7519 D Unity : tmpvar_9.xyz = v_31;
+11-01 17:32:59.550 7493 7519 D Unity : mediump vec3 normalWorld_32;
+11-01 17:32:59.550 7493 7519 D Unity : normalWorld_32 = tmpvar_18;
+11-01 17:32:59.550 7493 7519 D Unity : mediump vec4 ambientOrLightmapUV_33;
+11-01 17:32:59.550 7493 7519 D Unity : ambientOrLightmapUV_33.w = 0.0;
+11-01 17:32:59.550 7493 7519 D Unity : mediump vec4 tmpvar_34;
+11-01 17:32:59.550 7493 7519 D Unity : tmpvar_34.w = 1.0;
+11-01 17:32:59.550 7493 7519 D Unity : tmpvar_34.xyz = normalWorld_32;
+11-01 17:32:59.550 7493 7519 D Unity : mediump vec3 x2_35;
+11-01 17:32:59.550 7493 7519 D Unity : mediump vec3 x1_36;
+11-01 17:32:59.550 7493 7519 D Unity : x1_36.x = dot (unity_SHAr, tmpvar_34);
+11-01 17:32:59.550 7493 7519 D Unity : x1_36.y = dot (unity_SHAg, tmpvar_34);
+11-01 17:32:59.550 7493 7519 D Unity : x1_36.z = dot (unity_SHAb, tmpvar_34);
+11-01 17:32:59.550 7493 7519 D Unity : mediump vec4 tmpvar_37;
+11-01 17:32:59.550 7493 7519 D Unity : tmpvar_37 = (normalWorld_32.xyzz * normalWorld_32.yzzx);
+11-01 17:32:59.550 7493 7519 D Unity : x2_35.x = dot (unity_SHBr, tmpvar_37);
+11-01 17:32:59.550 7493 7519 D Unity : x2_35.y = dot (unity_SHBg, tmpvar_37);
+11-01 17:32:59.550 7493 7519 D Unity : x2_35.z = dot (unity_SHBb, tmpvar_37);
+11-01 17:32:59.550 7493 7519 D Unity : ambientOrLightmapUV_33.xyz = ((x2_35 + (unity_SHC.xyz *
+11-01 17:32:59.550 7493 7519 D Unity : ((normalWorld_32.x * normalWorld_32.x) - (normalWorld_32.y * normalWorld_32.y))
+11-01 17:32:59.550 7493 7519 D Unity : )) + x1_36);
+11-01 17:32:59.550 7493 7519 D Unity : gl_Position = tmpvar_6;
+11-01 17:32:59.550 7493 7519 D Unity : xlv_TEXCOORD0 = texcoord_11;
+11-01 17:32:59.550 7493 7519 D Unity : xlv_TEXCOORD1 = normalize(n_13);
+11-01 17:32:59.550 7493 7519 D Unity : xlv_TEXCOORD2 = tmpvar_7;
+11-01 17:32:59.550 7493 7519 D Unity : xlv_TEXCOORD2_1 = tmpvar_8;
+11-01 17:32:59.550 7493 7519 D Unity : xlv_TEXCOORD2_2 = tmpvar_9;
+11-01 17:32:59.550 7493 7519 D Unity : xlv_TEXCOORD5 = ambientOrLightmapUV_33;
+11-01 17:32:59.550 7493 7519 D Unity : }
+11-01 17:32:59.550 7493 7519 D Unity : vertex shader
+11-01 17:32:59.550 7493 7519 D Unity : Compile failed.
+11-01 17:33:07.093 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:33:07.093 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0
+11-01 17:33:07.094 223 2143 W APM_AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 48000,format 1, channels 3, flags 4
+11-01 17:33:07.094 295 382 E AudioTrack: Could not get audio output for session 233, stream type -1, usage 13, sample rate 48000, format 0x1, channel mask 0x3, flags 0x4
+11-01 17:33:07.094 295 382 E SoundPool: Error creating AudioTrack
+11-01 17:33:07.218 295 312 W Looper : Dispatch took 125ms on android.ui, h=Handler (android.view.ViewRootImpl$ViewRootHandler) {5294093} cb=android.view.View$PerformClick@8ef78d0 msg=0
+11-01 17:33:13.855 295 364 D SntpClient: request time failed: java.net.SocketTimeoutException: Poll timed out
+11-01 17:33:18.869 295 365 D SntpClient: request time failed: java.net.SocketTimeoutException: Poll timed out
+11-01 17:33:33.271 7493 7511 D RenderScript HIDL Adaptation: IRenderScriptDevice::getService()
+11-01 17:33:33.271 147 147 W /system/bin/hwservicemanager: getTransportFromManifest: Cannot find entry android.hardware.renderscript@1.0::IDevice in either framework or device manifest, using default transport.
+11-01 17:33:33.273 7493 7511 D RenderScript HIDL Adaptation: IRenderScriptDevice::getService() returned 0x0
+11-01 17:33:33.273 7493 7511 D RenderScript HIDL Adaptation: Using Fallback Path.
+11-01 17:33:33.289 7493 7511 D RenderScript: Successfully queried cache dir: /data/user_de/0/com.antutu.benchmark.full/code_cache
+11-01 17:33:33.290 7493 7511 D RenderScript: Setting cache dir: /data/user_de/0/com.antutu.benchmark.full/code_cache
+11-01 17:33:33.337 7493 7511 I zygote : Starting a blocking GC NativeAlloc
+11-01 17:33:33.410 7493 7511 I zygote : Waiting for a blocking GC NativeAlloc
+11-01 17:33:33.411 7493 7511 I zygote : Starting a blocking GC NativeAlloc
+11-01 17:33:33.421 7493 7511 I zygote : Starting a blocking GC NativeAlloc
+11-01 17:33:39.790 7493 7511 D RenderScript: Setting cache dir: /data/user_de/0/com.antutu.benchmark.full/code_cache
+11-01 17:33:39.838 7493 7511 I zygote : Starting a blocking GC NativeAlloc
+11-01 17:33:39.913 7493 7511 I zygote : Waiting for a blocking GC NativeAlloc
+11-01 17:33:39.913 7493 7511 I zygote : Starting a blocking GC NativeAlloc
+11-01 17:33:54.581 7493 7511 E Unity : RenderTexture warning: Destroying active render texture. Switching to main context.
+11-01 17:33:54.581 7493 7511 E Unity :
+11-01 17:33:54.581 7493 7511 E Unity : (Filename: Line: 509)
+11-01 17:33:54.581 7493 7511 E Unity :
+11-01 17:33:54.597 7493 7511 E libEGL : call to OpenGL ES API with no current context (logged once per thread)
+11-01 17:33:54.619 295 1319 W ActivityManager: Finishing task with all activities already finished
+11-01 17:33:54.619 295 1319 W ActivityManager: Duplicate finish request for ActivityRecord{d28a06a u0 com.antutu.benchmark.full/.UnityPlayerActivity t8 f}
+11-01 17:33:54.627 2344 2344 I pool-2-thread-1: type=1400 audit(0.0:142): avc: denied { read } for name="address" dev="sysfs" ino=17394 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1
+11-01 17:33:55.661 7493 7493 I Process : Sending signal. PID: 7493 SIG: 9
+11-01 17:33:55.672 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:33:55.685 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:33:55.686 295 1701 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:33:55.686 295 1701 D OpenGLRenderer: Swap behavior 1
+11-01 17:33:55.687 295 1701 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:33:55.687 295 1701 D OpenGLRenderer: Swap behavior 0
+11-01 17:33:55.735 295 357 W InputDispatcher: channel 'c6a721f com.antutu.benchmark.full/com.antutu.benchmark.full.UnityPlayerActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
+11-01 17:33:55.735 295 357 E InputDispatcher: channel 'c6a721f com.antutu.benchmark.full/com.antutu.benchmark.full.UnityPlayerActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
+11-01 17:33:55.842 295 1320 I ActivityManager: Process com.antutu.benchmark.full (pid 7493) has died: cch CEM
+11-01 17:33:55.844 295 629 I WindowManager: WIN DEATH: Window{c6a721f u0 com.antutu.benchmark.full/com.antutu.benchmark.full.UnityPlayerActivity}
+11-01 17:33:55.844 295 629 W InputDispatcher: Attempted to unregister already unregistered input channel 'c6a721f com.antutu.benchmark.full/com.antutu.benchmark.full.UnityPlayerActivity (server)'
+11-01 17:33:55.852 295 319 W ActivityManager: setHasOverlayUi called on unknown pid: 7493
+11-01 17:33:55.855 295 7566 I zygote : Starting a blocking GC Alloc
+11-01 17:33:55.855 295 7566 I zygote : Starting a blocking GC Alloc
+11-01 17:33:55.860 295 343 I zygote : Waiting for a blocking GC Alloc
+11-01 17:33:55.877 295 391 I zygote : Waiting for a blocking GC Alloc
+11-01 17:33:55.915 295 7566 I zygote : Alloc concurrent copying GC freed 31454(2MB) AllocSpace objects, 18(396KB) LOS objects, 42% free, 5MB/9MB, paused 273us total 60.322ms
+11-01 17:33:55.915 295 343 I zygote : WaitForGcToComplete blocked for 55.434ms for cause Alloc
+11-01 17:33:55.915 295 343 I zygote : Starting a blocking GC Alloc
+11-01 17:33:55.916 295 391 I zygote : WaitForGcToComplete blocked for 38.481ms for cause Alloc
+11-01 17:33:55.916 295 391 I zygote : Starting a blocking GC Alloc
+11-01 17:33:58.275 295 395 E TaskPersister: File error accessing recents directory (directory doesn't exist?).
+11-01 17:35:39.575 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:39.575 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:39.598 2344 7485 I zygote : Alloc concurrent copying GC freed 112(31KB) AllocSpace objects, 6(6MB) LOS objects, 43% free, 7MB/13MB, paused 219us total 21.836ms
+11-01 17:35:39.686 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:39.708 2344 7485 I zygote : WaitForGcToComplete blocked for 21.981ms for cause Alloc
+11-01 17:35:39.708 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:39.777 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:39.797 2344 7485 I zygote : WaitForGcToComplete blocked for 19.635ms for cause Alloc
+11-01 17:35:39.797 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:39.874 2344 7485 I chatty : uid=10058(u0_a58) Thread-44 identical 1 line
+11-01 17:35:39.874 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:39.897 2344 7485 I zygote : Alloc concurrent copying GC freed 3343(143KB) AllocSpace objects, 8(10MB) LOS objects, 49% free, 4MB/9MB, paused 215us total 23.515ms
+11-01 17:35:40.023 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:40.026 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.091 2344 2355 I zygote : Clamp target GC heap from 16MB to 16MB
+11-01 17:35:40.123 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.123 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.146 2344 7485 I zygote : Alloc concurrent copying GC freed 290(36KB) AllocSpace objects, 6(6MB) LOS objects, 43% free, 7MB/13MB, paused 225us total 23.354ms
+11-01 17:35:40.227 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:40.248 2344 7485 I zygote : WaitForGcToComplete blocked for 21.087ms for cause Alloc
+11-01 17:35:40.248 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.317 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:40.338 2344 7485 I zygote : WaitForGcToComplete blocked for 20.558ms for cause Alloc
+11-01 17:35:40.338 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.414 2344 7485 I chatty : uid=10058(u0_a58) Thread-44 identical 1 line
+11-01 17:35:40.414 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.437 2344 7485 I zygote : Alloc concurrent copying GC freed 3343(143KB) AllocSpace objects, 8(10MB) LOS objects, 49% free, 4MB/9MB, paused 174us total 22.337ms
+11-01 17:35:40.562 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:40.564 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.669 2344 7485 I chatty : uid=10058(u0_a58) Thread-44 identical 1 line
+11-01 17:35:40.669 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.691 2344 7485 I zygote : Alloc concurrent copying GC freed 290(36KB) AllocSpace objects, 6(6MB) LOS objects, 43% free, 7MB/13MB, paused 186us total 21.991ms
+11-01 17:35:40.777 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:40.795 2344 7485 I zygote : WaitForGcToComplete blocked for 17.497ms for cause Alloc
+11-01 17:35:40.795 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:40.861 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:35:40.883 2344 7485 I zygote : WaitForGcToComplete blocked for 21.489ms for cause Alloc
+11-01 17:35:40.883 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:35:46.060 2344 7613 I zygote : Deoptimizing void org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(org.kxml2.io.KXmlParser, org.apache.harmony.xml.dom.DocumentImpl, org.w3c.dom.Node, int) due to JIT inline cache
+11-01 17:36:14.334 157 193 D MDnsDS : MDnsSdListener::Monitor poll timed out
+11-01 17:36:14.334 157 193 D MDnsDS : Going to poll with pollCount 1
+11-01 17:36:30.243 2344 2355 I zygote : Background concurrent copying GC freed 123933(4MB) AllocSpace objects, 0(0B) LOS objects, 43% free, 7MB/13MB, paused 184us total 109.310ms
+11-01 17:36:31.041 295 7616 D NetworkMonitor/NetworkAgentInfo [Ethernet () - 100]: PROBE_DNS connectivitycheck.gstatic.com 6ms OK 203.208.39.207
+11-01 17:36:31.046 295 7615 D NetworkMonitor/NetworkAgentInfo [Ethernet () - 100]: PROBE_DNS www.google.com 10ms OK 66.220.147.44
+11-01 17:36:31.068 295 7616 D NetworkMonitor/NetworkAgentInfo [Ethernet () - 100]: PROBE_HTTP http://connectivitycheck.gstatic.com/generate_204 time=27ms ret=204 request={User-Agent=[Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36]} headers={null=[HTTP/1.1 204 No Content], Content-Length=[0], Date=[Tue, 07 Nov 2017 12:51:17 GMT], X-Android-Received-Millis=[1509557791068], X-Android-Response-Source=[NETWORK 204], X-Android-Selected-Protocol=[http/1.1], X-Android-Sent-Millis=[1509557791056]}
+11-01 17:36:31.092 295 7615 D NetworkMonitor/NetworkAgentInfo [Ethernet () - 100]: PROBE_HTTPS https://www.google.com/generate_204 Probably not a portal: exception java.net.ConnectException: Failed to connect to www.google.com/66.220.147.44:443
+11-01 17:36:31.978 2344 2355 I zygote : Background concurrent copying GC freed 171758(6MB) AllocSpace objects, 0(0B) LOS objects, 43% free, 7MB/13MB, paused 183us total 119.498ms
+11-01 17:36:41.105 295 1014 D NetworkMonitor/NetworkAgentInfo [Ethernet () - 100]: PROBE_FALLBACK http://www.google.com/gen_204 Probably not a portal: exception java.net.SocketTimeoutException: failed to connect to www.google.com/66.220.147.44 (port 80) from /192.168.0.109 (port 51016) after 10000ms
+11-01 17:36:41.105 295 375 D ConnectivityService: NetworkAgentInfo [Ethernet () - 100] validation failed
+11-01 17:36:42.553 2344 2349 I zygote : Do full code cache collection, code=125KB, data=94KB
+11-01 17:36:42.555 2344 2349 I zygote : After code cache collection, code=82KB, data=55KB
+11-01 17:36:42.672 2344 7485 I zygote : Waiting for a blocking GC Alloc
+11-01 17:36:42.704 2344 7485 I zygote : WaitForGcToComplete blocked for 32.140ms for cause Alloc
+11-01 17:36:42.704 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:50.392 2344 2349 I zygote : Do partial code cache collection, code=117KB, data=70KB
+11-01 17:36:50.393 2344 2349 I zygote : After code cache collection, code=117KB, data=70KB
+11-01 17:36:50.393 2344 2349 I zygote : Increasing code cache capacity to 512KB
+11-01 17:36:57.203 2344 2355 I zygote : Clamp target GC heap from 16MB to 16MB
+11-01 17:36:57.252 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.252 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.273 2344 7485 I zygote : Clamp target GC heap from 18MB to 16MB
+11-01 17:36:57.273 2344 7485 I zygote : Alloc concurrent copying GC freed 115(90KB) AllocSpace objects, 7(2MB) LOS objects, 20% free, 12MB/16MB, paused 180us total 21.326ms
+11-01 17:36:57.273 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.296 2344 7485 I zygote : Clamp target GC heap from 18MB to 16MB
+11-01 17:36:57.296 2344 7485 I zygote : Alloc concurrent copying GC freed 5(152B) AllocSpace objects, 0(0B) LOS objects, 20% free, 12MB/16MB, paused 218us total 22.072ms
+11-01 17:36:57.296 2344 7485 I zygote : Forcing collection of SoftReferences for 4MB allocation
+11-01 17:36:57.296 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.328 2344 7485 I zygote : Clamp target GC heap from 18MB to 16MB
+11-01 17:36:57.328 2344 7485 I zygote : Alloc concurrent copying GC freed 4692(225KB) AllocSpace objects, 0(0B) LOS objects, 21% free, 12MB/16MB, paused 177us total 32.137ms
+11-01 17:36:57.328 2344 7485 W zygote : Throwing OutOfMemoryError "Failed to allocate a 4194316 byte allocation with 3581416 free bytes and 3MB until OOM, max allowed footprint 16777216, growth limit 16777216"
+11-01 17:36:57.328 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.328 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.348 2344 7485 I zygote : Clamp target GC heap from 18MB to 16MB
+11-01 17:36:57.348 2344 7485 I zygote : Alloc concurrent copying GC freed 4(31KB) AllocSpace objects, 0(0B) LOS objects, 21% free, 12MB/16MB, paused 208us total 20.056ms
+11-01 17:36:57.348 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.370 2344 7485 I zygote : Clamp target GC heap from 18MB to 16MB
+11-01 17:36:57.370 2344 7485 I zygote : Alloc concurrent copying GC freed 4(16KB) AllocSpace objects, 0(0B) LOS objects, 21% free, 12MB/16MB, paused 201us total 20.960ms
+11-01 17:36:57.370 2344 7485 I zygote : Forcing collection of SoftReferences for 4MB allocation
+11-01 17:36:57.370 2344 7485 I zygote : Starting a blocking GC Alloc
+11-01 17:36:57.402 2344 7485 I zygote : Clamp target GC heap from 18MB to 16MB
+11-01 17:36:57.402 2344 7485 I zygote : Alloc concurrent copying GC freed 5(16KB) AllocSpace objects, 0(0B) LOS objects, 21% free, 12MB/16MB, paused 199us total 31.772ms
+11-01 17:36:57.402 2344 7485 W zygote : Throwing OutOfMemoryError "Failed to allocate a 4194320 byte allocation with 3581416 free bytes and 3MB until OOM, max allowed footprint 16777216, growth limit 16777216"
+--------- beginning of crash
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: FATAL EXCEPTION: Thread-44
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: Process: com.antutu.ABenchMark, PID: 2344
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 4194320 byte allocation with 3581416 free bytes and 3MB until OOM, max allowed footprint 16777216, growth limit 16777216
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at java.util.Arrays.copyOf(Arrays.java:3164)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at com.antutu.benchmark.platform.a.a.a(Unknown Source:23)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at com.antutu.benchmark.platform.a.a.b(Unknown Source:62)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at com.antutu.benchmark.platform.f.c(Unknown Source:8)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at com.antutu.benchmark.BenchmarkService.e(Unknown Source:508)
+11-01 17:36:57.402 2344 7485 E AndroidRuntime: at com.antutu.benchmark.c.run(Unknown Source:2)
+11-01 17:36:57.782 2344 7485 D SharedPreferencesImpl: Time required to fsync /data/user/0/com.antutu.ABenchMark/shared_prefs/umeng_general_config.xml: [<1: 0, <2: 0, <4: 1, <8: 12, <16: 5, <32: 1, <64: 0, <128: 0, <256: 0, <512: 1, <1024: 0, <2048: 0, <4096: 0, <8192: 0, <16384: 0, >=16384: 0]
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: Failed to allocate a 4194320 byte allocation with 3581416 free bytes and 3MB until OOM, max allowed footprint 16777216, growth limit 16777216
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: java.lang.OutOfMemoryError: Failed to allocate a 4194320 byte allocation with 3581416 free bytes and 3MB until OOM, max allowed footprint 16777216, growth limit 16777216
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at java.util.Arrays.copyOf(Arrays.java:3164)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at com.antutu.benchmark.platform.a.a.a(Unknown Source:23)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at com.antutu.benchmark.platform.a.a.b(Unknown Source:62)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at com.antutu.benchmark.platform.f.c(Unknown Source:8)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at com.antutu.benchmark.BenchmarkService.e(Unknown Source:508)
+11-01 17:36:57.803 2344 7485 E MobUncaughtExceptionHandler: at com.antutu.benchmark.c.run(Unknown Source:2)
+11-01 17:36:57.809 295 1320 W ActivityManager: Force finishing activity com.antutu.ABenchMark/com.antutu.benchmark.activity.ScoreBenchActivity
+11-01 17:36:57.820 295 312 I ActivityManager: Showing crash dialog for package com.antutu.ABenchMark u0
+11-01 17:36:57.910 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:36:57.913 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:36:57.915 295 1701 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:36:57.915 295 1701 D OpenGLRenderer: Swap behavior 1
+11-01 17:36:57.915 295 1701 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:36:57.915 295 1701 D OpenGLRenderer: Swap behavior 0
+11-01 17:36:58.011 2344 7304 W OkHttpClient: A connection to http://certtime.antutu.net/ was leaked. Did you forget to close a response body?
+11-01 17:36:58.034 2344 7336 I Process : Sending signal. PID: 2344 SIG: 9
+11-01 17:36:58.069 295 357 W InputDispatcher: channel 'a6f2a57 com.antutu.ABenchMark/com.antutu.benchmark.activity.ScoreBenchActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
+11-01 17:36:58.069 295 357 E InputDispatcher: channel 'a6f2a57 com.antutu.ABenchMark/com.antutu.benchmark.activity.ScoreBenchActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
+11-01 17:36:58.071 295 357 W InputDispatcher: channel '4c6ad5 com.antutu.ABenchMark/com.antutu.benchmark.activity.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
+11-01 17:36:58.071 295 357 E InputDispatcher: channel '4c6ad5 com.antutu.ABenchMark/com.antutu.benchmark.activity.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
+11-01 17:36:58.096 295 7566 I ActivityManager: Process com.android.webview:sandboxed_process0 (pid 7366) has died: fore TOP
+11-01 17:36:58.096 295 7566 W ActivityManager: Scheduling restart of crashed service com.antutu.ABenchMark/org.chromium.content.app.SandboxedProcessService0 in 1000ms
+11-01 17:36:58.096 295 313 W system_server: failed to open /acct/uid_99001/pid_7366/cgroup.procs: No such file or directory
+11-01 17:36:58.217 295 7566 D ConnectivityService: ConnectivityService NetworkRequestInfo binderDied(NetworkRequest [ LISTEN id=8, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ], android.os.BinderProxy@b2e1e89)
+11-01 17:36:58.221 295 311 W InputDispatcher: Attempted to unregister already unregistered input channel 'a6f2a57 com.antutu.ABenchMark/com.antutu.benchmark.activity.ScoreBenchActivity (server)'
+11-01 17:36:58.226 295 7566 D ConnectivityService: ConnectivityService NetworkRequestInfo binderDied(NetworkRequest [ LISTEN id=7, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ], android.os.BinderProxy@6e6ee8e)
+11-01 17:36:58.228 295 375 E ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=8, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ]
+11-01 17:36:58.237 295 375 E ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=7, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ]
+11-01 17:36:58.242 295 7566 I WindowManager: WIN DEATH: Window{4c6ad5 u0 com.antutu.ABenchMark/com.antutu.benchmark.activity.MainActivity}
+11-01 17:36:58.242 295 7566 W InputDispatcher: Attempted to unregister already unregistered input channel '4c6ad5 com.antutu.ABenchMark/com.antutu.benchmark.activity.MainActivity (server)'
+11-01 17:36:58.276 295 1316 I ActivityManager: Process com.antutu.ABenchMark (pid 2344) has died: fore TOP
+11-01 17:36:58.277 295 1316 W ActivityManager: Service crashed 2 times, stopping: ServiceRecord{e356708 u0 com.antutu.ABenchMark/com.antutu.benchmark.BenchmarkService}
+11-01 17:36:58.280 295 1316 W ActivityManager: Force removing ActivityRecord{bc93d06 u0 com.antutu.ABenchMark/com.antutu.benchmark.activity.MainActivity t7}: app died, no saved state
+11-01 17:36:58.309 295 1320 W ActivityManager: Ignoring remove of inactive process: ProcessRecord{3af8a9a 0:com.antutu.ABenchMark/u0a58}
+11-01 17:36:58.310 295 319 W ActivityManager: setHasOverlayUi called on unknown pid: 2344
+11-01 17:36:58.379 853 950 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:36:58.381 853 950 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:36:58.382 853 950 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:36:58.382 853 950 D OpenGLRenderer: Swap behavior 1
+11-01 17:36:58.382 853 950 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:36:58.382 853 950 D OpenGLRenderer: Swap behavior 0
+11-01 17:36:58.418 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:36:58.422 295 1701 I vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib/hw/gralloc.am57x.so from the current namespace instead.
+11-01 17:36:58.423 295 1701 I OpenGLRenderer: Initialized EGL, version 1.4
+11-01 17:36:58.423 295 1701 D OpenGLRenderer: Swap behavior 1
+11-01 17:36:58.423 295 1701 W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
+11-01 17:36:58.423 295 1701 D OpenGLRenderer: Swap behavior 0
+11-01 17:36:58.491 295 343 W AppOps : Finishing op nesting under-run: uid 1000 pkg android code 24 time=0 duration=0 nesting=0
+11-01 17:36:58.898 853 950 W OpenGLRenderer: Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
+11-01 17:37:01.836 295 395 E TaskPersister: File error accessing recents directory (directory doesn't exist?).
diff --git a/automated/android/boottime/boottime.sh b/automated/android/boottime/boottime.sh
index 18b8d68..93b6f4d 100755
--- a/automated/android/boottime/boottime.sh
+++ b/automated/android/boottime/boottime.sh
@@ -6,12 +6,13 @@ BOOT_TIMEOUT="300"
OPERATION="COLLECT"
COLLECT_NO="1"
OUTPUT="$(pwd)/output"
+SKIP_INSTALL='true'
. ../../lib/sh-test-lib
. ../../lib/android-test-lib
usage() {
- echo "Usage: $0 [-S <skip_install>] [-s <android_serial>] [-t <boot_timeout>] [-o <COLLECT|ANALYZE>] [-n <collect_no>]" 1>&2
+ echo "Usage: $0 [-S skip_install <true|false>] [-s <android_serial>] [-t <boot_timeout>] [-o <COLLECT|ANALYZE>] [-n <collect_no>]" 1>&2
exit 1
}
diff --git a/automated/android/boottime/boottime.yaml b/automated/android/boottime/boottime.yaml
index 14f7154..58f4a3d 100644
--- a/automated/android/boottime/boottime.yaml
+++ b/automated/android/boottime/boottime.yaml
@@ -18,6 +18,8 @@ metadata:
- hi6220-hikey
params:
+ # specify true or false to skip or not the installation of lxc packages
+ SKIP_INSTALL: "false"
# Specify device serial no. when more than one device connected.
ANDROID_SERIAL: ""
# Specify timeout in seconds for wait_boot_completed.
@@ -32,6 +34,6 @@ params:
run:
steps:
- cd ./automated/android/boottime
- - ./boottime.sh -s "${ANDROID_SERIAL}" -t "${BOOT_TIMEOUT}" -o "${OPERATION}" -n "${COLLECT_NO}"
+ - ./boottime.sh -S "${SKIP_INSTALL}" -s "${ANDROID_SERIAL}" -t "${BOOT_TIMEOUT}" -o "${OPERATION}" -n "${COLLECT_NO}"
- if [ "${OPERATION}" = "ANALYZE" ]; then ../../utils/upload-to-artifactorial.sh -a "output/boottime.tgz" -u "${URL}" -t "${TOKEN}"; fi
- ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/android/boottime/device-script.sh b/automated/android/boottime/device-script.sh
index ce78a35..d2d74d7 100755
--- a/automated/android/boottime/device-script.sh
+++ b/automated/android/boottime/device-script.sh
@@ -418,7 +418,7 @@ elif [ "X${OPERATION}" = "XANALYZE" ]; then
## Check if there is any case that the surfaceflinger service
## was started several times
- if [ ${count} -eq 0 ]; then
+ if [ "${count}" -eq 0 ]; then
i=0
else
i=1
@@ -477,7 +477,7 @@ elif [ "X${OPERATION}" = "XANALYZE" ]; then
fi
if ${no_checking_problem}; then
- if [ ${count} -eq 0 ]; then
+ if [ "${count}" -eq 0 ]; then
i=0
else
i=1
diff --git a/automated/android/libc-bench/libc-bench.sh b/automated/android/libc-bench/libc-bench.sh
index 594bb28..6397330 100755
--- a/automated/android/libc-bench/libc-bench.sh
+++ b/automated/android/libc-bench/libc-bench.sh
@@ -60,6 +60,11 @@ parse_log() {
done < "${logfile}"
}
+if ! adb_shell_which "libcbench" && ! adb_shell_which "libcbench64"; then
+ report_fail "check_cmd_existence"
+ exit 1
+fi
+
for test in libcbench libcbench64; do
if ! adb_shell_which "${test}"; then
continue
diff --git a/automated/android/microbenchmarks/microbenchmarks.sh b/automated/android/microbenchmarks/microbenchmarks.sh
index 4d8339d..28be5fb 100755
--- a/automated/android/microbenchmarks/microbenchmarks.sh
+++ b/automated/android/microbenchmarks/microbenchmarks.sh
@@ -1,6 +1,5 @@
#!/bin/sh -x
# shellcheck source=/<job-id>-0/secrets
-. "${SECRETS_FILE}"
export SOURCE_PROJECT_NAME
export SOURCE_BUILD_NUMBER
export SOURCE_BUILD_URL
@@ -12,6 +11,11 @@ export SOURCE_GERRIT_CHANGE_ID
export ART_URL
set +x
+lava_test_dir="$(find /lava-* -maxdepth 0 -type d -regex '/lava-[0-9]+' 2>/dev/null | sort | tail -1)"
+if test -f "${lava_test_dir}/secrets" && grep -q "ART_TOKEN" "${lava_test_dir}/secrets"; then
+ # shellcheck disable=SC1090
+ . "${lava_test_dir}/secrets"
+fi
export ART_TOKEN
set -x
@@ -49,7 +53,8 @@ wget -q "${SNAPSHOTS_URL}"/"${BUILD_TARBALL}"
[ -z "$HOME" ] && export HOME="/"
git config --global user.email "ci_notify@linaro.org"
git config --global user.name "Linaro CI"
-tar -xvf "${BUILD_TARBALL}"
+git config --global --add color.ui auto
+tar -xf "${BUILD_TARBALL}"
export PATH=${PWD}/out/host/linux-x86/bin/:${PATH}
# FIXME removing latest adb from build since it is not working well from container
@@ -58,9 +63,13 @@ initialize_adb
adb_root
curl https://storage.googleapis.com/git-repo-downloads/repo > "${PWD}"/out/host/linux-x86/bin/repo
chmod a+x "${PWD}"/out/host/linux-x86/bin/repo
-repo init -u https://android.googlesource.com/platform/manifest
+repo init -q -u https://android.googlesource.com/platform/manifest
cp ../manifest.xml .repo/manifest.xml
-repo sync -j16 -c
+repo sync -j16 -c -q --no-tags
+which lava-test-case && lava-test-case "test-progress" --result pass
+sed -i "s| /data/local/tmp/system| /data/local/tmp/system > /dev/null|g" scripts/benchmarks/benchmarks_run_target.sh
+sed -i "s| /data/art-test| /data/art-test > /dev/null|g" scripts/benchmarks/benchmarks_run_target.sh
+sed -i "s|mode \"\$1\"|mode \"\$1\" --noverbose|g" scripts/benchmarks/benchmarks_run_target.sh
export OUT=${PWD}/out/target/product/${LUNCH_TARGET}/
./scripts/benchmarks/benchmarks_run_target.sh --skip-build true --iterations "${ITERATIONS}" --mode "${MODE}"
git clone https://git.linaro.org/people/vishal.bhoj/pbr.git; mkdir -p pbr/artifacts/
diff --git a/automated/android/microbenchmarks/microbenchmarks.yaml b/automated/android/microbenchmarks/microbenchmarks.yaml
index 39ff292..af58902 100644
--- a/automated/android/microbenchmarks/microbenchmarks.yaml
+++ b/automated/android/microbenchmarks/microbenchmarks.yaml
@@ -35,7 +35,6 @@ params:
run:
steps:
- - export SECRETS_FILE=${PWD}/../../../secrets
- cd ./automated/android/microbenchmarks
- . ./microbenchmarks.sh -s false
- tar -cJf artifacts.txz artifacts/
diff --git a/automated/android/monkey.bak/monkey.sh b/automated/android/monkey.bak/monkey.sh
new file mode 100755
index 0000000..c7707d2
--- /dev/null
+++ b/automated/android/monkey.bak/monkey.sh
@@ -0,0 +1,93 @@
+#!/bin/sh
+# shellcheck disable=SC1090
+
+TEST_DIR=$(dirname "$(realpath "$0")")
+HOST_OUTPUT="${TEST_DIR}/output"
+LOGFILE="${HOST_OUTPUT}/monkey-test-output.txt"
+BLACKLIST_FILE="${HOST_OUTPUT}/blacklist.txt"
+RESULT_FILE="${HOST_OUTPUT}/result.txt"
+export RESULT_FILE
+
+usage() {
+ echo "Usage: $0 [-s <android_serial>] [-t <boot_timeout>] [-p <monkey_params>] [-b <blacklist>] [-e <event_count>] [-t <throttle>]" 1>&2
+ echo "You can input no parameter and use the default value:" 1>&2
+ echo "black_list: setting" 1>&2
+ echo "monkey_params: --ignore-timeouts --ignore-security-exceptions --kill-process-after-error -v -v -v" 1>&2
+ echo "event_count: 500" 1>&2
+ echo "throttle: 200" 1>&2
+ exit 1
+}
+
+# Some default parameters
+ANDROID_SERIAL=""
+BOOT_TIMEOUT="300"
+BLACKLIST=""
+MONKEY_PARAMS="-s 1 --pct-touch 10 --pct-motion 20 --pct-nav 20 --pct-majornav 30 --pct-appswitch 20"
+EVENT_COUNT="1000"
+# default as it is in monkey command
+THROTTLE="0"
+
+while getopts ":s:t:b:p:e:T:h" opt; do
+ case "$opt" in
+ s) ANDROID_SERIAL="${OPTARG}" ;;
+ t) BOOT_TIMEOUT="${OPTARG}" ;;
+ b) BLACKLIST="${OPTARG}" ;;
+ p) MONKEY_PARAMS="${OPTARG}" ;;
+ e) EVENT_COUNT="${OPTARG}" ;;
+ T) THROTTLE="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+. "${TEST_DIR}/../../lib/sh-test-lib"
+. "${TEST_DIR}/../../lib/android-test-lib"
+
+initialize_adb
+wait_boot_completed "${BOOT_TIMEOUT}"
+create_out_dir "${HOST_OUTPUT}"
+
+if [ -n "$BLACKLIST" ]; then
+ # Read blacklist and write to blacklist.txt
+ arr=$(echo "$BLACKLIST" | tr "," " ")
+ info_msg "--- blacklist ---"
+ for s in $arr
+ do
+ echo "$s"
+ echo "$s" >> "$BLACKLIST_FILE"
+ done
+
+ adb_push "$BLACKLIST_FILE" "/data/local/tmp/"
+ BLACKLIST_OPT="--pkg-blacklist-file /data/local/tmp/blacklist.txt"
+else
+ BLACKLIST_OPT=""
+fi
+
+if [ -n "$THROTTLE" ]; then
+ THROTTLE_OPT="--throttle ${THROTTLE}"
+else
+ THROTTLE_OPT=""
+fi
+
+info_msg "device-${ANDROID_SERIAL}: About to run monkey..."
+adb shell monkey "${MONKEY_PARAMS}" ${BLACKLIST_OPT} ${THROTTLE_OPT} "${EVENT_COUNT}" 2>&1 \
+ | tee "${LOGFILE}"
+
+# Parse test log.
+grep "Events injected: ${EVENT_COUNT}" "${LOGFILE}"
+check_return "monkey-test-run"
+
+if grep -q "Network stats: elapsed time=" "${LOGFILE}"; then
+ grep "Network stats: elapsed time=" "${LOGFILE}" \
+ | awk -F'=' '{print $2}' \
+ | awk '{print $1}' \
+ | sed 's/ms//g' \
+ | awk '{printf("monkey-network-stats pass %s ms\n", $1)}' \
+ | tee -a "${RESULT_FILE}"
+else
+ report_fail "monkey-network-stats"
+fi
+
+if ! grep "Events injected: ${EVENT_COUNT}" "${LOGFILE}"; then
+ ## output the logcat information for debug when failed to run inject all the events
+ adb logcat -d -b all
+fi
diff --git a/automated/android/monkey.bak/monkey.yaml b/automated/android/monkey.bak/monkey.yaml
new file mode 100755
index 0000000..42bd0c1
--- /dev/null
+++ b/automated/android/monkey.bak/monkey.yaml
@@ -0,0 +1,42 @@
+metadata:
+ name: monkey
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Monkey performs stress testing for stability using monkey
+ command which generates pesudo-random streams of user events
+ such as clicks, touches, or gestures as well as some system
+ level events."
+ maintainer:
+ - erin.liu@linaro.org
+ - chase.qi@linaro.org
+ os:
+ - android
+ devices:
+ - hi6220-hikey
+ - apq8016-sbc
+ - juno
+ scope:
+ - functional
+ - performance
+ environment:
+ - lava-test-shell
+ - local-test-runner
+
+params:
+ # Specify device serial no. when more than one device connected.
+ ANDROID_SERIAL: ""
+ # Specify timeout in seconds for wait_boot_completed.
+ BOOT_TIMEOUT: "300"
+ # Blacklist packages known to crash.
+ BLACKLIST: ""
+ # Basic monkey comand parameters.
+ MONKEY_PARAMS: "-s 1 --pct-touch 10 --pct-motion 20 --pct-nav 20 --pct-majornav 30 --pct-appswitch 20"
+ # The number of monkey event.
+ EVENT_COUNT: "1000"
+ # The interval of monkey event.
+ THROTTLE: "0"
+
+run:
+ steps:
+ - cd ./automated/android/monkey
+ - ./monkey.sh -s "${ANDROID_SERIAL}" -t "${BOOT_TIMEOUT}" -b "${BLACKLIST}" -p "${MONKEY_PARAMS}" -e "${EVENT_COUNT}" -T "${THROTTLE}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/android/monkey/monkey.sh b/automated/android/monkey/monkey.sh
index 80130cd..b865f8f 100755
--- a/automated/android/monkey/monkey.sh
+++ b/automated/android/monkey/monkey.sh
@@ -21,15 +21,16 @@ usage() {
# Some default parameters
ANDROID_SERIAL=""
BOOT_TIMEOUT="300"
-BLACKLIST="com.android.development_settings com.android.music com.android.deskclock"
+BLACKLIST=""
MONKEY_PARAMS="-s 1 --pct-touch 10 --pct-motion 20 --pct-nav 20 --pct-majornav 30 --pct-appswitch 20"
EVENT_COUNT="1000"
-THROTTLE="200"
+# default as it is in monkey command
+THROTTLE="0"
while getopts ":s:t:b:p:e:T:h" opt; do
case "$opt" in
- s) ANDROID_SERIAL="${OPTARG}" ;;
- t) BOOT_TIMEOUT="${OPTARG}" ;;
+ s) ANDROID_SERIAL="${OPTARG}" ;;
+ t) BOOT_TIMEOUT="${OPTARG}" ;;
b) BLACKLIST="${OPTARG}" ;;
p) MONKEY_PARAMS="${OPTARG}" ;;
e) EVENT_COUNT="${OPTARG}" ;;
@@ -45,20 +46,30 @@ initialize_adb
wait_boot_completed "${BOOT_TIMEOUT}"
create_out_dir "${HOST_OUTPUT}"
-# Read blacklist and write to blacklist.txt
-arr=$(echo "$BLACKLIST" | tr "," " ")
-info_msg "--- blacklist ---"
-for s in $arr
-do
- echo "$s"
- echo "$s" >> "$BLACKLIST_FILE"
-done
+if [ -n "$BLACKLIST" ]; then
+ # Read blacklist and write to blacklist.txt
+ arr=$(echo "$BLACKLIST" | tr "," " ")
+ info_msg "--- blacklist ---"
+ for s in $arr
+ do
+ echo "$s"
+ echo "$s" >> "$BLACKLIST_FILE"
+ done
+
+ adb_push "$BLACKLIST_FILE" "/data/local/tmp/"
+ BLACKLIST_OPT="--pkg-blacklist-file /data/local/tmp/blacklist.txt"
+else
+ BLACKLIST_OPT=""
+fi
-adb_push "$BLACKLIST_FILE" "/data/local/tmp/"
-BLACKLIST="/data/local/tmp/blacklist.txt"
+if [ -n "$THROTTLE" ]; then
+ THROTTLE_OPT="--throttle ${THROTTLE}"
+else
+ THROTTLE_OPT=""
+fi
info_msg "device-${ANDROID_SERIAL}: About to run monkey..."
-adb shell monkey "${MONKEY_PARAMS}" --pkg-blacklist-file "${BLACKLIST}" --throttle "${THROTTLE}" "${EVENT_COUNT}" 2>&1 \
+adb shell monkey "${MONKEY_PARAMS}" ${BLACKLIST_OPT} ${THROTTLE_OPT} "${EVENT_COUNT}" 2>&1 \
| tee "${LOGFILE}"
# Parse test log.
diff --git a/automated/android/monkey/monkey.yaml b/automated/android/monkey/monkey.yaml
index d5aab2c..42bd0c1 100755
--- a/automated/android/monkey/monkey.yaml
+++ b/automated/android/monkey/monkey.yaml
@@ -27,13 +27,13 @@ params:
# Specify timeout in seconds for wait_boot_completed.
BOOT_TIMEOUT: "300"
# Blacklist packages known to crash.
- BLACKLIST: "com.android.development_settings com.android.music com.android.deskclock"
+ BLACKLIST: ""
# Basic monkey comand parameters.
MONKEY_PARAMS: "-s 1 --pct-touch 10 --pct-motion 20 --pct-nav 20 --pct-majornav 30 --pct-appswitch 20"
# The number of monkey event.
EVENT_COUNT: "1000"
# The interval of monkey event.
- THROTTLE: "200"
+ THROTTLE: "0"
run:
steps:
diff --git a/automated/android/stringbench/stringbench.sh b/automated/android/stringbench/stringbench.sh
index 6d4f821..4512884 100755
--- a/automated/android/stringbench/stringbench.sh
+++ b/automated/android/stringbench/stringbench.sh
@@ -45,6 +45,11 @@ parser() {
done < "${logfile}"
}
+if ! adb_shell_which "stringbench" && ! adb_shell_which "stringbench64"; then
+ report_fail "check_cmd_existence"
+ exit 1
+fi
+
for test in stringbench stringbench64; do
info_msg "device-${ANDROID_SERIAL}: About to run ${test}"
if ! adb_shell_which "${test}"; then
diff --git a/automated/android/tjbench/nightshot_iso_100.ppm b/automated/android/tjbench/nightshot_iso_100.ppm
new file mode 100644
index 0000000..97b7f90
--- /dev/null
+++ b/automated/android/tjbench/nightshot_iso_100.ppm
Binary files differ
diff --git a/automated/android/tjbench/tjbench.sh b/automated/android/tjbench/tjbench.sh
index ba56b4d..255291c 100755
--- a/automated/android/tjbench/tjbench.sh
+++ b/automated/android/tjbench/tjbench.sh
@@ -42,7 +42,7 @@ parse_log() {
'{
gsub(":", "", $3);
printf("%s_%s_comp_perf pass %s Mpixels/sec\n", prefix, $3, $7);
- printf("%s_%s_comp_ratio pass %s %\n", prefix, $3, $8);
+ printf("%s_%s_comp_ratio pass %s percent\n", prefix, $3, $8);
printf("%s_%s_decomp_perf pass %s Mpixels/sec\n", prefix, $3, $9);
}' \
| tee -a "${RESULT_FILE}"
diff --git a/automated/android/workload-automation/aep-energy-config.sh b/automated/android/workload-automation/aep-energy-config.sh
new file mode 100755
index 0000000..79ce07b
--- /dev/null
+++ b/automated/android/workload-automation/aep-energy-config.sh
@@ -0,0 +1,44 @@
+#!/bin/sh -ex
+# shellcheck disable=SC1090
+
+TEST_DIR=$(dirname "$(realpath "$0")")
+OUTPUT="${TEST_DIR}/output"
+SKIP_INSTALL="false"
+AEP_CONFIG_REPOSITORY="https://git.linaro.org/power/energy-probe-ext.git"
+AEP_CONFIG_REF="master"
+AEP_CONFIG_TARGET_PATH="/root/energy-probe-ext"
+
+usage() {
+ echo "Usage: $0 [-t <aep_config_repository_ref>] [-r <aep_config_repository>] [-p <aep_config_target_path>]" 1>&2
+ exit 1
+}
+
+while getopts ":t:r:p:" opt; do
+ case "${opt}" in
+ t) AEP_CONFIG_REF="${OPTARG}" ;;
+ r) AEP_CONFIG_REPOSITORY="${OPTARG}" ;;
+ p) AEP_CONFIG_TARGET_PATH="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+. "${TEST_DIR}/../../lib/sh-test-lib"
+
+! check_root && error_msg "Please run this test as root."
+cd "${TEST_DIR}"
+create_out_dir "${OUTPUT}"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
+
+if [ "${SKIP_INSTALL}" = "true" ] || [ "${SKIP_INSTALL}" = "True" ]; then
+ info_msg "Dependency installation skipped"
+else
+ PKGS="git"
+ install_deps "${PKGS}"
+fi
+create_out_dir "${AEP_CONFIG_TARGET_PATH}"
+git clone "${AEP_CONFIG_REPOSITORY}" energy-probe-ext
+cd energy-probe-ext
+git checkout "${AEP_CONFIG_REF}"
+cp -r ./* "${AEP_CONFIG_TARGET_PATH}"
+report_pass "AEP config installed"
diff --git a/automated/android/workload-automation/aep-install.sh b/automated/android/workload-automation/aep-install.sh
new file mode 100755
index 0000000..5cb4104
--- /dev/null
+++ b/automated/android/workload-automation/aep-install.sh
@@ -0,0 +1,44 @@
+#!/bin/sh -ex
+# shellcheck disable=SC1090
+
+TEST_DIR=$(dirname "$(realpath "$0")")
+OUTPUT="${TEST_DIR}/output"
+SKIP_INSTALL="false"
+AEP_REPOSITORY="https://git.linaro.org/tools/arm-probe.git"
+AEP_REF="master"
+
+usage() {
+ echo "Usage: $0 [-t <aep_repository_ref>] [-r <aep_repository>]" 1>&2
+ exit 1
+}
+
+while getopts ":t:r:" opt; do
+ case "${opt}" in
+ t) AEP_REF="${OPTARG}" ;;
+ r) AEP_REPOSITORY="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+. "${TEST_DIR}/../../lib/sh-test-lib"
+
+! check_root && error_msg "Please run this test as root."
+cd "${TEST_DIR}"
+create_out_dir "${OUTPUT}"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
+
+if [ "${SKIP_INSTALL}" = "true" ] || [ "${SKIP_INSTALL}" = "True" ]; then
+ info_msg "Dependency installation skipped"
+else
+ PKGS="git autoconf libtool cmake zlib1g-dev libssl-dev python"
+ install_deps "${PKGS}"
+fi
+git clone "${AEP_REPOSITORY}" arm-probe
+cd arm-probe
+git checkout "${AEP_REF}"
+./autogen.sh
+./configure --prefix=/usr
+make
+make install
+report_pass "AEP installed"
diff --git a/automated/android/workload-automation/aep-install.yaml b/automated/android/workload-automation/aep-install.yaml
new file mode 100644
index 0000000..a8ed990
--- /dev/null
+++ b/automated/android/workload-automation/aep-install.yaml
@@ -0,0 +1,30 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: arm-probe-install
+ description: "Install arm-probe tool on devices that have ARM
+ energy probes connected to them.
+ It also installs configuration files for the probe"
+ maintainer:
+ - lisa.nguyen@linaro.org
+ - milosz.wasilewski@linaro.org
+ os:
+ - ubuntu
+ devices:
+ - hi6220-hikey
+ - hi960-hikey
+ - juno
+
+params:
+ AEP_REPOSITORY: https://git.linaro.org/tools/arm-probe.git
+ AEP_REF: master
+ AEP_CONFIG_REPOSITORY: https://git.linaro.org/power/energy-probe-ext.git
+ AEP_CONFIG_REF: master
+ # path should be absolute
+ AEP_CONFIG_TARGET_PATH: /root/energy-probe-ext
+
+run:
+ steps:
+ - cd ./automated/android/workload-automation
+ - ./aep-install.sh -r "${AEP_REPOSITORY}" -t "${AEP_REF}"
+ - ./aep-energy-config.sh -r "${AEP_CONFIG_REPOSITORY}" -t "${AEP_CONFIG_REF}" -p "${AEP_CONFIG_TARGET_PATH}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/android/workload-automation/workload-automation.sh b/automated/android/workload-automation/workload-automation.sh
index 327b4db..eac7ad0 100755
--- a/automated/android/workload-automation/workload-automation.sh
+++ b/automated/android/workload-automation/workload-automation.sh
@@ -3,26 +3,27 @@
TEST_DIR=$(dirname "$(realpath "$0")")
OUTPUT="${TEST_DIR}/output"
-RESULT_FILE="${OUTPUT}/result.txt"
-export RESULT_FILE
SKIP_INSTALL="false"
ANDROID_SERIAL=""
BOOT_TIMEOUT="300"
-
+PROBE=""
WA_TAG="master"
+WA_GIT_REPO="https://github.com/ARM-software/workload-automation"
WA_TEMPLATES_REPO="https://git.linaro.org/qa/wa2-lava.git"
TEMPLATES_BRANCH="wa-templates"
CONFIG="config/generic-android.py"
AGENDA="agenda/generic-linpack.yaml"
BUILD_TOOLS_URL="http://testdata.validation.linaro.org/apks/workload-automation/build-tools.tar.gz"
WA_HOME_URL="http://testdata.validation.linaro.org/apks/workload-automation/workload_automation_home.tar.gz"
+DEVLIB_REPO="https://github.com/ARM-software/devlib.git"
+DEVLIB_TAG="master"
usage() {
- echo "Usage: $0 [-s <true|false>] [-S <android_serial>] [-t <boot_timeout>] [-T <wa_tag>] [-r <wa_templates_repo>] [-g <templates_branch>] [-c <config>] [-a <agenda>] [-b <build_tools_url>] [-w <wa_home_url>]" 1>&2
+ echo "Usage: $0 [-s <true|false>] [-S <android_serial>] [-t <boot_timeout>] [-T <wa_tag>] [-r <wa_templates_repo>] [-g <templates_branch>] [-c <config>] [-a <agenda>] [-b <build_tools_url>] [-w <wa_home_url>] [-p <aep_path>] [-o <output_dir>] [-R <wa_git_repository>] [-d <devlib_repo>] [-D <devlib_tag>]" 1>&2
exit 1
}
-while getopts ":s:S:t:T:r:g:c:a:b:w:" opt; do
+while getopts ":s:S:t:T:r:g:c:a:b:w:p:o:R:D:d:" opt; do
case "${opt}" in
s) SKIP_INSTALL="${OPTARG}" ;;
S) ANDROID_SERIAL="${OPTARG}" ;;
@@ -34,6 +35,11 @@ while getopts ":s:S:t:T:r:g:c:a:b:w:" opt; do
a) AGENDA="${OPTARG}" ;;
b) BUILD_TOOLS_URL="${OPTARG}" ;;
w) WA_HOME_URL="${OPTARG}" ;;
+ R) WA_GIT_REPO="${OPTARG}" ;;
+ p) PROBE="${OPTARG}" ;;
+ o) NEW_OUTPUT="${OPTARG}" ;;
+ D) DEVLIB_TAG="${OPTARG}" ;;
+ d) DEVLIB_REPO="${OPTARG}" ;;
*) usage ;;
esac
done
@@ -42,26 +48,42 @@ done
. "${TEST_DIR}/../../lib/android-test-lib"
cd "${TEST_DIR}"
+if [ ! -z "${NEW_OUTPUT}" ]; then
+ OUTPUT="${NEW_OUTPUT}"
+fi
create_out_dir "${OUTPUT}"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
if [ "${SKIP_INSTALL}" = "true" ] || [ "${SKIP_INSTALL}" = "True" ]; then
info_msg "WA installation skipped"
else
- PKGS="git wget zip tar xz-utils python python-yaml python-lxml python-setuptools python-numpy python-colorama python-pip sqlite3 libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386 aapt android-tools-adb time sysstat python-jinja2 curl"
+ PKGS="git wget zip tar xz-utils python python-yaml python-lxml python-setuptools python-numpy python-colorama python-pip sqlite3 lib32stdc++6 lib32z1 lib32gcc1 lib32ncurses5 aapt time sysstat python-jinja2 curl"
! check_root && error_msg "Please run this test as root."
dpkg --add-architecture i386
+ apt-get update -q
install_deps "${PKGS}"
- pip install --upgrade pip && hash -r
- pip install --upgrade setuptools
- pip install pexpect pyserial pyyaml docutils python-dateutil
+ # only install adb if it's not already available
+ which adb || install_deps adb
+ pip install --upgrade --quiet pip && hash -r
+ pip install --upgrade --quiet setuptools
+ pip install --quiet pexpect pyserial pyyaml docutils python-dateutil
+ info_msg "Installing devlib..."
+ rm -rf devlib
+ git clone "${DEVLIB_REPO}" devlib
+ (
+ cd devlib
+ git checkout "${DEVLIB_TAG}"
+ )
+ pip2 install --quiet ./devlib
info_msg "Installing workload-automation..."
rm -rf workload-automation
- git clone https://github.com/ARM-software/workload-automation
+ git clone "${WA_GIT_REPO}" workload-automation
(
cd workload-automation
- git checkout -b test-branch "${WA_TAG}"
+ git checkout "${WA_TAG}"
)
- pip2 install ./workload-automation
+ pip2 install --quiet ./workload-automation
export PATH=$PATH:/usr/local/bin
which wa
@@ -77,9 +99,11 @@ else
(
cd /root/
# Copy workload_automation_home.tar.gz to /root for local run.
- test -f workload_automation_home.tar.gz || wget -S --progress=dot:giga "${WA_HOME_URL}"
+ test -f workload_automation_home.tar.gz || wget -S --progress=dot:giga "${WA_HOME_URL}" -O workload_automation_home.tar.gz
tar -xf workload_automation_home.tar.gz
)
+ wa --version
+ wa list instruments
fi
initialize_adb
@@ -102,6 +126,29 @@ if ! awk '/result_processors = [[]/,/[]]/' ./config.py | grep -q 'csv'; then
sed -i "s/result_processors = [[]/result_processors = [\n 'csv',/" ./config.py
fi
+if [ -z "${PROBE}" ]; then
+ # LAVA supports one probe per device for now.
+ PROBE=$(find /dev/serial/by-id/ -name "usb-NXP_SEMICOND_ARM_Energy_Probe*" | head -n 1)
+fi
+
+# If AEP exists, find the correct AEP config file and update the AEP config path in the agenda.
+if [ -n "${PROBE}" ]; then
+(
+ cd "${WA_EXTENSION_PATHS}"
+ # find config file with matching probe ID
+ CONFIG_FILE=$(basename "$(grep -rl "${PROBE}" .)")
+ cd -
+ # update AEP config path on agenda
+ sed -i "s|\$WA_EXTENSION_PATHS/*.*|${WA_EXTENSION_PATHS}/${CONFIG_FILE}\"|" agenda.yaml
+ sed -i "s|\$WA_PLUGIN_PATHS/*.*|${WA_EXTENSION_PATHS}/${CONFIG_FILE}\"|" agenda.yaml
+ # update AEP config path on config.yaml
+ if [ -f /root/.workload_automation/config.yaml ]; then
+ sed -i "s|\$WA_EXTENSION_PATHS/*.*|${WA_EXTENSION_PATHS}/${CONFIG_FILE}\"|" /root/.workload_automation/config.yaml
+ sed -i "s|\$WA_PLUGIN_PATHS/*.*|${WA_EXTENSION_PATHS}/${CONFIG_FILE}\"|" /root/.workload_automation/config.yaml
+ fi
+)
+fi
+
info_msg "device-${ANDROID_SERIAL}: About to run WA with ${AGENDA}..."
wa run ./agenda.yaml -v -f -d "${OUTPUT}/wa" -c ./config.py || report_fail "wa-test-run"
diff --git a/automated/android/workload-automation/workload-automation.yaml b/automated/android/workload-automation/workload-automation.yaml
index ccecb07..f706299 100644
--- a/automated/android/workload-automation/workload-automation.yaml
+++ b/automated/android/workload-automation/workload-automation.yaml
@@ -23,12 +23,22 @@ params:
ANDROID_SERIAL: ""
# Params for WA test run.
WA_TAG: "master"
+ WA_GIT_REPO: "https://github.com/ARM-software/workload-automation"
+ # Install devlib, which is WA depenency
+ DEVLIB_REPO: "https://github.com/ARM-software/devlib.git"
+ DEVLIB_TAG: "master"
BUILD_TOOLS_URL: "http://testdata.validation.linaro.org/apks/workload-automation/build-tools.tar.gz"
WA_HOME_URL: "http://testdata.validation.linaro.org/apks/workload-automation/workload_automation_home.tar.gz"
WA_TEMPLATES_REPO: "https://git.linaro.org/qa/wa2-lava.git"
TEMPLATES_BRANCH: "wa-templates"
CONFIG: "config/generic-android.py"
AGENDA: "agenda/android-linpack.yaml"
+ # allow extra extenstions for WA
+ WA_EXTENSION_PATHS: ""
+ PROBE: ""
+ # directory where the WA results are stored
+ # defaults to {TEST_DIR}/output
+ OUTPUT: ""
# Specify url and token for publishing artifacts.
# For safety reasons, please set 'ARTIFACTORIAL_TOKEN' variable in job definition with
# 'secrets' dictionary, and set job visibility to personal or group.
@@ -38,11 +48,16 @@ params:
run:
steps:
+ - export WA_EXTENSION_PATHS=$WA_EXTENSION_PATHS
+ - export WA_PLUGIN_PATHS=$WA_EXTENSION_PATHS
- cd ./automated/android/workload-automation
+ - echo ${OUTPUT}
+ - if [ -z "${OUTPUT}" ]; then OUTPUT="./output"; fi
+ - echo ${OUTPUT}
# Test run.
- - ./workload-automation.sh -s "${SKIP_INSTALL}" -t "${BOOT_TIMEOUT}" -S "${ANDROID_SERIAL}" -T "${WA_TAG}" -r "${WA_TEMPLATES_REPO}" -g "${TEMPLATES_BRANCH}" -c "${CONFIG}" -a "${AGENDA}" -b "${BUILD_TOOLS_URL}" -w "${WA_HOME_URL}"
+ - ./workload-automation.sh -s "${SKIP_INSTALL}" -t "${BOOT_TIMEOUT}" -S "${ANDROID_SERIAL}" -T "${WA_TAG}" -r "${WA_TEMPLATES_REPO}" -g "${TEMPLATES_BRANCH}" -c "${CONFIG}" -a "${AGENDA}" -b "${BUILD_TOOLS_URL}" -w "${WA_HOME_URL}" -p "${PROBE}" -R "${WA_GIT_REPO}" -d "${DEVLIB_REPO}" -D "${DEVLIB_TAG}" -o "${OUTPUT}"
# Upload test output to artifactorial.
- - tar caf "wa-output.tar.xz" "./output"
+ - tar caf "wa-output.tar.xz" "${OUTPUT}"
- ../../utils/upload-to-artifactorial.sh -a "wa-output.tar.xz" -u "${ARTIFACTORIAL_URL}" -t "${ARTIFACTORIAL_TOKEN}"
# Send test result to LAVA.
- - ../../utils/send-to-lava.sh "./output/result.txt"
+ - ../../utils/send-to-lava.sh "${OUTPUT}/result.txt"
diff --git a/automated/bin/arm64/skipgen b/automated/bin/arm64/skipgen
new file mode 100755
index 0000000..6b5e300
--- /dev/null
+++ b/automated/bin/arm64/skipgen
Binary files differ
diff --git a/automated/bin/armeabi/skipgen b/automated/bin/armeabi/skipgen
new file mode 100755
index 0000000..1e94bdd
--- /dev/null
+++ b/automated/bin/armeabi/skipgen
Binary files differ
diff --git a/automated/bin/fetch_skipgen.sh b/automated/bin/fetch_skipgen.sh
new file mode 100755
index 0000000..3a13b38
--- /dev/null
+++ b/automated/bin/fetch_skipgen.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+# Retrieve a given version of skipgen from
+# https://github.com/Linaro/skipgen/releases and copy to the
+# arm64/armeabi/x86_64 directories.
+
+if [ -z "$1" ]; then
+ echo "Usage: ${0} <skipgen_version_number>"
+ echo "For example:"
+ echo " ${0} 0.2.1"
+ echo ""
+ echo "Be sure to not include the leaving 'v'."
+ echo ""
+ exit 1
+fi
+
+SKIPGEN_VERSION=$1
+ROOT_PATH=$(dirname "$0")
+ARCHS="arm64 armeabi x86_64"
+
+for arch in ${ARCHS}; do
+
+ # Translate test-definition arch names to skipgen arch names
+ skipgen_arch=""
+ case ${arch} in
+ arm64)
+ skipgen_arch="arm64"
+ ;;
+ armeabi)
+ skipgen_arch="armv7"
+ ;;
+ x86_64)
+ skipgen_arch="amd64"
+ ;;
+ *)
+ echo "Unknown architecture ${arch}"
+ exit 1
+ ;;
+ esac
+
+ # Fetch tar file, save in /tmp
+ wget -O "/tmp/skipgen_${SKIPGEN_VERSION}_linux_${skipgen_arch}.tar.gz" \
+ "https://github.com/Linaro/skipgen/releases/download/v${SKIPGEN_VERSION}/skipgen_${SKIPGEN_VERSION}_linux_${skipgen_arch}.tar.gz"
+ # Extract skipgen binary from tar, save in the local arch folder
+ tar xvzf "/tmp/skipgen_${SKIPGEN_VERSION}_linux_${skipgen_arch}.tar.gz" -C "${ROOT_PATH}/${arch}/" skipgen
+ # Remove tmp file
+ rm -f "/tmp/skipgen_${SKIPGEN_VERSION}_linux_${skipgen_arch}.tar.gz"
+
+done
diff --git a/automated/bin/x86_64/skipgen b/automated/bin/x86_64/skipgen
new file mode 100755
index 0000000..1e4cb7c
--- /dev/null
+++ b/automated/bin/x86_64/skipgen
Binary files differ
diff --git a/automated/lib/android-test-lib b/automated/lib/android-test-lib
index 087256c..bad964f 100755
--- a/automated/lib/android-test-lib
+++ b/automated/lib/android-test-lib
@@ -23,8 +23,13 @@ adb_debug_info() {
else
info_msg "usbutils not installed, unable to get device information with 'lsusb'."
info_msg "Listing 'find /dev/bus/usb' output directly..."
- find /dev/bus/usb
+ # avoid returning 1 when 'find' doesn't work
+ find /dev/bus/usb || true
fi
+ info_msg "===== list fastboot devices start ========="
+ fastboot devices
+ info_msg "===== list fastboot devices end ========="
+ info_msg "===== default ANDROID_SERIAL=${ANDROID_SERIAL} ========="
}
initialize_adb() {
@@ -32,7 +37,7 @@ initialize_adb() {
set -x
adb_debug_info
adb start-server
- timeout 600 adb wait-for-device || error_msg "Device NOT found!"
+ timeout 600 adb wait-for-device || error_fatal "Device NOT found!"
adb devices
if [ -z "${ANDROID_SERIAL}" ]; then
@@ -59,7 +64,7 @@ initialize_adb() {
adb_root() {
if [ "$(adb shell whoami)" = "root" ]; then
- info_msg "DUT already has adbd running as root"
+ echo "DUT already has adbd running as root"
else
adb root
timeout 600 adb wait-for-device || error_msg "Device NOT found!"
@@ -226,3 +231,28 @@ parse_common_args() {
esac
done
}
+
+# Try to find the WIFI AP info and connect to it
+# depends on WIFI AP information specified by lava job like following:
+# secrets:
+# AP_SSID: "${AP_SSID}"
+# AP_KEY: "${AP_KEY}"
+adb_join_wifi() {
+ AP_SSID=$1
+ AP_KEY=$2
+ if [ -z "${AP_SSID}" ] || [ -z "${AP_KEY}" ]; then
+ # Try to find the WIFI AP information specified by the job definition if not specified via command line
+ lava_test_dir="$(find /lava-* -maxdepth 0 -type d -regex '/lava-[0-9]+' 2>/dev/null | sort | tail -1)"
+ if test -f "${lava_test_dir}/secrets"; then
+ # shellcheck disable=SC1090
+ . "${lava_test_dir}/secrets"
+ fi
+ fi
+
+ # Try to connect to wifi if found the WIFI AP information
+ if [ ! -z "${AP_SSID}" ] && [ ! -z "${AP_KEY}" ]; then
+ wget http://testdata.validation.linaro.org/apks/wifi/wifi.apk
+ adb install wifi.apk
+ adb shell am start -n com.steinwurf.adbjoinwifi/.MainActivity -e ssid "${AP_SSID}" -e password_type WPA -e password "${AP_KEY}"
+ fi
+}
diff --git a/automated/lib/py_test_lib.pyc b/automated/lib/py_test_lib.pyc
new file mode 100644
index 0000000..c473eff
--- /dev/null
+++ b/automated/lib/py_test_lib.pyc
Binary files differ
diff --git a/automated/lib/sh-test-lib b/automated/lib/sh-test-lib
index ed0d96e..1e02795 100755
--- a/automated/lib/sh-test-lib
+++ b/automated/lib/sh-test-lib
@@ -3,6 +3,17 @@
LANG=C
export LANG
+error_fatal() {
+ msg="$1"
+ [ -z "${msg}" ] && msg="Unknown error"
+ if which lava-test-raise;then
+ lava-test-raise "${msg}"
+ else
+ printf "FATAL ERROR: %s\n" "${msg}" >&2
+ fi
+ exit 1
+}
+
error_msg() {
msg="$1"
[ -z "${msg}" ] && msg="Unknown error"
@@ -146,7 +157,7 @@ detect_abi() {
case "${abi}" in
armv7|armv7l|armv7el|armv7lh) abi="armeabi" ;;
arm64|armv8|arm64-v8a|aarch64) abi="arm64" ;;
- x86_64) abi="x86" ;;
+ x86_64) abi="x86_64" ;;
*) error_msg "Unsupported architecture: ${abi}" ;;
esac
}
@@ -193,8 +204,13 @@ install_deps() {
dist_name
case "${dist}" in
debian|ubuntu)
- # Use the default answers for all questions.
- DEBIAN_FRONTEND=noninteractive apt-get update -q -y
+ last_apt_time=/tmp/apt-get-updated.last
+ apt_cache_time=21600 # 6 hours
+ # Only run apt-get update if it hasn't been run in $apt_cache_time seconds
+ if [ ! -e ${last_apt_time} ] || \
+ [ "$(stat --format=%Y ${last_apt_time})" -lt $(( $(date +%s) - apt_cache_time )) ]; then
+ DEBIAN_FRONTEND=noninteractive apt-get update -q -y && touch ${last_apt_time}
+ fi
# shellcheck disable=SC2086
DEBIAN_FRONTEND=noninteractive apt-get install -q -y ${pkgs}
;;
@@ -252,7 +268,7 @@ validate_check_sum() {
convert_to_mb() {
[ "$#" -ne 2 ] && error_msg "Usage: convert_to_mb value units"
- if ! echo "$1" | egrep -q "^[0-9.]+$"; then
+ if ! echo "$1" | grep -E -q "^[0-9.]+$"; then
error_msg "The first argument isn't a number"
fi
value="$1"
@@ -340,3 +356,28 @@ create_out_dir() {
mkdir -p "${OUTPUT}"
[ -d "${OUTPUT}" ] || error_msg "Could not create output directory ${OUTPUT}"
}
+
+generate_skipfile() {
+ # Generate a skipfile and set the SKIPFILE variable based on SKIPFILE_YAML,
+ # BOARD, BRANCH, and ENVIRONMENT.
+ #
+ # In:
+ # SKIPFILE_YAML: (required) skipgen/yaml formatted skipfile
+ # SKIPFILE_PATH: (required) destination file for generated skipfile
+ # BOARD: (optional) board name to pass to skipgen
+ # BRANCH: (optional) branch name to pass to skipgen
+ # ENVIRONMENT: (optional) environment name to pass to skipgen
+ #
+ info_msg "Generating a skipfile based on ${SKIPFILE_YAML}"
+ detect_abi
+ SKIPGEN_ARGS=""
+ test -n "${BOARD}" && SKIPGEN_ARGS="${SKIPGEN_ARGS} --board ${BOARD}"
+ test -n "${BRANCH}" && SKIPGEN_ARGS="${SKIPGEN_ARGS} --branch ${BRANCH}"
+ test -n "${ENVIRONMENT}" && SKIPGEN_ARGS="${SKIPGEN_ARGS} --environment ${ENVIRONMENT}"
+ # shellcheck disable=SC2086
+ ../../bin/${abi}/skipgen ${SKIPGEN_ARGS} "${SKIPFILE_YAML}" > "${SKIPFILE_PATH}"
+ test $? -eq 0 || error_msg "skipgen failed to generate a skipfile"
+ info_msg "Using the following generated skipfile contents (until EOF):"
+ cat "${SKIPFILE_PATH}"
+ info_msg "EOF"
+}
diff --git a/automated/linux/aep-pre-post/lisa-postprocessing.yaml b/automated/linux/aep-pre-post/lisa-postprocessing.yaml
new file mode 100644
index 0000000..8dbc108
--- /dev/null
+++ b/automated/linux/aep-pre-post/lisa-postprocessing.yaml
@@ -0,0 +1,29 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: lisa-postprocessing
+ description: "Post-processing of results generated by
+ Workload Automation v3."
+ maintainer:
+ - lisa.nguyen@linaro.org
+ - milosz.wasilewski@linaro.org
+ os:
+ - ubuntu
+ devices:
+ - hi6220-hikey
+ - hi960-hikey
+ - juno
+
+params:
+ LISA_REPOSITORY: https://github.com/ARM-software/lisa
+ LISA_REF: master
+ # LISA_SCRIPT is a path relative to LISA top directory
+ LISA_SCRIPT: ipynb/wltests/sched-evaluation-full.py
+ SKIP_INSTALL: false
+
+run:
+ steps:
+ - cd ./automated/linux/aep-pre-post
+ - export LISA_SHELL_DISABLE_COLORS=true
+ - export TERM=xterm
+ - ./lisa.sh -r "${LISA_REPOSITORY}" -t "${LISA_REF}" -s "${LISA_SCRIPT}" -S "${SKIP_INSTALL}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/linux/aep-pre-post/lisa.sh b/automated/linux/aep-pre-post/lisa.sh
new file mode 100755
index 0000000..a592ec1
--- /dev/null
+++ b/automated/linux/aep-pre-post/lisa.sh
@@ -0,0 +1,57 @@
+#!/bin/bash -ex
+# shellcheck disable=SC1090
+
+TEST_DIR=$(dirname "$(realpath "$0")")
+OUTPUT="${TEST_DIR}/output"
+SKIP_INSTALL="false"
+LISA_REPOSITORY="https://github.com/ARM-software/lisa"
+LISA_REF="master"
+LISA_SCRIPT="ipynb/wltests/sched-evaluation-full.py"
+
+usage() {
+ echo "Usage: $0 [-t <lisa_repository_ref>] [-r <lisa_repository>] [-s <lisa_script>] [-S <skip_install>]" 1>&2
+ exit 1
+}
+
+while getopts ":t:r:s:S:" opt; do
+ case "${opt}" in
+ t) LISA_REF="${OPTARG}" ;;
+ r) LISA_REPOSITORY="${OPTARG}" ;;
+ s) LISA_SCRIPT="${OPTARG}" ;;
+ S) SKIP_INSTALL="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+. "${TEST_DIR}/../../lib/sh-test-lib"
+
+! check_root && error_msg "Please run this test as root."
+cd "${TEST_DIR}"
+create_out_dir "${OUTPUT}"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
+
+if [ "${SKIP_INSTALL}" = "true" ] || [ "${SKIP_INSTALL}" = "True" ]; then
+ info_msg "Dependency installation skipped"
+else
+ PKGS="build-essential autoconf automake libtool pkg-config trace-cmd sshpass kernelshark nmap net-tools tree libfreetype6-dev libpng12-dev python-pip python-dev python-tk"
+ install_deps "${PKGS}"
+ pip install --upgrade --quiet pip && hash -r
+ pip install --upgrade --quiet setuptools
+ pip install --upgrade --quiet matplotlib numpy nose Cython trappy bart-py devlib psutil wrapt scipy IPython
+ git clone "${LISA_REPOSITORY}" lisa
+ (
+ cd lisa
+ git checkout "${LISA_REF}"
+ )
+fi
+# TODO: check if lisa directory exists
+cd lisa
+. init_env
+lisa-update submodules
+python "${LISA_SCRIPT}"
+ls
+for FILE in *.csv
+do
+ python "${TEST_DIR}/postprocess_lisa_results.py" -f "${FILE}" -o "${RESULT_FILE}"
+done
diff --git a/automated/linux/aep-pre-post/postprocess_lisa_results.py b/automated/linux/aep-pre-post/postprocess_lisa_results.py
new file mode 100644
index 0000000..c0426c5
--- /dev/null
+++ b/automated/linux/aep-pre-post/postprocess_lisa_results.py
@@ -0,0 +1,48 @@
+import argparse
+import csv
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-f",
+ "--file",
+ help="CSV file for postprocessing",
+ dest="source_filename")
+ parser.add_argument("-o",
+ "--output-file",
+ help="Results file",
+ dest="results_filename")
+ args = parser.parse_args()
+
+ row_index = 0
+ headers = []
+ measurements = {}
+ with open(args.source_filename, "rb") as f:
+ reader = csv.reader(f)
+ for row in reader:
+ if row_index == 0:
+ headers = row
+ elif row_index > 0 and row_index <= 2:
+ item_index = 0
+ for item in row:
+ if len(item) > 0:
+ headers[item_index] = headers[item_index] + "_" + item
+ item_index = item_index + 1
+ else:
+ # concatenate first 3 cells
+ name = row[0] + "_" + row[1] + "_" + row[2]
+ item_index = 3
+ for item in row[item_index:]:
+ if item != "":
+ measurement_name = name + "_" + headers[item_index]
+ measurements.update({measurement_name: item})
+ item_index = item_index + 1
+ row_index = row_index + 1
+ with open(args.results_filename, "a") as results:
+ for key, value in measurements.items():
+ # key is test name
+ # value is measurement to be recorded
+ results.write("%s pass %s _\r\n" % (key, value))
+
+if __name__ == "__main__":
+ main()
diff --git a/automated/linux/badblocks/badblocks.sh b/automated/linux/badblocks/badblocks.sh
new file mode 100755
index 0000000..0698df1
--- /dev/null
+++ b/automated/linux/badblocks/badblocks.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# shellcheck disable=SC1091
+. ../../lib/sh-test-lib
+OUTPUT="$(pwd)/output"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
+TEST_SUITE="badblocks"
+BLOCK_DEVICE="default"
+
+usage() {
+ echo "Usage: $0 [-b <block device>] [-p <badblocks params>] [-s <skip install: true|false]" 1>&2
+ exit 1
+}
+
+while getopts "b:h:p:s:" o; do
+ case "$o" in
+ b) BLOCK_DEVICE="${OPTARG}" ;;
+ p) BADBLOCKS_PARAMS="${OPTARG}" ;;
+ s) SKIP_INSTALL="${OPTARG}" ;;
+ h|*) usage ;;
+ esac
+done
+
+install() {
+ dist_name
+ # shellcheck disable=SC2154
+ case "${dist}" in
+ debian|ubuntu) install_deps "e2fsprogs" "${SKIP_INSTALL}";;
+ unknown) warn_msg "Unsupported distro: package install skipped" ;;
+ esac
+}
+
+if [ "${BLOCK_DEVICE}" = "default" ]; then
+ BLOCK_DEVICE=$(mount | grep "on \/ type" | cut -d' ' -f 1)
+fi
+
+create_out_dir "${OUTPUT}"
+install
+
+command -v badblocks
+exit_on_fail "badblocks-existence-check"
+
+if [ ! -z "${BLOCK_DEVICE}" ] && [ -e "${BLOCK_DEVICE}" ]; then
+ info_msg "Running ${TEST_SUITE} test on ${BLOCK_DEVICE}"
+ LOG_FILE="${OUTPUT}/${TEST_SUITE}-output.txt"
+ test_cmd="badblocks -v ${BADBLOCKS_PARAMS} ${BLOCK_DEVICE} 2>&1"
+ pipe0_status "${test_cmd}" "tee ${LOG_FILE}"
+ check_return "${TEST_SUITE}"
+else
+ info_msg "Skipping ${TEST_SUITE} test on ${BLOCK_DEVICE}"
+ echo "${TEST_SUITE} skip" | tee -a "${RESULT_FILE}"
+fi
diff --git a/automated/linux/badblocks/badblocks.yaml b/automated/linux/badblocks/badblocks.yaml
new file mode 100644
index 0000000..99eec2f
--- /dev/null
+++ b/automated/linux/badblocks/badblocks.yaml
@@ -0,0 +1,25 @@
+metadata:
+ name: badblocks
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Run a read-only test for bad blocks"
+ maintainer:
+ - ryan.harkin@linaro.org
+ os:
+ - openembedded
+ - debian
+ scope:
+ - functional
+ devices:
+ - imx7s-warp
+ - sun8i-h2-plus-bananapi-m2-zero
+
+parameters:
+ BLOCK_DEVICE: 'default'
+ BADBLOCKS_PARAMS: ''
+ SKIP_INSTALL: "False"
+
+run:
+ steps:
+ - cd ./automated/linux/badblocks/
+ - ./badblocks.sh -b "${BLOCK_DEVICE}" -p "${BADBLOCKS_PARAMS}" -s "${SKIP_INSTALL}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/linux/gst-validate/README b/automated/linux/gst-validate/README
new file mode 100644
index 0000000..78941d2
--- /dev/null
+++ b/automated/linux/gst-validate/README
@@ -0,0 +1,17 @@
+The gst-validate-launcher uses a set of test cases and media files, the gstreamer
+team provides gst-integration-testsuites [1] but you could provide your own.
+
+To get gst-integration-testsuites uses git-annex to get media:
+
+$ git clone git://anongit.freedesktop.org/gstreamer/gst-integration-testsuites
+$ cd gst-integration-testsuites
+$ git checkout 1.12
+$ git annex get
+
+The gst-integration-testsuites needs to be pre-populated into the rootfs inside
+/gst-validate folder,
+
+$ mkdir /ROOTFS_PATH/gst-validate
+$ cp -rf gst-integration-testsuites /ROOTFS_PATH/gst-validate
+
+[1] https://cgit.freedesktop.org/gstreamer/gst-integration-testsuites
diff --git a/automated/linux/gst-validate/gst-validate.yaml b/automated/linux/gst-validate/gst-validate.yaml
new file mode 100644
index 0000000..75dfe77
--- /dev/null
+++ b/automated/linux/gst-validate/gst-validate.yaml
@@ -0,0 +1,47 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: gst-validate
+ description: "A suite of tools to run integration tests for Gstreamer,
+ For more information: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-validate/html/"
+ maintainer:
+ - anibal.limon@linaro.org
+ os:
+ - openembedded
+ scope:
+ - functional
+ devices:
+ - dragonboard410c
+
+# MAIN_DIR:
+# * Directory where gst-validate will run, needs to contain gst-integration-testsuites,
+# https://cgit.freedesktop.org/gstreamer/gst-integration-testsuites
+# OPTIONS:
+# * -nd: To execute without display attached required Xvfb
+# * -v: Verbose mode
+# * -j: To execute only one job a time, avoid OOM
+# GST_INTEGRATION_SUITES:
+# * URL with the tarball of Gstreamer integration suites (cases, media),
+# https://github.com/GStreamer/gst-integration-testsuites
+params:
+ MAIN_DIR: "/gst-validate"
+ OPTIONS: "-nd -v -j 1"
+ GST_INTEGRATION_SUITES: "http://testdata.validation.linaro.org/gst-validate/gst-integration-testsuites_1.12.tar.gz"
+ GST_IGNORE_TESTS_REPO: ""
+ GST_IGNORE_TESTS_BRANCH: "master"
+ GST_IGNORE_TESTS_FILE: ""
+
+run:
+ steps:
+ - . ./automated/lib/sh-test-lib
+ - cd ./automated/linux/gst-validate
+ - wget ${GST_INTEGRATION_SUITES}
+ - tar -xzf $(basename ${GST_INTEGRATION_SUITES}) -C /
+ - IGNORE_FILE=""
+ - if [ ! -z "${GST_IGNORE_TESTS_REPO}" ] && [ ! -z "${GST_IGNORE_TESTS_FILE}" ]; then
+ - repo_path=${PWD}/$(basename ${GST_IGNORE_TESTS_REPO})
+ - git clone -b ${GST_IGNORE_TESTS_BRANCH} ${GST_IGNORE_TESTS_REPO} $repo_path
+ - IGNORE_FILE=${repo_path}/${GST_IGNORE_TESTS_FILE}
+ - fi
+ - gst-validate-launcher -M ${MAIN_DIR} ${OPTIONS} > ./gst-validate-raw.log || true
+ - ./gst_validate_lava_parse.py ./gst-validate-raw.log ${IGNORE_FILE} > ./result.txt
+ - ../../utils/send-to-lava.sh ./result.txt
diff --git a/automated/linux/gst-validate/gst_validate_lava_parse.py b/automated/linux/gst-validate/gst_validate_lava_parse.py
new file mode 100755
index 0000000..8845fe6
--- /dev/null
+++ b/automated/linux/gst-validate/gst_validate_lava_parse.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python3
+
+# LAVA/OE gst-validate results parse script
+#
+# Copyright (C) 2018, Linaro Limited.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Author: Aníbal Limón <anibal.limon@linaro.org>
+#
+
+import json
+import os
+import re
+import sys
+
+
+def map_result_to_lava(result):
+ if result == 'Passed':
+ result = 'pass'
+ elif result == 'Failed':
+ result = 'fail'
+ elif result == 'Skipped':
+ result = 'skip'
+ elif result == 'Timeout':
+ result = 'fail'
+
+ return result
+
+
+if __name__ == '__main__':
+ if len(sys.argv) < 2:
+ print("Usage: %s <result_file> [ignore_file]" % sys.argv[0])
+ sys.exit(1)
+
+ ignore_tests = []
+ if len(sys.argv) == 3:
+ with open(sys.argv[2], 'r') as f:
+ ignore_tests = f.read().split()
+
+ rex = re.compile('^(?P<test_case_id>validate\..*):\s+(?P<result>(Failed|Passed|Skipped|Timeout))')
+ with open(sys.argv[1], 'r') as f:
+ for line in f.readlines():
+ s = rex.search(line)
+ if s:
+ test_case_id = s.group('test_case_id')
+ result = s.group('result')
+
+ if test_case_id not in ignore_tests:
+ print("%s %s" % (test_case_id, map_result_to_lava(result)))
diff --git a/automated/linux/hci-smoke/hci-smoke-test.sh b/automated/linux/hci-smoke/hci-smoke-test.sh
new file mode 100755
index 0000000..454d4fa
--- /dev/null
+++ b/automated/linux/hci-smoke/hci-smoke-test.sh
@@ -0,0 +1,107 @@
+#!/bin/sh
+#
+# HCI smoke tests
+#
+# Copyright (C) 2017, Linaro Limited.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Author: Nicolas Dechesne <nicolas.dechesne@linaro.org>
+#
+
+# shellcheck disable=SC1091
+. ../../lib/sh-test-lib
+OUTPUT="$(pwd)/output"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
+DEVICE="hci0"
+BOOT="enabled"
+
+usage() {
+ echo "Usage: $0 [-b <enabled|disabled>] [-d <device>]" 1>&2
+ exit 1
+}
+
+while getopts "d:b:" o; do
+ case "$o" in
+ d) DEVICE="${OPTARG}" ;;
+ b) BOOT="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+# sanity test hciconfig config
+test_hciconfig() {
+ info_msg "Running hciconfig test..."
+ hciconfig "${DEVICE}"
+ exit_on_fail "hciconfig"
+}
+
+# test HCI device is $BOOT at boot
+test_hciconfig_boot() {
+ info_msg "Running hciconfig_boot test..."
+
+ # rely on distro policy for AutoEnable
+ if [ "${BOOT}" = "auto" ]; then
+ # get rid of spaces and comments
+ sed 's/\s\+//g;/^#/d' /etc/bluetooth/main.conf | grep "^AutoEnable=true"
+ if [ "$?" -eq 0 ]; then
+ BOOT="enabled"
+ else
+ BOOT="disabled"
+ fi
+ fi
+
+ if [ "${BOOT}" = "enabled" ]; then
+ hciconfig "${DEVICE}" | grep "UP RUNNING"
+ else
+ hciconfig "${DEVICE}" | grep "DOWN"
+ fi
+ check_return "hciconfig-boot-${BOOT}"
+}
+
+# test HCI device is up
+test_hciconfig_up() {
+ info_msg "Running hciconfig-up test..."
+ hciconfig "${DEVICE}" up
+ sleep 1
+ hciconfig "${DEVICE}" | grep "UP RUNNING"
+ check_return "hciconfig-up"
+}
+
+test_hciconfig_down() {
+ info_msg "Running hciconfig-down test..."
+ hciconfig "${DEVICE}" down
+ sleep 1
+ hciconfig "${DEVICE}" | grep DOWN
+ check_return "hciconfig-down"
+}
+
+# Test run.
+! check_root && error_msg "This script must be run as root"
+create_out_dir "${OUTPUT}"
+
+info_msg "About to run HCI smoke test..."
+info_msg "Output directory: ${OUTPUT}"
+
+# ensure that device is available at boot
+test_hciconfig
+test_hciconfig_boot
+test_hciconfig_down
+test_hciconfig_up
+
+
+
+
diff --git a/automated/linux/hci-smoke/hci-smoke.yaml b/automated/linux/hci-smoke/hci-smoke.yaml
new file mode 100644
index 0000000..47716de
--- /dev/null
+++ b/automated/linux/hci-smoke/hci-smoke.yaml
@@ -0,0 +1,26 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: hci-smoke
+ description: "Basic HCI smoke tests"
+ maintainer:
+ - nicolas.dechesne@linaro.org
+ os:
+ - debian
+ - ubuntu
+ - centos
+ - fedora
+ scope:
+ - functional
+ devices:
+ - dragonboard410c
+
+params:
+ DEVICE: hci0
+ # expected state on first boot: <enabled> or <disabled> or <auto>
+ BOOT: enabled
+
+run:
+ steps:
+ - cd ./automated/linux/hci-smoke
+ - ./hci-smoke-test.sh -d "${DEVICE}" -b "${BOOT}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/linux/iozone/iozone.sh b/automated/linux/iozone/iozone.sh
new file mode 100755
index 0000000..6c9c005
--- /dev/null
+++ b/automated/linux/iozone/iozone.sh
@@ -0,0 +1,62 @@
+#!/bin/sh -ex
+# shellcheck disable=SC1090
+# shellcheck disable=SC2154
+
+TEST_DIR=$(dirname "$(realpath "$0")")
+OUTPUT="${TEST_DIR}/output"
+LOGFILE="${OUTPUT}/iozone-stdout.txt"
+RESULT_FILE="${OUTPUT}/result.txt"
+
+SKIP_INSTALL="false"
+VERSION="3_458"
+
+usage() {
+ echo "Usage: $0 [-s <skip_install>] [-v <version>]" 1>&2
+ exit 1
+}
+
+while getopts "s:v:h" opt; do
+ case "$opt" in
+ s) SKIP_INSTALL="${OPTARG}" ;;
+ v) VERSION="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+. "${TEST_DIR}/../../lib/sh-test-lib"
+create_out_dir "${OUTPUT}"
+cd "${OUTPUT}"
+
+if [ "$SKIP_INSTALL" = 'true' ] || [ "$SKIP_INSTALL" = 'True' ]; then
+ warn_msg "Dependencies and iozone installation skipped!"
+else
+ install_deps "wget gcc make"
+ # Download, compile and install iozone.
+ wget "http://www.iozone.org/src/stable/iozone${VERSION}.tar"
+ tar xf "iozone${VERSION}.tar"
+ cd "iozone${VERSION}/src/current"
+ detect_abi
+ case "$abi" in
+ armeabi|arm64) make linux-arm ;;
+ x86_64) make linux ;;
+ *) warn_msg "Unsupported architecture" ;;
+ esac
+ export PATH=$PWD:$PATH
+fi
+
+which iozone || error_msg "'iozone' not found, exiting..."
+# -a: Auto mode
+# -I: Use VxFS VX_DIRECT, O_DIRECT,or O_DIRECTIO for all file operations
+iozone -a -I | tee "$LOGFILE"
+
+# Parse iozone stdout.
+field_number=3
+for test in "write" "rewrite" "read" "reread" "random-read" "random-write" "bkwd-read" \
+ "record-rewrite" "stride-read" "fwrite" "frewrite" "fread" "freread"; do
+ awk "/kB reclen/{flag=1; next} /iozone test complete/{flag=0} flag" "$LOGFILE" \
+ | sed '/^$/d' \
+ | awk -v tc="$test" -v field_number="$field_number" \
+ '{printf("%s-%skB-%sreclen pass %s kBytes/sec\n",tc,$1,$2,$field_number)}' \
+ | tee -a "$RESULT_FILE"
+ field_number=$(( field_number + 1 ))
+done
diff --git a/automated/linux/iozone/iozone.yaml b/automated/linux/iozone/iozone.yaml
new file mode 100644
index 0000000..d03561f
--- /dev/null
+++ b/automated/linux/iozone/iozone.yaml
@@ -0,0 +1,38 @@
+metadata:
+ name: iozone
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "IOzone is a filesystem benchmark tool. The benchmark generates and
+ measures a variety of file operations."
+ maintainer:
+ - chase.qi@linaro.org
+ os:
+ - ubuntu
+ - debian
+ - centos
+ - fedora
+ - openembedded
+ devices:
+ - d03
+ - d05
+ - juno
+ - beaglebone-black
+ - hi6220-hikey
+ - apq8016-sbc
+ - mustang
+ - moonshot
+ - thunderX
+ - x15
+ - x86
+
+ scope:
+ - performance
+
+params:
+ SKIP_INSTALL: "false"
+ VERSION: "3_458"
+
+run:
+ steps:
+ - cd automated/linux/iozone
+ - ./iozone.sh -s "${SKIP_INSTALL}" -v "${VERSION}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/linux/memtester/memtester.sh b/automated/linux/memtester/memtester.sh
new file mode 100755
index 0000000..54e80a1
--- /dev/null
+++ b/automated/linux/memtester/memtester.sh
@@ -0,0 +1,63 @@
+#!/bin/sh -e
+
+# shellcheck disable=SC1091
+. ../../lib/sh-test-lib
+OUTPUT="$(pwd)/output"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
+MEMORY='1M'
+ITERATIONS=1
+
+usage() {
+ echo "Usage: $0 [-s <true|false>] [-m memory] [-i iterations]" 1>&2
+ exit 1
+}
+
+while getopts "s:m:i:h" o; do
+ case "$o" in
+ s) SKIP_INSTALL="${OPTARG}" ;;
+ m) MEMORY="${OPTARG}" ;;
+ i) ITERATIONS="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+install() {
+ dist_name
+ # shellcheck disable=SC2154
+ case "${dist}" in
+ debian|ubuntu) install_deps "memtester" "${SKIP_INSTALL}";;
+ unknown) warn_msg "Unsupported distro: package install skipped" ;;
+ esac
+}
+
+parser() {
+ test_log="$1"
+ if [ "${ITERATIONS}" -gt 1 ]; then
+ suffix="-iter$2"
+ else
+ suffix=""
+ fi
+
+ # The follow lines:
+ # Remove redundant spaces.
+ # Replace ok with pass.
+ # Replace spaces in test case name with minus.
+ # Save test results like 'Stuck-Address pass' to result file.
+ grep ': ok' "${test_log}" \
+ | sed 's/^ *//g; s/ *: ok/:pass/g; s/ /-/g' \
+ | awk -v suffix="${suffix}" -F':' '{printf("%s%s %s\n",$1,suffix,$2)}' \
+ | tee -a "$RESULT_FILE"
+}
+
+create_out_dir "${OUTPUT}"
+install
+for i in $(seq "${ITERATIONS}"); do
+ output="${OUTPUT}/memtester-iter$i.txt"
+
+ memtester "${MEMORY}" 1 \
+ | sed 's/:.*ok/: ok/g' \
+ | tee "${output}"
+
+ parser "${output}" "$i"
+done
diff --git a/automated/linux/memtester/memtester.yaml b/automated/linux/memtester/memtester.yaml
new file mode 100644
index 0000000..d5407e7
--- /dev/null
+++ b/automated/linux/memtester/memtester.yaml
@@ -0,0 +1,29 @@
+metadata:
+ format: "Lava-Test Test Definition 1.0"
+ name: memtester
+ description: "Stress test to find memory subsystem faults"
+ maintainer:
+ - chase.qi@linaro.org
+ os:
+ - debian
+ - ubuntu
+ - openembedded
+ scope:
+ - functional
+ - stress
+ devices:
+ - hi6220-hikey
+ - apq8016-sbc
+
+parameters:
+ SKIP_INSTALL: "False"
+ # The amount of memory to allocate and test.
+ MEMORY: "1M"
+ # Number of loops to iterate through.
+ ITERATIONS: 1
+
+run:
+ steps:
+ - cd ./automated/linux/memtester/
+ - ./memtester.sh -s "${SKIP_INSTALL}" -m "${MEMORY}" -i "${ITERATIONS}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/linux/overlayfs/overlayfs.sh b/automated/linux/overlayfs/overlayfs.sh
new file mode 100755
index 0000000..d871cbe
--- /dev/null
+++ b/automated/linux/overlayfs/overlayfs.sh
@@ -0,0 +1,48 @@
+#!/bin/sh -ex
+
+TEST_DIR=$(dirname "$(realpath "$0")")
+OUTPUT="${TEST_DIR}/output"
+export RESULT_FILE="${OUTPUT}/result.txt"
+
+# shellcheck disable=SC1090
+. "${TEST_DIR}/../../lib/sh-test-lib"
+create_out_dir "${OUTPUT}"
+cd "${OUTPUT}"
+# PKG install will be skipped on unsupported distro.
+install_deps "git"
+git clone http://git.linaro.org/qa/unionmount-testsuite.git
+cd unionmount-testsuite
+
+tests="open-plain open-trunc open-creat open-creat-trunc open-creat-excl
+ open-creat-excl-trunc noent-plain noent-trunc noent-creat
+ noent-creat-trunc noent-creat-excl noent-creat-excl-trunc sym1-plain
+ sym1-trunc sym1-creat sym1-creat-excl sym2-plain sym2-trunc sym2-creat
+ sym2-creat-excl symx-plain symx-trunc symx-creat symx-creat-excl
+ symx-creat-trunc truncate dir-open dir-weird-open dir-open-dir
+ dir-weird-open-dir dir-sym1-open dir-sym1-weird-open dir-sym2-open
+ dir-sym2-weird-open readlink mkdir rmdir hard-link hard-link-dir
+ hard-link-sym unlink rename-file rename-empty-dir rename-new-dir
+ rename-pop-dir rename-new-pop-dir rename-move-dir rename-mass
+ rename-mass-2 rename-mass-3 rename-mass-4 rename-mass-5 rename-mass-dir
+ rename-mass-sym impermissible"
+
+if which python3; then
+ py_cmd="python3"
+else
+ py_cmd="python2"
+fi
+
+for test in ${tests}; do
+ for term_slash in 0 1; do
+ if [ "${term_slash}" -eq 1 ]; then
+ suffix="-termslash"
+ else
+ suffix=""
+ fi
+
+ test_cmd="${py_cmd} ./run --ov --ts=${term_slash} ${test}"
+ info_msg "Running $test with command: ${test_cmd}"
+ # run_test_case() usage: run_test_case test_cmd test_case_id
+ run_test_case "${test_cmd}" "${test}${suffix}"
+ done
+done
diff --git a/automated/linux/overlayfs/overlayfs.yaml b/automated/linux/overlayfs/overlayfs.yaml
new file mode 100644
index 0000000..f3d8918
--- /dev/null
+++ b/automated/linux/overlayfs/overlayfs.yaml
@@ -0,0 +1,35 @@
+metadata:
+ name: overlayfs
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Run overlay filesystem test from unionmount testsuite. Kernel config
+ CONFIG_OVERLAY_FS=y is required for this test."
+ maintainer:
+ - milosz.wasilewski@linaro.org
+ - chase.qi@linaro.org
+ os:
+ - ubuntu
+ - debian
+ - centos
+ - fedora
+ - openembedded
+ devices:
+ - d03
+ - d05
+ - juno
+ - beaglebone-black
+ - hi6220-hikey
+ - apq8016-sbc
+ - mustang
+ - moonshot
+ - thunderX
+ - x15
+ - x86
+
+ scope:
+ - functional
+
+run:
+ steps:
+ - cd automated/linux/overlayfs
+ - ./overlayfs.sh
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/linux/piglit/piglit.yaml b/automated/linux/piglit/piglit.yaml
new file mode 100644
index 0000000..8b87b7c
--- /dev/null
+++ b/automated/linux/piglit/piglit.yaml
@@ -0,0 +1,58 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: piglit
+ description: "Piglit is an open-source test suite for OpenGL implementations.
+ For more information: https://piglit.freedesktop.org/"
+ maintainer:
+ - anibal.limon@linaro.org
+ os:
+ - debian
+ - ubuntu
+ - centos
+ - fedora
+ - openembedded
+ scope:
+ - functional
+ devices:
+ - dragonboard410c
+
+# Exclude via OPTIONS:
+# * glx, because those are driver specific
+# * streaming-texture-leak, because it needs swap, not readily available
+params:
+ DISPLAY: ":0"
+ PIGLIT_SOURCE_DIR: "/usr/lib64/piglit"
+ OPTIONS: "-x streaming-texture-leak -x glx"
+ SUITE: "tests/quick.py"
+ USE_XVFB: "False"
+ IGNORE_TESTS_REPO: ""
+ IGNORE_TESTS_BRANCH: "master"
+ IGNORE_TESTS_FILE: ""
+
+run:
+ steps:
+ - . ./automated/lib/sh-test-lib
+ - install_deps piglit
+ - if [ "${USE_XVFB}" = "True" ]; then
+ - install_deps xvfb
+ - export DISPLAY=:9
+ - Xvfb ${DISPLAY} -screen 0 1920x1080x24 &
+ - else
+ - export DISPLAY=${DISPLAY}
+ - fi
+ - export PIGLIT_SOURCE_DIR=${PIGLIT_SOURCE_DIR}
+ - cd ./automated/linux/piglit
+ - IGNORE_FILE=""
+ - if [ ! -z "${IGNORE_TESTS_REPO}" ] && [ ! -z "${IGNORE_TESTS_FILE}" ]; then
+ - repo_path=${PWD}/$(basename ${IGNORE_TESTS_REPO})
+ - git clone -b ${IGNORE_TESTS_BRANCH} ${IGNORE_TESTS_REPO} ${repo_path}
+ - IGNORE_FILE=${repo_path}/${IGNORE_TESTS_FILE}
+ - fi
+ - piglit run ${OPTIONS} ${PIGLIT_SOURCE_DIR}/${SUITE} ./results
+ - if [ -f ./results/results.json.bz2 ]; then
+ - bzip2 -d ./results/results.json.bz2
+ - ./piglit_lava_parse.py ./results/results.json ${IGNORE_FILE} > ./result.txt
+ - else
+ - ./piglit_lava_parse.py ./results/tests ${IGNORE_FILE} > ./result.txt
+ - fi
+ - ../../utils/send-to-lava.sh ./result.txt
diff --git a/automated/linux/piglit/piglit_lava_parse.py b/automated/linux/piglit/piglit_lava_parse.py
new file mode 100755
index 0000000..1e780fa
--- /dev/null
+++ b/automated/linux/piglit/piglit_lava_parse.py
@@ -0,0 +1,81 @@
+#!/usr/bin/env python3
+
+# LAVA/OE piglit results parse script
+#
+# Copyright (C) 2018, Linaro Limited.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Author: Aníbal Limón <anibal.limon@linaro.org>
+#
+
+import json
+import os
+import re
+import sys
+
+
+def map_result_to_lava(result):
+ if result == 'warn':
+ result = 'pass'
+ elif result == 'crash':
+ result = 'fail'
+ elif result == 'incomplete':
+ result = 'fail'
+
+ return result
+
+
+def natural_keys(text):
+ m = re.search('(\d+)', text)
+ if m:
+ return int(m.group(1))
+ else:
+ return text
+
+
+if __name__ == '__main__':
+ if len(sys.argv) < 2:
+ print("Usage: %s <result_dir|result_file> [ignore_file]" % sys.argv[0])
+ sys.exit(1)
+
+ ignore_tests = []
+ if len(sys.argv) == 3:
+ with open(sys.argv[2], 'r') as f:
+ ignore_tests = f.read().split()
+
+ if os.path.isdir(sys.argv[1]):
+ for root, dirs, files in os.walk(sys.argv[1]):
+ result_types = {}
+ for name in sorted(files, key=natural_keys):
+ if name.endswith('.tmp'):
+ continue
+ piglit_result = None
+ full_f = os.path.join(root, name)
+ with open(full_f, 'r') as f:
+ piglit_results = json.loads(f.read())
+ for test in piglit_results.keys():
+ if test in ignore_tests:
+ continue
+ result = map_result_to_lava(piglit_results[test]['result'])
+ print("%s %s" % (test, result))
+ else:
+ with open(sys.argv[1], 'r') as f:
+ piglit_results = json.loads(f.read())
+ for test in sorted(piglit_results['tests'].keys()):
+ if test in ignore_tests:
+ continue
+ result = map_result_to_lava(piglit_results['tests'][test]['result'])
+ print("%s %s" % (test, result))
diff --git a/automated/linux/ptest/ptest.py b/automated/linux/ptest/ptest.py
new file mode 100755
index 0000000..13feb4d
--- /dev/null
+++ b/automated/linux/ptest/ptest.py
@@ -0,0 +1,161 @@
+#!/usr/bin/env python3
+
+# LAVA/OE ptest script
+#
+# Copyright (C) 2017, Linaro Limited.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Author: Aníbal Limón <anibal.limon@linaro.org>
+#
+
+import sys
+import argparse
+import subprocess
+import re
+import os
+
+OUTPUT_LOG = os.path.join(os.getcwd(), 'result.txt')
+
+
+def get_ptest_dir():
+ ptest_dirs = ['/usr/lib', '/usr/lib64', '/usr/lib32']
+
+ for pdir in ptest_dirs:
+ try:
+ ptests = subprocess.check_output('ptest-runner -l -d %s' %
+ pdir, shell=True,
+ stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError:
+ continue
+
+ return pdir
+
+ return None
+
+
+def get_available_ptests(ptest_dir):
+ output = subprocess.check_output('ptest-runner -l -d %s' %
+ ptest_dir, shell=True,
+ stderr=subprocess.STDOUT)
+
+ ptests = []
+ ptest_rex = re.compile("^(?P<ptest_name>.*)\t")
+ for line in output.decode('utf-8').split('\n'):
+ m = ptest_rex.search(line)
+ if m:
+ ptests.append(m.group('ptest_name'))
+
+ return ptests
+
+
+def filter_ptests(ptests, requested_ptests, exclude):
+ filter_ptests = []
+
+ for ptest in exclude:
+ if ptest in ptests:
+ ptests.remove(ptest)
+
+ if not requested_ptests:
+ return ptests
+
+ for ptest_name in ptests:
+ if ptest_name in requested_ptests:
+ requested_ptests[ptest_name] = True
+ filter_ptests.append(ptest_name)
+
+ for request_ptest in requested_ptests.keys():
+ if not requested_ptests[request_ptest]:
+ print("ERROR: Ptest %s was requested and isn't available" %
+ request_ptest)
+ sys.exit(1)
+
+ return filter_ptests
+
+
+def check_ptest(ptest_dir, ptest_name, output_log):
+ status = 'pass'
+
+ try:
+ output = subprocess.check_call('ptest-runner -d %s %s' %
+ (ptest_dir, ptest_name), shell=True,
+ stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError:
+ status = 'fail'
+
+ with open(output_log, 'a+') as f:
+ f.write("%s %s\n" % (ptest_name, status))
+
+
+def main():
+ parser = argparse.ArgumentParser(description="LAVA/OE ptest script",
+ add_help=False)
+ parser.add_argument('-t', '--tests', action='store', nargs='*',
+ help='Ptests to run')
+ parser.add_argument('-e', '--exclude', action='store', nargs='*',
+ help='Ptests to exclude')
+ parser.add_argument('-d', '--ptest-dir',
+ help='Directory where ptests are stored (optional)',
+ action='store')
+ parser.add_argument('-o', '--output-log',
+ help='File to output log (optional)', action='store',
+ default=OUTPUT_LOG)
+ parser.add_argument('-h', '--help', action='help',
+ default=argparse.SUPPRESS,
+ help='show this help message and exit')
+ args = parser.parse_args()
+
+ if args.ptest_dir:
+ ptest_dir = args.ptest_dir
+ else:
+ ptest_dir = get_ptest_dir()
+ if not ptest_dir:
+ print("ERROR: No ptest dir found\n")
+ return 1
+
+ ptests = get_available_ptests(ptest_dir)
+ if not ptests:
+ print("ERROR: No ptests found in dir: %s\n" % ptest_dir)
+ return 1
+
+ # filter empty strings caused by -t ""
+ tests = []
+ if args.tests:
+ tests = [x for x in args.tests if x]
+
+ # filter empty strings caused by -e ""
+ exclude = []
+ if args.exclude:
+ exclude = [e for e in args.exclude if e]
+
+ required_ptests = dict.fromkeys(tests, False)
+ ptests_to_run = filter_ptests(ptests, required_ptests, exclude)
+ for ptest_name in ptests_to_run:
+ check_ptest(ptest_dir, ptest_name, args.output_log)
+
+ return 0
+
+
+if __name__ == '__main__':
+ try:
+ ret = main()
+ except SystemExit as e:
+ ret = e.code
+ except:
+ ret = 1
+ import traceback
+ traceback.print_exc()
+
+ sys.exit(ret)
diff --git a/automated/linux/ptest/ptest.yaml b/automated/linux/ptest/ptest.yaml
new file mode 100644
index 0000000..854af0b
--- /dev/null
+++ b/automated/linux/ptest/ptest.yaml
@@ -0,0 +1,25 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: ptest
+ description: "OpenEmbedded Package tests support (ptest)
+ The pacakge tests from OpenEmbedded enables the support to run
+ package unittests into the target device.
+ For more information: https://wiki.yoctoproject.org/wiki/Ptest"
+ maintainer:
+ - anibal.limon@linaro.org
+ os:
+ - openembedded
+ scope:
+ - functional
+ devices:
+ - dragonboard410c
+
+params:
+ TESTS: ""
+ EXCLUDE: ""
+
+run:
+ steps:
+ - cd ./automated/linux/ptest
+ - ./ptest.py -o ./result.txt -t ${TESTS} -e ${EXCLUDE}
+ - ../../utils/send-to-lava.sh ./result.txt
diff --git a/automated/linux/v4l2/v4l2-compliance.sh b/automated/linux/v4l2/v4l2-compliance.sh
new file mode 100755
index 0000000..73a609f
--- /dev/null
+++ b/automated/linux/v4l2/v4l2-compliance.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+. ../../lib/sh-test-lib
+OUTPUT="$(pwd)/output"
+RESULT_FILE="${OUTPUT}/result.txt"
+TEST_SUITE="v4l2-compliance"
+
+usage() {
+ echo "Usage: $0 [-d <video device>" 1>&2
+ exit 1
+}
+
+while getopts "d:h:m:" o; do
+ case "$o" in
+ d) VIDEO_DEVICE="${OPTARG}" ;;
+ m) MEDIA_DEVICE_NUM="${OPTARG}"
+ MEDIA_DEVICE="/dev/media${OPTARG}" ;;
+ h|*) usage ;;
+ esac
+done
+
+echo VIDEO_DEVICE="${VIDEO_DEVICE}"
+echo MEDIA_DEVICE="${MEDIA_DEVICE}"
+echo MEDIA_DEVICE_NUM="${MEDIA_DEVICE_NUM}"
+
+# Test run.
+create_out_dir "${OUTPUT}"
+
+command -v v4l2-compliance
+exit_on_fail "v4l2-existence-check"
+
+if [ ! -z "${VIDEO_DEVICE}" ] && [ -e "${VIDEO_DEVICE}" ]; then
+ info_msg "Running v4l2-compliance device test..."
+ LOG_FILE="${OUTPUT}/${TEST_SUITE}-output.txt"
+ test_cmd="v4l2-compliance -v -d ${VIDEO_DEVICE} 2>&1"
+ pipe0_status "${test_cmd}" "tee ${LOG_FILE}"
+ check_return "v4l2-compliance"
+else
+ info_msg "Skipping v4l2-compliance device test..."
+fi
+
+if [ ! -z "${MEDIA_DEVICE}" ] && [ -e "${MEDIA_DEVICE}" ]; then
+ info_msg "Running v4l2-compliance media test..."
+ LOG_FILE="${OUTPUT}/${TEST_SUITE}-output.txt"
+ test_cmd="v4l2-compliance -v -m${MEDIA_DEVICE_NUM} 2>&1"
+ pipe0_status "${test_cmd}" "tee ${LOG_FILE}"
+ check_return "v4l2-compliance"
+else
+ info_msg "Skipping v4l2-compliance media test..."
+fi
+
+# Parse test log.
+grep -e FAIL -e OK "${LOG_FILE}" | \
+ sed -e 's/^[ \t]*//' \
+ -e 's/test //' \
+ -e 's/ (Not Supported)//' \
+ -e 's/ /_/g' \
+ -e 's/:_/ /' \
+ -e 's/ OK/ PASS/' \
+ > "${RESULT_FILE}"
diff --git a/automated/linux/v4l2/v4l2-compliance.yaml b/automated/linux/v4l2/v4l2-compliance.yaml
new file mode 100644
index 0000000..c386d43
--- /dev/null
+++ b/automated/linux/v4l2/v4l2-compliance.yaml
@@ -0,0 +1,23 @@
+metadata:
+ name: v4l2-compliance
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "v4l2 Compliance test suite"
+ maintainer:
+ - ryan.harkin@linaro.org
+ os:
+ - openembedded
+ - debian
+ scope:
+ - functional
+ devices:
+ - imx7s-warp
+
+params:
+ VIDEO_DEVICE: "/dev/video0"
+ MEDIA_DEVICE_NUM: "0"
+
+run:
+ steps:
+ - cd ./automated/linux/v4l2/
+ - ./v4l2-compliance.sh -d "${VIDEO_DEVICE}" -m "${MEDIA_DEVICE_NUM}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/linux/wlan-smoke/wlan-smoke-test.sh b/automated/linux/wlan-smoke/wlan-smoke-test.sh
new file mode 100755
index 0000000..8bf028a
--- /dev/null
+++ b/automated/linux/wlan-smoke/wlan-smoke-test.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# WLAN smoke tests
+#
+# Copyright (C) 2017, Linaro Limited.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Author: Nicolas Dechesne <nicolas.dechesne@linaro.org>
+#
+
+# shellcheck disable=SC1091
+. ../../lib/sh-test-lib
+OUTPUT="$(pwd)/output"
+RESULT_FILE="${OUTPUT}/result.txt"
+export RESULT_FILE
+DEVICE="wlan0"
+BOOT="enabled"
+
+usage() {
+ echo "Usage: $0 [-b <enabled|disabled>] [-d <device>]" 1>&2
+ exit 1
+}
+
+while getopts "d:b:" o; do
+ case "$o" in
+ d) DEVICE="${OPTARG}" ;;
+ b) BOOT="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+
+# sanity test ip command
+test_iplink() {
+ info_msg "Running ip link test..."
+ ip link show "${DEVICE}"
+ exit_on_fail "ip-link"
+}
+
+# test WLAN device at boot is $BOOT
+test_wlan_boot() {
+ info_msg "Running wlan boot test..."
+ if [ "${BOOT}" = "enabled" ]; then
+ ip link show "${DEVICE}" | grep "${DEVICE}" | grep "UP"
+ else
+ ip link show "${DEVICE}" | grep "${DEVICE}" | grep -v "UP"
+ fi
+ check_return "wlan-boot"
+}
+
+# test WLAN device is up
+test_wlan_up() {
+ info_msg "Running wlan-up test..."
+ ip link set "${DEVICE}" up
+ sleep 1
+ ip link show "${DEVICE}" | grep "${DEVICE}" | grep "UP"
+ check_return "wlan-up"
+}
+
+# test WLAN device is down
+test_wlan_down() {
+ info_msg "Running wlan-down test..."
+ ip link set "${DEVICE}" down
+ sleep 1
+ ip link show "${DEVICE}" | grep "${DEVICE}" | grep -v "UP"
+ check_return "wlan-down"
+}
+
+# Test run.
+! check_root && error_msg "This script must be run as root"
+create_out_dir "${OUTPUT}"
+
+info_msg "About to run wlan smoke test..."
+info_msg "Output directory: ${OUTPUT}"
+
+# ensure that device is available at boot
+test_iplink
+test_wlan_boot
+test_wlan_down
+test_wlan_up
+
+
+
+
diff --git a/automated/linux/wlan-smoke/wlan-smoke.yaml b/automated/linux/wlan-smoke/wlan-smoke.yaml
new file mode 100644
index 0000000..00ade67
--- /dev/null
+++ b/automated/linux/wlan-smoke/wlan-smoke.yaml
@@ -0,0 +1,26 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: wlan-smoke
+ description: "Basic WLAN smoke tests"
+ maintainer:
+ - nicolas.dechesne@linaro.org
+ os:
+ - debian
+ - ubuntu
+ - centos
+ - fedora
+ scope:
+ - functional
+ devices:
+ - dragonboard410c
+
+params:
+ DEVICE: wlan0
+ # expected state on first boot: <enabled> or <disabled>
+ BOOT: enabled
+
+run:
+ steps:
+ - cd ./automated/linux/wlan-smoke
+ - ./wlan-smoke-test.sh -d "${DEVICE}" -b "${BOOT}"
+ - ../../utils/send-to-lava.sh ./output/result.txt
diff --git a/automated/utils/test-runner.py b/automated/utils/test-runner.py
index fd4591a..16f5e30 100755
--- a/automated/utils/test-runner.py
+++ b/automated/utils/test-runner.py
@@ -2,6 +2,7 @@
import argparse
import csv
import cmd
+import copy
import json
import logging
import os
@@ -13,6 +14,7 @@ import sys
import textwrap
import time
from uuid import uuid4
+from distutils.spawn import find_executable
try:
@@ -34,8 +36,11 @@ class StoreDictKeyPair(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
my_dict = {}
for kv in values:
- k, v = kv.split("=")
- my_dict[k] = v
+ if "=" in kv:
+ k, v = kv.split("=", 1)
+ my_dict[k] = v
+ else:
+ print("Invalid parameter: %s" % kv)
setattr(namespace, self.dest, my_dict)
@@ -69,6 +74,59 @@ class TestPlan(object):
self.timeout = args.timeout
self.skip_install = args.skip_install
self.logger = logging.getLogger('RUNNER.TestPlan')
+ self.overlay = args.overlay
+
+ def apply_overlay(self, test_list):
+ fixed_test_list = copy.deepcopy(test_list)
+ logger = logging.getLogger('RUNNER.TestPlan.Overlay')
+ with open(self.overlay) as f:
+ data = yaml.load(f)
+
+ if data.get('skip'):
+ skip_tests = data['skip']
+ for test in test_list:
+ for skip_test in skip_tests:
+ if test['path'] == skip_test['path'] and test['repository'] == skip_test['repository']:
+ fixed_test_list.remove(test)
+ logger.info("Skipped: {}".format(test))
+ else:
+ continue
+
+ if data.get('amend'):
+ amend_tests = data['amend']
+ for test in fixed_test_list:
+ for amend_test in amend_tests:
+ if test['path'] == amend_test['path'] and test['repository'] == skip_test['repository']:
+ if amend_test.get('parameters'):
+ if test.get('parameters'):
+ test['parameters'].update(amend_test['parameters'])
+ else:
+ test['parameters'] = amend_test['parameters']
+ logger.info('Updated: {}'.format(test))
+ else:
+ logger.warning("'parameters' not found in {}, nothing to amend.".format(amend_test))
+
+ if data.get('add'):
+ add_tests = data['add']
+ unique_add_tests = []
+ for test in add_tests:
+ if test not in unique_add_tests:
+ unique_add_tests.append(test)
+ else:
+ logger.warning("Skipping duplicate test {}".format(test))
+
+ for test in test_list:
+ del test['uuid']
+
+ for add_test in unique_add_tests:
+ if add_test in test_list:
+ logger.warning("{} already included in test plan, do nothing.".format(add_test))
+ else:
+ add_test['uuid'] = str(uuid4())
+ fixed_test_list.append(add_test)
+ logger.info("Added: {}".format(add_test))
+
+ return fixed_test_list
def test_list(self, kind="automated"):
if self.test_def:
@@ -88,22 +146,30 @@ class TestPlan(object):
with open(self.test_plan, 'r') as f:
test_plan = yaml.safe_load(f)
try:
+ plan_version = test_plan['metadata'].get('format')
+ self.logger.info('Test plan version: {}'.format(plan_version))
+ if plan_version == "Linaro Test Plan v2":
+ tests = test_plan['tests'][kind]
+ elif plan_version == "Linaro Test Plan v1" or plan_version is None:
+ tests = []
+ for requirement in test_plan['requirements']:
+ if 'tests' in requirement.keys():
+ if requirement['tests'] and \
+ kind in requirement['tests'].keys() and \
+ requirement['tests'][kind]:
+ for test in requirement['tests'][kind]:
+ tests.append(test)
+
test_list = []
unique_tests = [] # List of test hashes
- for requirement in test_plan['requirements']:
- if 'tests' in requirement.keys():
- if requirement['tests'] and \
- kind in requirement['tests'].keys() and \
- requirement['tests'][kind]:
- for test in requirement['tests'][kind]:
- test_hash = hash(json.dumps(test, sort_keys=True))
- if test_hash in unique_tests:
- # Test is already in the test_list; don't add it again.
- self.logger.warning(
- "Skipping duplicate test {}".format(test))
- continue
- unique_tests.append(test_hash)
- test_list.append(test)
+ for test in tests:
+ test_hash = hash(json.dumps(test, sort_keys=True))
+ if test_hash in unique_tests:
+ # Test is already in the test_list; don't add it again.
+ self.logger.warning("Skipping duplicate test {}".format(test))
+ continue
+ unique_tests.append(test_hash)
+ test_list.append(test)
for test in test_list:
test['uuid'] = str(uuid4())
except KeyError as e:
@@ -113,7 +179,10 @@ class TestPlan(object):
self.logger.error('Plese specify a test or test plan.')
sys.exit(1)
- return test_list
+ if self.overlay is None:
+ return test_list
+ else:
+ return self.apply_overlay(test_list)
class TestSetup(object):
@@ -600,6 +669,9 @@ class ResultParser(object):
self.results['name'] = self.testdef['metadata']['name']
if 'params' in self.testdef.keys():
self.results['params'] = self.testdef['params']
+ if self.args.test_def_params:
+ for param_name, param_value in self.args.test_def_params.items():
+ self.results['params'][param_name] = param_value
if 'parse' in self.testdef.keys() and 'pattern' in self.testdef['parse'].keys():
self.pattern = self.testdef['parse']['pattern']
self.logger.info("Enabling log parse pattern: %s" % self.pattern)
@@ -621,6 +693,10 @@ class ResultParser(object):
test_version = subprocess.check_output("git rev-parse HEAD", shell=True).decode('utf-8')
self.results['version'] = test_version.rstrip()
os.chdir(path)
+ self.lava_run = args.lava_run
+ if self.lava_run and not find_executable('lava-test-case'):
+ self.logger.info("lava-test-case not found, '-l' or '--lava_run' option ignored'")
+ self.lava_run = False
def run(self):
self.parse_stdout()
@@ -667,21 +743,35 @@ class ResultParser(object):
self.metrics.append(data.copy())
+ if self.lava_run:
+ self.send_to_lava(data)
+
def parse_pattern(self):
with open('%s/stdout.log' % self.test['test_path'], 'r') as f:
+ rex_pattern = re.compile(r'%s' % self.pattern)
for line in f:
data = {}
- m = re.search(r'%s' % self.pattern, line)
+ m = rex_pattern.search(line)
if m:
data = m.groupdict()
for x in ['measurement', 'units']:
if x not in data:
data[x] = ''
- if self.fixup:
+ if self.fixup and data['result'] in self.fixup:
data['result'] = self.fixup[data['result']]
self.metrics.append(data.copy())
+ if self.lava_run:
+ self.send_to_lava(data)
+
+ def send_to_lava(self, data):
+ cmd = 'lava-test-case {} --result {}'.format(data['test_case_id'], data['result'])
+ if data['measurement']:
+ cmd = '{} --measurement {} --units {}'.format(cmd, data['measurement'], data['units'])
+ self.logger.debug('lava-run: cmd: {}'.format(cmd))
+ subprocess.call(shlex.split(cmd))
+
def dict_to_json(self):
# Save test results to output/test_id/result.json
with open('%s/result.json' % self.test['test_path'], 'w') as f:
@@ -774,21 +864,36 @@ def get_args():
parser.add_argument('-e', '--skip_environment', dest='skip_environment',
default=False, action='store_true',
help='skip environmental data collection (board name, distro, etc)')
+ parser.add_argument('-l', '--lava_run', dest='lava_run',
+ default=False, action='store_true',
+ help='send test result to LAVA with lava-test-case.')
+ parser.add_argument('-O', '--overlay', default=None,
+ dest='overlay', help=textwrap.dedent('''\
+ Specify test plan ovelay file to:
+ * skip tests
+ * amend test parameters
+ * add new tests
+ '''))
+ parser.add_argument('-v', '--verbose', action='store_true', dest='verbose',
+ default=False, help='Set log level to DEBUG.')
args = parser.parse_args()
return args
def main():
+ args = get_args()
+
# Setup logger.
logger = logging.getLogger('RUNNER')
- logger.setLevel(logging.DEBUG)
+ logger.setLevel(logging.INFO)
+ if args.verbose:
+ logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s: %(levelname)s: %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
- args = get_args()
logger.debug('Test job arguments: %s' % args)
if args.kind != "manual" and args.target is None:
if os.geteuid() != 0:
diff --git a/automated/utils/upload-to-artifactorial.sh b/automated/utils/upload-to-artifactorial.sh
index 1cb7fcb..234c625 100755
--- a/automated/utils/upload-to-artifactorial.sh
+++ b/automated/utils/upload-to-artifactorial.sh
@@ -27,7 +27,7 @@ fi
if which lava-test-reference; then
# If 'ARTIFACTORIAL_TOKEN' defined in 'secrects' dictionary defined in job
# definition file, it will be used.
- lava_test_dir="$(find /lava-* -maxdepth 0 -type d 2>/dev/null | sort | tail -1)"
+ lava_test_dir="$(find /lava-* -maxdepth 0 -type d -regex '/lava-[0-9]+' 2>/dev/null | sort | tail -1)"
if test -f "${lava_test_dir}/secrets" && grep -q "ARTIFACTORIAL_TOKEN" "${lava_test_dir}/secrets"; then
# shellcheck disable=SC1090
. "${lava_test_dir}/secrets"
@@ -43,7 +43,7 @@ if which lava-test-reference; then
fi
if echo "${return}" | grep "$(basename "${ATTACHMENT}")"; then
- lava-test-reference "test-attachment" --result "pass" --reference "https://archive.validation.linaro.org/artifacts/${return}"
+ lava-test-reference "test-attachment" --result "pass" --reference "${return}"
else
echo "test-attachment fail"
which lava-test-case && lava-test-case "test-attachment" --result "fail"