summaryrefslogtreecommitdiff
path: root/cpu_ref/rsCpuScript.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Delete simple reduction implementation.David Gross2016-06-101-70/+11
| | | | | Bug: 27298560 Change-Id: I8c3d568e98aaf0b7d86881c985d13ed5b8e95338
* Avoid breaking on dead launch optionsYang Ni2016-05-061-4/+2
| | | | | | | | | | | | | | | | Bug: 28463187 Launch options array[2-4] are not initialized by the support library in the current SDK. They may have arbitrary values that invalidate the checks that this CL is removing, and cause a kernel launch to bail out unnecessarily. This CL removes those checks, since the array.*Start and array.*End fields in the launch options are not used anywhere in the current runtime. Change-Id: Ib8a2e551619f770b402f569acbde635ee047675a
* Avoid accessing TLS in rsClearObject()Yang Ni2016-04-061-2/+1
| | | | | | | | | | | | | | | | | | | Bug: 27874893 Bug: 27925095 rsClearObject() may be called on rsContextDestroy() in the JNI thread, where TLS is not initialized. This also reverted Icca50fade1199b6f530f963e9e694366b7d8cf67 that made rsContextDestroy() go through the FIFO. rsContextDestroy() must happen off the FIFO, since it joins the FIFO consuming thread. Both the rsClearObject() change and the rsContextDestroy() revert need to go together to make RenderScript and Camera CTS tests pass. Hence this single CL for both changes. Change-Id: I5f1d91a4cc1ce9bf2b3386fbef6f1171638b5266 (cherry picked from commit ade3137c22dd91694742145c2d5fe9d6bae17516)
* Merge "Multithreaded execution of certain general reduction kernels; ↵David Gross2016-03-291-3/+4
|\ | | | | | | reduction test overhaul." into nyc-dev
| * Multithreaded execution of certain general reduction kernels; reduction test ↵David Gross2016-03-291-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | overhaul. A reduction kernel is eligible for multithreaded execution if it has a combiner function and it is launched over a 1D iteration space. Note: Properties debug.rs.reduce-accum and debug.rs.reduce-split-accum are added for debugging multithreaded reduction. The following changes are made to reduction tests in RsTest: - Overhaul the test framework -- now data-driven, and can execute the same test multiple times with different seeds and input sizes, features separate sets of quick correctness tests, full correctness tests, and performance tests. (Performance tests are not run by default.) - Report timing information for test execution. - Report more information for fz* kernel testing. - Remove dp kernel testing -- this involved floating-point arithmetic which is not guaranteed to produce identical results between java and rs or for different rs multithreaded executions. - Add sumgcd kernel testing. This is intended to be representative of a compute-heavy kernel. - findMinAndMax kernel testing must compare cell value not cell index -- two or more cells might have the same min or max value, and java and various rs multithreaded executions are not guaranteed to find the same cell. - Fix bug in findMinAndMax kernel's combiner function. (It behaved incorrectly when operating on an accumulator datum that has been initialized but never passed to the accumulator function.) - RsTest now requests largeHeap. Bug: 27299475 Change-Id: I58f99c21389dbae5c8e3ad85d98700dc165664bb
* | Fixed intrinsics inside a script groupYang Ni2016-03-221-2/+2
|/ | | | | | | | | | | | | | | | Bug: 27439842 An RS intrinsic relies on RSExpandKernelDriverInfo.usr for the "this" pointer to the ScriptIntrinsic object. Need to to correctly set that field in a script execution for intrinsics. Also fixed a bcc command-line option. Added a test of script group with intrinsics to ImageProcessing GroupTest(native). Change-Id: Ia8b45bca3396ac987ba167fd1709ee89123a2557 (cherry picked from commit 7a106adbb5e370b544f2cbf5b83c063560c81b57)
* Better handle error log and nullptr reference.Miao Wang2016-02-251-0/+6
| | | | | | | Bug: 27367378 Change-Id: Ide29c702d7a70dfe087ddc600d3fd17279223196 (cherry picked from commit 68e00893f7400d1ce71a9ed92365ffdfd6730c03)
* Add a new libclcore_g library which contains debug info.Verena Beckham2016-02-111-0/+4
| | | | | | | | | | | | | | | | | Add a new libclcore_g.bc which is functionally equivalent to libclcore.bc but is compiled with debug information and -O0. To achieve this some allocation functions had to be written in C, because they were previously available in LLVM IR without debug information. The RenderScript cts has been run to verify these changes, both as it is and forcing it to link with the new libclcore_g library. Both runs show no regressions. Signed-off-by: Verena Beckham <verena@codeplay.com> (cherry picked from commit fb99e0f905b0f73a505c7900b434531ce7c3e2e5) Change-Id: I64c82ce6f571e766c3c607e926326040dff8257c
* Support for general reduction kernels.David Gross2016-01-191-5/+101
| | | | | | | | | | | | | | Requires coordinated change in frameworks/base. Requires coordinated change in frameworks/compile/libbcc in order for RsTest to run. At present, general reduction kernels are run single-threaded. Also: Remove dead struct field MTLaunchStructForEach::sig. Bug: 23535724 Change-Id: Ice17ccf20a902f8a106eaa62ec071d46e3c0ad8c
* Add a basic implementation of the reduce kernel API to the CPUMatt Wala2015-08-141-102/+121
| | | | | | | | | | reference implementation. Bug: 22631253 For now, this just runs a serial reduction on one thread. Change-Id: I34c96d24bb6f44274de72bb53160abcf79d143b0
* Add a flag to the API to specify -O0 on the bcc command line.verena beckham2015-07-171-2/+18
| | | | | | | | | Add a flag RS_CONTEXT_OPT_LEVEL_0 which sets a field mOptLevel in the Context to 0 when calling bcc. Using this flag will result in an object file that is easier to debug. Change-Id: I9673506710cc9f34c415b694fe5d6bc7e967f1db Signed-off-by: verena beckham <verena@codeplay.com>
* Avoid overwriting shared library file that is openYang Ni2015-06-291-4/+2
| | | | | | | | | | | b/21949580 Writing different contents to an existing .so file, which is currently open, may corrupt its globals and code. Choose a different file name instead. Change-Id: I3e649b09a55b43339283aa1c46f2844c66434c17 (cherry picked from commit 9844cffc8af28c4829012bc0c48f85d04b671f88)
* Skip the checksum if we have precompiled code on the /system/ partition.Stephen Hines2015-06-221-8/+15
| | | | | | | | | | | Bug: 20894664 The system partition is read-only, and can/should be compiled correctly during the offline creation of the system image. Since we cannot replace these precompiled blobs (short of app update/OTA), there is no reason or correct way to validate/replace the checksum. Change-Id: Ia66bfdbe178bf215e146c3699f5bc7804222e978
* Merge "Remove dead uses of RSCompilerDriver and of compiler callbacks."David Gross2015-05-291-30/+0
|\
| * Remove dead uses of RSCompilerDriver and of compiler callbacks.David Gross2015-05-291-30/+0
| | | | | | | | Change-Id: Ibe8725074724b75e35c25a404daaba07ffbca2ab
* | Fix memory leak when rs invoke functionYong Chen2015-05-271-0/+4
|/ | | | | Change-Id: I17c701dfda5b3031c1fc50bfc186e4b7f8b7ac1e Signed-off-by: Yong Chen <yong.a.chen@intel.com>
* Merge changes from topic 'global_info'Stephen Hines2015-05-221-0/+4
|\ | | | | | | | | | | * changes: Update RS driver to support extraction of global variable properties. Use "override" instead of "virtual" when replacing methods.
| * Update RS driver to support extraction of global variable properties.Stephen Hines2015-05-221-0/+4
| | | | | | | | | | | | | | | | | | | | | | Bug: 20306487 This patch adds some new enums to classify properties (such as "static", "constant", and "pointer") for global variables. The reference driver is also extended to provide methods to examine these properties (when the bitcode is compiled with bcc). Change-Id: I331756f8a8990caf5ebdf85599060434a7cfdcb7
* | Don't use TEMP_FAILURE_RETRY on close in frameworks/rs.Elliott Hughes2015-05-151-1/+1
|/ | | | | Bug: http://b/20501816 Change-Id: I63a7c690bc5bde3dc1354f6e04ad8d32b3b43015
* Merge "Add RSGlobalInfoPass information to RS driver."Jason Sams2015-05-111-2/+35
|\
| * Add RSGlobalInfoPass information to RS driver.Stephen Hines2015-05-051-2/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: 20306487 This change enables vendor drivers to configure support for including additional information about global variables in the emitted CPU code. This information includes the number of total global variables, the names of these variables, the addresses of these variables and the sizes of these variables. The driver can also select whether the information includes constant (immutable) globals or not. The reference driver defaults to embedding information about each of the existing, non-constant global variables. Change-Id: I1e55fc3f08e518f04eeee3e4f9dc7b6ea3b80d7c
* | Add a way to link against different driver names.Stephen Hines2015-05-061-1/+2
|/ | | | | | | | | | The existing linker path hard-coded "-lRSDriver" into the command line, but this won't work for partner drivers that have a different implementation loaded. In order to still properly handle use of the CPU driver, this needs to change depending on whether we actually loaded an OVERRIDE_RS_DRIVER or not. Change-Id: I0c4a4f12f5db819b234952bc8f364ac6300f147b
* SetError if forEachMtlsSetup fails sanity checkPirama Arumuga Nainar2015-04-281-7/+35
| | | | | | | | bug 19866850 Explicitly set error when a kernel launch fails. Change-Id: If42419f3cf7557c524afc5bb27a0753460ca7e4e
* Code cleanup: Remove unused typedefs and declarations.Logan Chien2015-04-211-2/+0
| | | | Change-Id: I48dafb2bc1dc335a52b289db2981397251f673c8
* Merge "Dedup checksum calculation routines"Yang Ni2015-04-161-49/+45
|\
| * Dedup checksum calculation routinesYang Ni2015-04-161-49/+45
| | | | | | | | | | | | | | | | | | | | | | | | I introduced a separate routine to cacluate checksum for ScriptGroup in my previous CL, in addition to the one we use for regular scripts. This CL removes the new one and uses the old one. While I am on it, I made some other minor changes, e.g., changing mBuildChecksum in RsdCpuScriptIml from char* to uint32_t, and a few other minor cleanups in ScriptGroup2 implementation. Change-Id: I168fdbb4e7bd14f1549a687e7b0d0ca6dd4da866
* | Fix allocation-less launches.Jason Sams2015-04-161-0/+4
|/ | | | Change-Id: I6d6b46c55f3e88a810ebe51def3ebaccb1fd3fa2
* Compute checksum for script group generated codeYang Ni2015-04-141-28/+30
| | | | Change-Id: I5f469266fd11b5031d1357f356ac40e00f5c0348
* Wrap TEMP_FAILURE_RETRY around system callsPirama Arumuga Nainar2015-03-251-47/+14
| | | | | | | | | | | | | | BUG 19934827 Wrap TEMP_FAILURE_RETRY around system calls that can return EINTR (waitpid, close). Refactor fork/exec flows in various places into a utility function and log errors so we can better understand failures in the test server. Fix a small use-after-free issue in ScriptGroups. Change-Id: I60b192f83c395a13c27cd6bd2289c44132b84791
* Runtime support for Script Group as single moduleYang Ni2015-03-101-0/+4
| | | | | | | | | | | Also made two other cleanups: - Changed KernelID/InvokeID into IDBase in class Closure Rather than having two fields in class Closure, one of type ScriptKernelID and the other InovkeID, use a single field of the common base class IDBase. Added a boolean field to indicate whether it is kernel or invoke, since -fno-rtti is on. - Removed user pointer from CPU closure Change-Id: I5553f86b2e58325f85649078d48685a38f12d62f
* Add build fingerprint and ensure match on .so loadPirama Arumuga Nainar2015-03-031-21/+132
| | | | | | | | | | | | | | | | | bug 19216507 If ro.debuggable system property is set, - Compute the Adler32 checksum of bitcode, compiler arguments, bcc, libclcore files. - On shared object load, check that there is an embedded checksum value in .rs.info and it matches the value computed in the previous step. The .so is not loaded if the checksums don't match. - If invoking bcc, pass the checksum as an argument. If ro.debuggable is not set, a constant checksum is added to .rs.info. But it is never checked. Change-Id: I0a9d16b34148b748daf744007a8515511714a5a5
* Moved class ScriptExecutable to its own moduleYang Ni2015-02-201-562/+4
| | | | | | | | b/19283946 This move also included the related class SharedObjectUtils. Change-Id: Iefd587b659c4ad99340c330955b41cd92df45563
* Remove STL references from header filesYang Ni2015-02-191-1/+1
| | | | | | | | | b/19148482 Replaced std::string with android::String8, and std::pair with android::renderscript::Pair, in header files. Change-Id: I20ac1a3b7a019e5eee12fac46ad6adf64d850459
* Move bcc::getCommandLine to fw/rsPirama Arumuga Nainar2015-02-191-3/+13
| | | | | | | | | libbcc had a utility function to concatenate string arguments. This patch moves that function to frameworks/rs. The function will no longer be needed in libbcc once we move all the checksum/cache invalidation logic to frameworks/rs. Change-Id: I2b1c15c2763d90d7b099e41257bb72f200680943
* Runtime support for invocables in ScriptGroupsYang Ni2015-02-041-0/+1
| | | | | | This also includes support for InvokeID Change-Id: I5b59df166ea30b309b8dd9623825ac0e72d03856
* Merge "Make rsContext be able to have info about the path of native libs for ↵Miao Wang2015-02-051-7/+11
|\ | | | | | | 64bit Renderscript compat lib."
| * Make rsContext be able to have info about the path of native libsMiao Wang2015-02-031-7/+11
| | | | | | | | | | | | | | | | | | for 64bit Renderscript compat lib. - Native lib path stored in Java and queried from JNI. - Then set to Context during context creation. Change-Id: I3c997cf849efb7b9a0b0ac35d5b62289d70e7434
* | Runtime support for compiler kernel fusion.Yang Ni2015-02-021-10/+9
| | | | | | | | | | | | The runtime will start a seperate process to call the new bcc to fuse kernels. Change-Id: Ia73ea917a126a5055ec97f13d90a5feaafd6a2f5
* | Remove STL references from header filesYang Ni2015-02-021-55/+106
|/ | | | | | b/19148482 Change-Id: I2138664d8ef51d15da23be69ac7d224f30224f42
* Mark scripts as threadable or notPirama Arumuga Nainar2015-01-281-2/+30
| | | | | | | | | bug 19095896 Read embedded flag in .rs.info and use it to mark Scripts as threadable. In compat lib path, scripts are always threadable. Change-Id: I85a3753ffae788dbdec5fd130c20581790c4ee07
* add array launch support.Jason Sams2015-01-261-37/+62
| | | | Change-Id: I66cd89b5b44eafa92f391708a06464cd7cdde3ed
* Merge "Read pragma keys and values from .rs.info"Pirama Arumuga Nainar2015-01-261-4/+62
|\
| * Read pragma keys and values from .rs.infoPirama Arumuga Nainar2015-01-261-4/+62
| | | | | | | | | | | | | | | | | | | | | | bug 18322681 Pragmas were not embedded into shared objects in the compat lib path because they aren't used. Along with the sibling change in libbcc, this patch stores and retrieves pragmas from the .rs.info varible embedded in shared object files. Change-Id: Iebbf9a79e715a5a4a1ee0962a08386fa78516c6b
* | Always recompile a script when using the debug context.Tim Murray2015-01-231-1/+1
|/ | | | Change-Id: Icea9834805702c20c250d2dec48cdf8f11a0acfb
* Made shared lib routines public.Yang Ni2015-01-221-117/+115
| | | | | | | So that we can reuse the shared library create and loading routines for script groups. Change-Id: I9f35d8efc4be686c92141ab770f78f35ea3a02c1
* Created a new class to represent executable.Yang Ni2015-01-211-172/+112
| | | | | | | | | The new class represents executables created from shared objects, which allows query exported fields, for each, etc. This allows this functionality to be shared with other part of the system besides CPU script, e.g., script groups. Change-Id: I5223c329bdb70085eb1dce7aab5ec91626f579f4
* Do not check for .so in /system in native modePirama Arumuga Nainar2015-01-201-0/+2
| | | | | | | | | | | Bug: 18322681 In native mode, the .so file will be present only in the app specific cache directory. Any match in /system/lib is merely due to name clash with another app. Shared libraries in /system/lib are relevant only in compatibility mode. Change-Id: I2713820c76b63bd69f726e50f0a39974661c05f1
* Remove linkloader from frameworks/rs.Stephen Hines2015-01-201-277/+24
| | | | | | | | | | | | | | | | Bug: 18322681 Now that we have switched completely to the new shared library object loading path, we can safely remove the legacy linkloader path. In frameworks/rs, this removes the actual linkloader code, as well as all helper calls into linkloader. This change also coalesces code paths between the support library version of RS and the native version of RS, since they both now depend on a similar shared library loader. A missing call to dlclose() on Script teardown is also added on the native library path. Change-Id: Ie5cc152d93f5e75383f7c21a4523579cfae8823f
* Cleanup of ForEachParams in cpu refJason Sams2015-01-201-53/+29
| | | | Change-Id: I8cc51915b2a605c240d98e3010619b741a13bae2
* Turn on .so path by defaultPirama Arumuga Nainar2015-01-161-20/+2
| | | | | | | | | Bug: 18322681 If there are problems in the .so loading path, you can turn it off by having is_skip_linkloader() return false. Change-Id: I31ae2d8a65f70005f4d749f9ecbe55ae6f153d8c