summaryrefslogtreecommitdiff
path: root/cpu_ref
AgeCommit message (Collapse)Author
2017-08-10Mark RS libs as VNDK-SPJiyong Park
The RS libs are used by RS HAL implementations which are Same-process HALs. In order to make the RS libs available to the HALs, they are marked as VNDK-SP. Bug: 64425518 Test: BOARD_VNDK_VERSION=current m -j libRSDriver.vendor Test: BOARD_VNDK_VERSION=current m -j libRS_internal.vendor Test: BOARD_VNDK_VERSION=current m -j libRSCpuRef.vendor Change-Id: Ia5c9d59b98b6a910a8cb76be1e823da542ca043a
2017-07-11Merge "Make gemmlowp able to run with multi-threads." am: f107b0ce6d am: ↵Miao Wang
fbea329269 am: 701e5d0b8b Change-Id: I1dab75f1bd2073ad396cecda3eb571b490b4d871
2017-07-11Merge "Make gemmlowp able to run with multi-threads."Miao Wang
am: f107b0ce6d Change-Id: I570acc44afadbe68ef2dcfe2cd2b73ce0a36b7a3
2017-07-11Make gemmlowp able to run with multi-threads.Miao Wang
- The most recent gemmlowp rebase changed the default value of MaxNumThreads from 0 to 1, which means by default it is running single-threaded. - This change reset MaxNumThreads to 0 for BNNM Intrinsic. Exempt-From-Owner-Approval: Only current owner is this a mailing list android-renderscript-dev+review@google.com And mailing lists aren't currently supported. Test: mm Test: Verified the performance increase is about 2~3X on sailfish. Test: All BLAS CTS pass Change-Id: I01dda1915f4d427547dbd907c4533771b7669593
2017-06-21ld.mc uses libcompier_rt and libRSDriver from the vndk-sp directoryJiyong Park
am: da43d5866f Change-Id: If4d31ee73f7229c18bff98ddba07a09bb22bf261
2017-06-21ld.mc uses libcompier_rt and libRSDriver from the vndk-sp directoryJiyong Park
When ld.mc links the compiled bc, it now correctly uses libcompiler_rt and libRSDriver from the vndk-sp directory. This is because when the bc is loaded inside the app process, it is provided with the libs in vndk-sp directory. Bug: 62848943 Test: Renderscript app (e.g. CameraScript) runs well. Test: logcat | grep ld.mc shows /system/lib/vndk-sp/libcompiler_rt.so and --library-path=/system/lib/vndk-sp Change-Id: Ib6354081af797f395ff042ebe87731311d768784
2017-06-14bcc vendor plugin must be loaded from the sphal namespaceJiyong Park
am: 8d421ca1f0 Change-Id: Ia85eff89e376f09fac5cf203b2f6bf16b558604d
2017-06-13bcc vendor plugin must be loaded from the sphal namespaceJiyong Park
bcc loads vendor plugin in its address space. Since bcc is a system process, the vendor plugin must be loaded from the sphal namespace where VNDK-SP libraries are provided. This is to ensure that the vendor plugin is linked against to the VNDK-SP version of libraries. It also prevents the vendor plugin from using non-VNDK-SP libs such as libLLVM.so. Bug: 62517583 Test: a sample renderscript app (CameraScript) runs well Change-Id: Id014cc4f3ea2d3980b11ef219422457e356124a5
2017-06-09Merge "Cleaned up debug variants of libclcore.bc" am: a071ccf642Yang Ni
am: 15b42f5918 Change-Id: Icc96540c7002931893b681eb2cc7fe3af4527c57
2017-06-09Cleaned up debug variants of libclcore.bcYang Ni
Bug: 38418449 Bug: 62028512 Bug: 37955136 Two major changes: (More motivation/explanation/discussion are in the tagged bugs.) 1) Added the fourth variant of libclcore.bc, libclcore_debug_g.bc, which both gets compiled with -g -O0 and provides runtime range checking. This is needed for debug context related CTS tests to pass when they are compiled with flags -g -O0. 2) Removed Element setters and getters defined under RS_G_RUNTIME. The removed code is neither necessary or correct. After the RS_G_RUNTIME specific setter/getter implementation was removed, a bug in the default setter/getter implementation showed up with -O0 compilation as described in Bug 38418449, which caused segfaults due to mismatch argument type between callers and callees of rsSetElementAtImpl_<T>() and __rsAllocationVStoreImpl_<T>(). To fix it, I adjusted argument type in rsSetElementAtImpl_<T>() and __rsAllocationVStoreXImpl_<T> defined in frameworks/rs/driver/runtime/ll64/allocation.ll to match clang- generated code from frameworks/rs/driver/runtime/rs_allocation.c. E.g., char4 was <4 x i8> in ll64/allocation.ll, but was i32 in code generated by clang. This caused segfaults on calls to the affected functions in the final arm64-v8a code. short2 and half2 also have the issue and fix. Test: CTS on Angler and X86_64: Test: With tests compiled using -g -O0 and system property debug.rs.debug set to 1; Test: With tests compiled using -g -O0; Test: With tests compiled using the default flags; Test: With tests compiled using the default flags and system property debug.rs.debug set to 1. Test: LLDB tests on X86_64 with no additional failures than those are known to fail. Change-Id: I23bd9ab6c7648d2762a77977f08ad3f20e31941c
2017-05-19Fix crashing CPU driver runtime on null input allocationI-Jui (Ray) Sung
Part of the CPU driver runtime assumed non-null input allocation and blindly dereferenced the handle of the input allocation. This caused crashes when running RsBalls, in which a null input allocation was given to rsForEach(). This CL fixes the crashing problem by guarding those codes dereferencing the input allocation with null pointer checks. Bug: 37754476 Test: CTS with and without debug.rs.debug=1, RsBalls Change-Id: I8bec116fa8b846c6801353234e24b07d7a0fbbf4 (cherry picked from commit efc33a921195c313007d9471efcd00cc825b0055)
2017-05-19Merge "Fix crashing CPU driver runtime on null input allocation" into oc-devI-Jui (Ray) Sung
am: 2397fd9175 Change-Id: Ic2964c0ca939ea22db1f8ab962a97bb945bd4a3a
2017-05-19Fix crashing CPU driver runtime on null input allocationI-Jui (Ray) Sung
Part of the CPU driver runtime assumed non-null input allocation and blindly dereferenced the handle of the input allocation. This caused crashes when running RsBalls, in which a null input allocation was given to rsForEach(). This CL fixes the crashing problem by guarding those codes dereferencing the input allocation with null pointer checks. Bug: 37754476 Test: CTS with and without debug.rs.debug=1, RsBalls Change-Id: I8bec116fa8b846c6801353234e24b07d7a0fbbf4
2017-05-18Convert more of libRS* to Android.bpColin Cross
See build/soong/README.md for more information. This reapplies If935ce5cc04da7801210acb49f0a9ed15fcf5889 with the support modules disabled for unbundled builds to avoid conflicts with the prebuilts in prebuilts/sdk/renderscript. Also moves OVERRIDE_RS_DRIVER to be set for libRS_internal. Test: m -j checkbuild Change-Id: If935ce5cc04da7801210acb49f0a9ed15fcf5889 Merged-In: Ia98501a471ef5f090446c9fbe2dd1d3422021a6f (cherry picked from commit e5b2262c7337d13cdfd6852614c1743c19381164)
2017-05-18Reconcile oc-dev-plus-aosp with masterColin Cross
Update oc-dev-plus-aosp with the changes between If935ce5cc04da7801210acb49f0a9ed15fcf5889 and Ia98501a471ef5f090446c9fbe2dd1d3422021a6f. Change-Id: I3f613064b7406bad98644de9c1a9833cf4af324a Merged-In: Ia98501a471ef5f090446c9fbe2dd1d3422021a6f
2017-05-17Convert more of libRS* to Android.bpColin Cross
See build/soong/README.md for more information. Test: m -j checkbuild Change-Id: If935ce5cc04da7801210acb49f0a9ed15fcf5889 Merged-In: If935ce5cc04da7801210acb49f0a9ed15fcf5889 (cherry picked from commit 3764dacb3c3a32a38e2539095b00c13a4daf23c8)
2017-05-08Use different .so names in a debug contextYang Ni
Bug: 37670543 Bug: 36006390 Bug: 37679566 Bug: 37636434 In debug context, a script is forced to be recompiled every time it is initialized. To avoid the same .so file being written to by another thread, while it is being loaded and used by one thread, do not save the .so file. Delete it right after loading it. Test: RefocusTest and RSTest (including ScriptGroup2 tests) with debug.rs.debug set to 1 and CTS on Angler Change-Id: If63e3d21e3d9abd007a66e0ec79c9e6f1c9f13a0 (cherry picked from commit a845c35880f8434619ac299e8af47aa6a5049e8d)
2017-05-04Use different .so names in a debug contextYang Ni
Bug: 37670543 Bug: 36006390 Bug: 37679566 Bug: 37636434 In debug context, a script is forced to be recompiled every time it is initialized. To avoid the same .so file being written to by another thread, while it is being loaded and used by one thread, do not save the .so file. Delete it right after loading it. Test: RefocusTest and RSTest (including ScriptGroup2 tests) with debug.rs.debug set to 1 and CTS on Angler Change-Id: If63e3d21e3d9abd007a66e0ec79c9e6f1c9f13a0
2017-04-27Append null terminator to fullPath variable and change sizeof(type) toMichael Butler
sizeof(*name) for clarity. Fixes minor issues addressed in aosp/380576 Bug: 32511607 Test: mma, cts, vts Change-Id: I8f2eca4bcc8c93671668a542dc6117df58979b56 (cherry picked from commit 94979da78cf5762c609a04dd42527edae03719a8)
2017-04-27Append null terminator to fullPath variable and change sizeof(type) toMichael Butler
sizeof(*name) for clarity. Fixes minor issues addressed in aosp/380576 Bug: 32511607 Test: mma, cts, vts Change-Id: I8f2eca4bcc8c93671668a542dc6117df58979b56
2017-04-25Fix clang-analyzer-security warnings for RenderScriptMichael Butler
Replace unsafe strcpy and strcat with bounded strlcpy and strlcat. Bug: 32511607 Test: mma, cts, vts Change-Id: I92bc8142f82eaf78f4465bf061871cad864c53b8 (cherry picked from commit ca451c3280b6265a9b79273b4bf89e121a050cab)
2017-04-21Merge "Fix clang-analyzer-security warnings for RenderScript" into oc-devMichael Butler
2017-04-20Fix clang-analyzer-security warnings for RenderScriptMichael Butler
Replace unsafe strcpy and strcat with bounded strlcpy and strlcat. Bug: 32511607 Test: mma, cts, vts Change-Id: I92bc8142f82eaf78f4465bf061871cad864c53b8
2017-04-19Merge "[debugger] make the ScriptGroup inspection point weak" into oc-devTreeHugger Robot
2017-04-19[debugger] make the ScriptGroup inspection point weakLuke Drummond
Breakpoints set on named ScriptGroups were never resolved by the debugger due to aggressive optimizations by clang in release builds. `debugHintScriptGroup2`, used by the debugger to inspect ScriptGroup compilations at `optlevel == 0`, had its inner loop optimized away completely as there are no visible side effects (where the ALOGV calls are actually empty macros). This was fixed by using an `__asm__ __volatile__ ("")` construct as per the gcc docs: noinline This function attribute prevents a function from being considered for inlining. If the function does not have side-effects, there are optimizations other than inlining that causes function calls to be optimized away, although the function call is live. To keep such calls from being optimized away, put `asm ("")` in the called function, to serve as a special side-effect. (see also https://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes) Although preventing the inner loop from being optimized away is enough to get the function called, it is apparent that clang only sets up the call frame with arguments that it can see are used inside the function body, meaning that we had garbage values for `groupName` and `groupNameSize` unless the symbol is weakly visible so that the compiler can no longer introspect that the arguments are ignored. Test: aosp_x86_64-eng (emulator) - RsTest (32-bit, 64-bit) - cts -m RenderscriptTest - rs/lldb (required various other pending CLs) Bug: 23535482 Change-Id: I24e23895e67d1ede8bf8e671165a3a6843a11082 Signed-off-by: Luke Drummond <luke.drummond@codeplay.com> (cherry picked from commit 6e64e51a6a252bd88acfa72dac8372c863f524e0)
2017-04-19Merge changes from topic 'rsDebugVersionInfo' into oc-devTreeHugger Robot
* changes: Update tests to reflect recent changes in lldb upstream and librs Add .rs.info versionInfo parser to the cpu_ref driver
2017-04-19Merge "[debugger] make the ScriptGroup inspection point weak"David Gross
2017-04-17[debugger] make the ScriptGroup inspection point weakLuke Drummond
Breakpoints set on named ScriptGroups were never resolved by the debugger due to aggressive optimizations by clang in release builds. `debugHintScriptGroup2`, used by the debugger to inspect ScriptGroup compilations at `optlevel == 0`, had its inner loop optimized away completely as there are no visible side effects (where the ALOGV calls are actually empty macros). This was fixed by using an `__asm__ __volatile__ ("")` construct as per the gcc docs: noinline This function attribute prevents a function from being considered for inlining. If the function does not have side-effects, there are optimizations other than inlining that causes function calls to be optimized away, although the function call is live. To keep such calls from being optimized away, put `asm ("")` in the called function, to serve as a special side-effect. (see also https://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes) Although preventing the inner loop from being optimized away is enough to get the function called, it is apparent that clang only sets up the call frame with arguments that it can see are used inside the function body, meaning that we had garbage values for `groupName` and `groupNameSize` unless the symbol is weakly visible so that the compiler can no longer introspect that the arguments are ignored. Test: aosp_x86_64-eng (emulator) - RsTest (32-bit, 64-bit) - cts -m RenderscriptTest - rs/lldb (required various other pending CLs) Bug: 23535482 Change-Id: I24e23895e67d1ede8bf8e671165a3a6843a11082 Signed-off-by: Luke Drummond <luke.drummond@codeplay.com>
2017-04-14Revive forEachDstAtop implementations for NEON/ASIMDI-Jui (Ray) Sung
ScriptIntrinsicBlend's forEachDstAtop had broken NEON and ASIMD implementations and were bypassed. This CL fixed these two and turned them back on in RsdCpuScriptIntrinsicBlend::kernel(). Bug: b/22047392 Test: CTS and RsTest on Angler Change-Id: Ifa41d74222606f1c04b7b4e3fe1b43eb932ead89 (cherry picked from commit e0c6f1d59fa8e995cdd80a41cc8ed1d6af35652e)
2017-04-14Merge "Revive forEachDstAtop implementations for NEON/ASIMD"I-Jui (Ray) Sung
2017-04-14Revive forEachDstAtop implementations for NEON/ASIMDI-Jui (Ray) Sung
ScriptIntrinsicBlend's forEachDstAtop had broken NEON and ASIMD implementations and were bypassed. This CL fixed these two and turned them back on in RsdCpuScriptIntrinsicBlend::kernel(). Bug: b/22047392 Test: CTS and RsTest on Angler Change-Id: Ifa41d74222606f1c04b7b4e3fe1b43eb932ead89
2017-04-13Add .rs.info versionInfo parser to the cpu_ref driverLuke Drummond
This is used by lldb to check for a versioning mismatch between the frontent and backend, but is not used by libRS. However, libRS should not fail in its presence, so this CL enables the runtime to skip this section if it is present. This field is not checked for by the compatibility lib. Test: aosp_x86_64-eng (emulator) - libbcc/tests - RsTest (32-bit, 64-bit) - cts -m RenderscriptTest - rs/lldb (required various other pending CLs) Bug: 23535482 Change-Id: I3056dd08e7e14ff1094ead60756fd568131bcf4d Signed-off-by: Luke Drummond <luke.drummond@codeplay.com> (cherry picked from commit 341f30630d310f52297cf2d9867618cb7a1e8969)
2017-04-12Add .rs.info versionInfo parser to the cpu_ref driverLuke Drummond
This is used by lldb to check for a versioning mismatch between the frontent and backend, but is not used by libRS. However, libRS should not fail in its presence, so this CL enables the runtime to skip this section if it is present. This field is not checked for by the compatibility lib. Test: aosp_x86_64-eng (emulator) - libbcc/tests - RsTest (32-bit, 64-bit) - cts -m RenderscriptTest - rs/lldb (required various other pending CLs) Change-Id: I3056dd08e7e14ff1094ead60756fd568131bcf4d Signed-off-by: Luke Drummond <luke.drummond@codeplay.com>
2017-04-11Remove libgui and libui dependency from libRSCpuRefMiao Wang
Bug: 34396220 Bug: 37067080 Test: mm Change-Id: Ic35879e341f1a4357c6a8e9bdec8312d2507223f
2017-03-23Merge "Removed incorrect asserts" am: 10657f54a0 am: 8607bbce71Yang Ni
am: b6bc4300ff Change-Id: Iee45b66f9f5472fe0123a5560d9af9f03a220280
2017-03-23Merge "Removed incorrect asserts"Yang Ni
2017-03-22Removed incorrect assertsYang Ni
Bug: 32278517 RsExpandKernelDriverInfo.outLen is never initialized for any foreach kernel or a script group. The value does not even apply to a script group. There should be no assert on it. Test: CTS on x86 emulator and checked device logcat no longer has the asserts in question. Change-Id: Ib0c25f9978ef5364e8ef0f438243dae14688a634
2017-03-17Stop making RS modules for PDK, as libmediandk and libSPIRV are notMiao Wang
available in PDK. Bug: 36231835 Test: mm Merged-In: I6e425dd8afd8f7df09de7b245263519d076c9b53 Change-Id: I6e425dd8afd8f7df09de7b245263519d076c9b53
2017-03-17Stop making RS modules for PDK, as libmediandk and libSPIRV are notMiao Wang
available in PDK. Bug: 36231835 Test: mm Change-Id: I6e425dd8afd8f7df09de7b245263519d076c9b53
2017-03-15resolve merge conflicts of 902d1ab7 to masterMiao Wang
Test: mm Change-Id: Ie8ebf3dc243c24924ba174b40d45029564dbbaff
2017-03-15Remove libutils.so dependency from libRSDriver, libRSCpuRef, and mostMiao Wang
parts of libRS_internal. NOTE: we're resolving dependencies to provide a model for vendors. For us, all this code is above the HAL, thus the dependencies are acceptable; whereas for vendors, their equivalent of this code is below the HAL, and so the dependencies are not acceptable. This CL resolves the libutils dependency by: - Implement the timings functions in android::renderscript namespace using NDK APIs, instead of using libutils counterparts. - Replace android::Vector and android::String8 by std::vector and std::string. - PROPERTY_VALUE_MAX is replaced as PROP_VALUE_MAX. This CL didn't resolve the libutils dependency of rsFont.cpp and rsDebugger.cpp in libRS_internal: The dependent functionality in rsDebugHelper.h is off by default, and only intended for use during development; and rsFont.cpp is part of graphics API which is not implemented below the HAL and is not used as a model by vendors. Additionally, this CL fixed the bug that mNodes was sorted in a decreasing order. Nodes in ScriptGroup should be executed in ascending order. The bad sort was only for support lib; so there was a previously-unknown bug in support lib implementation of ScriptGroup. Background: libutils contains a collection of things like Vector, String8, CallStack. It served the purpose similar to a STL library, when there was no stable STL implementation available in Android. And most importantly, it is not part of NDK. Support lib used to use our own implementations of android::Vector and android::String8, because it can only depend on NDK, similarly for the timing related functions. As part of the Treble requirements, native RS, including vendor version libRS_internal, libRSDriver, libRSCpuRef could only depend on NDK too. So we need to break the dependency on libutils. And since we now have reasonable support of STLs, we should use that instead. Bug: 34396220 Test: mm, and all CTS tests pass on Bullhead; RsTest and RSTest_CompatLib (both native and compat path) also pass. Change-Id: Ib9a37d16235c1dcd0f5bae3b95c374e394483c91
2017-03-14Enable c++14 and add dependency on libgui.Pawin Vongmasa
This is a required side-effect of making IGraphicBufferProducer a hybrid interface. Test: Compiles Bug: 33854657 Change-Id: I7ec1daed6c9ad1375d8c43c891eec67a0b803c79
2017-03-03fallout of cleaning-up libutils includesMathias Agopian
Test: run & compile Bug: n/a Change-Id: I310db0db93b199063fbce9b849155d91173e1a8f
2017-03-01resolve merge conflicts of 35f1149a to masterMiao Wang
Test: mm Change-Id: I710323b612cb7f6cce9e1250493c65148576e3c5
2017-02-28Remove libcutils dependency.Miao Wang
- Implement property_get using __system_property_get, remove dependencies on cutils/properties.h. - remove rsCompatibilityLib.cpp since it only contains propery_get, and it is now in rsCppUtils.cpp. - Disable ATRACE. The systrace is current done in Java level. If we want to do it in the driver, we need to have our own implementation similar to native/utils/trace.cc - Remove CC_LIKELY macro. Bug: 34396220 Test: build Change-Id: I6a6cbcfb2ca15b9d1f09b9ce0579d39fdbe98727
2017-02-28Merge "Remove RS_SERVER macros and references to unused headers." am: ↵Miao Wang
cb970436a9 am: 36b4ae4166 am: 3929984985 Change-Id: Ie55253f7fc5bee7de97532d616090b86907788e6
2017-02-28Remove RS_SERVER macros and references to unused headers.Miao Wang
- The RS_SERVER macros were intended to have a version of RenderScript running on the desktop. It has not fully worked for a very long time. Bug: 35473587 Test: build and CTS tests pass Change-Id: I0da3fc9d4601951442384d05f9dbecaeddeff8cc
2017-02-17Merge "Fix path for the flattened libbcc directory." am: c2dde9c69f am: ↵Jean-Luc Brouillet
775b6823de am: 02d7f59628 Change-Id: I9410ae992400848da44a9c5ef02f431f145232c2
2017-02-16Fix path for the flattened libbcc directory.Jean-Luc Brouillet
Just fix a few include paths. Bug: 34265954 Test: Compiled everything, ran a regular and a support lib app. Change-Id: I5d608e58734e50c0d2ac895290ea2a66ebe46345
2017-02-16fallout of splitting rect.h out of libandroid.Mathias Agopian
Some makefiles didn’t specify libui but included headers from it directly. It works because these headers are on the global include path. With this change, though, rect.h is not anymore (albeit exported from libui). Test: built and booted device Bug: 35164655 Change-Id: Ifdd2e8a75601856bf8bcb76fcf16b3f099ce2bdd