• Home
  • History
  • Annotate
  • only in /frameworks/rs/rsov/driver/
History log of /frameworks/rs/rsov/driver/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0370aee66c205e91252621c48975bf284723267e 22-Mar-2017 I-Jui (Ray) Sung <ijsung@google.com> resolve merge conflicts of 138bc67d to master

Test: m, RSoV LIT tests and RSoVTest on Angler

Change-Id: Iba9583c469359517ffd6534bcab6a6c06e5f87c7
c2f647a6c790cb1f4c86e50506c53cd912e725f6 04-Mar-2017 I-Jui (Ray) Sung <ijsung@google.com> Compiler and runtime support for global allocation metadata

On the compiler side, enumerate used global allocations, assign each used
global allocation a unique ID, and record the mapping in an OpString
in the result SPIR-V code. The ID is the index of the metadata
for the global allocation.

On the runtime side, added a new RSoVBuffer for metadata, and with code
marshaling them for the kernel according to the mapping reported by the
compiler. SPIRIT is linked against the driver for extracting metadata
out of the SPIR-V module.

Added a new testcase for global allocation metadata in RSoVTest.

Bug: 30964317
Test: RSoVTest on Angler, RSoV LIT Tests
Change-Id: I66b3cfa8b66ee2b60b984320900dbe2dc3d15f21
ndroid.mk
sovScript.cpp
sovScript.h
48e75305b3e7dd1aa04e88b1358fe61a2cfa5ef5 16-Mar-2017 Miao Wang <miaowang@google.com> resolve merge conflicts of a1e28f29 to master

Test: mm
Change-Id: I2224d1f14e6a030d231f490922b4661b034e6bf1
6df9ff9d7f59c7dd1fd94146f9d23e355b641647 15-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Enable c++14 and add dependency on libgui."
1b5eb6526603d0ad79637c4bf27f0757e3c2c93e 09-Mar-2017 Pawin Vongmasa <pawin@google.com> Enable c++14 and add dependency on libgui.

This is a required side-effect of making IGraphicBufferProducer a
hybrid interface.

Test: Compiles
Bug: 33854657
Change-Id: I7ec1daed6c9ad1375d8c43c891eec67a0b803c79
sovCore.h
a86230d58e3b7dc8ffce384ae14a641753c85807 13-Mar-2017 I-Jui (Ray) Sung <ijsung@google.com> Merge "Rename unused fields of RS base object handle in 64-bits" am: e9e262feb7 am: 8ff7370ca3
am: c29814e5de

Change-Id: I7b93ac14bfbe8293f56cff1a78ea74e37bf8bedc
e9e262feb728cd639ebb178c27b185a22b62c349 13-Mar-2017 I-Jui (Ray) Sung <ijsung@google.com> Merge "Rename unused fields of RS base object handle in 64-bits"
6d37f4e24c41dc9d345e9d8f525277b454c2ca3d 09-Mar-2017 Miao Wang <miaowang@google.com> resolve merge conflicts of 9e47bc9b to master

Test: mm
Change-Id: I6275179742eaaea8fe3884862305730aaf98fb0e
f750c530392a2895cb4b7e5b5e5e5259925b2015 04-Mar-2017 Miao Wang <miaowang@google.com> Implement USAGE_IO_INPUT related functions on top of NDK.

- Use AImageReader and AImage as the BufferQueue consumer.
- Bump RS_HAL_VERSION to 200 to prevent old GPU drivers to load, as
the structure of rsAllocation.h is modified. It is no longer safe to
allow the legacy drivers to access Allocation objects via out-of-date
header.

Bug: 34396220
Test: mm, CTS tests pass.
Change-Id: I0c9df2990ad4842719a24e23e69e007059e1c776
ndroid.mk
700e68883c4324c15b380ff6724249f39d4f498c 06-Mar-2017 I-Jui (Ray) Sung <ijsung@google.com> Rename unused fields of RS base object handle in 64-bits

Fields other than the first one (p) in RS_BASE_OBJECT are set in some
part of existing RS runtime, but is not used at all. However, removing
them is not desirable as size of RS_BASE_OBJECT is really part of the
ABI and thus if we change it, we are creating a new ABI variant here,
which is not always desirable.

For example, consider a library that contains compiled scripts and
assuming we pass allocation handles between the library and other
user codes, changes to handle size only in user code would break the
compatibility on things like array of rs_allocations.

Thus, to keep ABI compatibility the unused fields r, v1, v2 are renamed.
Also they are now assigned zero consistently. These field however are
not copied consistently in the current runtime, and are not expected
so anyways.

Bug: 35043722
Test: mm, CTS and RSTest on Angler
Change-Id: I426fad8e07bf445b6d8625bd23c689acaee26322
sovAllocation.cpp
sovElement.cpp
sovRuntimeStubs.cpp
sovSampler.cpp
sovScript.cpp
sovType.cpp
1eb58f06105ebbc9b85583fdc40cab66dd617aa2 28-Feb-2017 Miao Wang <miaowang@google.com> Merge "Remove RS_SERVER macros and references to unused headers." am: cb970436a9 am: 36b4ae4166
am: 3929984985

Change-Id: Ie55253f7fc5bee7de97532d616090b86907788e6
62237219e567b9f972c86e7ca4e96f9b3d5ad4de 28-Feb-2017 Miao Wang <miaowang@google.com> Remove RS_SERVER macros and references to unused headers.

- 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
sovRuntimeStubs.cpp
91f38f042de973b29293cf0a6452d27c6fe81583 22-Feb-2017 I-Jui (Ray) Sung <ijsung@google.com> Merge "Move Vulkan buffer details out of RSoVAllocation" am: d4a7a7d0e5 am: 29c324ddf6
am: e2f6606dc1

Change-Id: I0cd47e0a42a76b05fba94fe75d2de9028bf6fda8
a456a6e0672896ef7b8d312d8013208ae4086ab2 21-Feb-2017 I-Jui (Ray) Sung <ijsung@google.com> Move Vulkan buffer details out of RSoVAllocation

Bug: 30964317

Small refactoring of RSoVAllocation class. The Vulkan-specific
implementation of buffers now goes to RSoVBuffer.

Test: RSoVTest on Angler
Change-Id: I7457de1e1c9424435a73cb8c9dbb837180f7fc42
sovAllocation.cpp
sovAllocation.h
sovScript.cpp
5aea316b99abf3161b146875d5098197c89a3dbf 21-Feb-2017 Yang Ni <yangni@google.com> Merge "Rewrite rs2spirv using spirit" am: 56cbea2a99 am: 856e175e3c
am: be1881c2f0

Change-Id: I276b6d582da1ab30dd3c36760dc2f93106506586
bf22a8ab4f46a98ee37f95fc0402744132cc3ed2 07-Feb-2017 Yang Ni <yangni@google.com> Rewrite rs2spirv using spirit

Bug: 30964317

Rewrote the wrapper generation and builtin/runtime function
translation passes in rs2spirv using spirit.

Also added support for about a dozen more floating-point builtin
math functions.

Added support for new-style root kernel with lit test. Added check
for old-style kernels with lit test. Updated existing lit tests
since generated code are slightly different, mostly on temp names.

Added SPIR-V validation to all lit tests.

Updated the RSoV driver to work with the new spirit-based compiler.

The entry point is now named entry_<kernel name>.

Fixed an issue with multi-input kernel, so that the type count is
correctly set.

Minor cleanup to destroy descriptor sets after a kernel launch
and to remove an outdated comment.

Test: lit tests and RSoVTest

Change-Id: I07b5957667892e532dcbc2da98ed38fe783af5e9
sovScript.cpp
sovScript.h
55891a72bed0d2731e355803402b0f89229ced89 14-Feb-2017 Mathias Agopian <mathias@google.com> fallout of splitting rect.h out of libandroid.

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
ndroid.mk
863237215cab4812df373b63ba3bbf2bc1d8647d 20-Jan-2017 Jean-Luc Brouillet <jeanluc@google.com> Cleanup makefiles and warning producing code.

Many entries in our makefiles are not needed:
- LOCAL_CPPFLAGS += -fno-exceptions is the default
- LOCAL_MODULE_TARGET_ARCH_WARN is obsolete
- LOCAL_CXX_STL:= libc++ is the default
- LOCAL_MODULE_TAGS := optional is the default
- LOCAL_IS_HOST_MODULE := true is the default if we're using
$include(BUILD_HOST_*). This can't be removed for the generated
subdirectories however without triggering a bug in Ninja.
- Removed the -ldl where not needed.
- LOCAL_CLANG is no longer needed.

Added -Werror -Wall -Wextra to a lot of targets and cleaned up
the code that created errors.

Removed some hacky code that would prevent tests/java_api from
being compiled except under special cicumstances.

Corrected some LOCAL_MODULE_TAGS that should have been set to tests.
Cleanup warning producing code.

Bug: 34265954
Test: Compiled the code.
Test: Ran the cpp test, imageprocessing_jb, and cts
Change-Id: I27da19b18a6c0ac3686bb8c93681e3d870d587fe
ndroid.mk
257223a176702c1b408d1530cba3f9a10c978c95 12-Jan-2017 Yang Ni <yangni@google.com> Fail gracefully than assert on RSoV context

Bug: 30964317

Fail RSoV context creation without assertion if Vulkan initialization
fails, e.g., if the GPU does not support Vulkan or if a GPU does not
exist at all.

Also avoided memory leak in Hal initialization code on failures to
create CPU referenence or RSoV context.

Test: RSoV on Volantis

Change-Id: I49320607bb211e568008193fee1cca299fd4a80e
sovContext.cpp
sovContext.h
sovCore.cpp
a075ad49dd56f25efebb5402bcc263766421b0c8 13-Jan-2017 I-Jui (Ray) Sung <ijsung@google.com> Runtime support for mapping kernels with multiple input allocations

Updated RSoV runtime to set Vulkan GLSL bindings for kernels with more
than one input allocations at kernel launch time.

Added a RSoVTest test case based on foreach_multi of RSTest.

Test: RSoVTest and RSoV LIT tests

Bug: 30964317

Change-Id: Id3edfda0ef4344d85c4b59aa6df184882597b659
sovScript.cpp
sovScript.h
30dfb1368d0a3440cfedc882c27cc236d799f77c 06-Jan-2017 Yang Ni <yangni@google.com> Fallback to CPU execution if RSoV compilation fails

Bug: 30964317

With a few additional changes:
* Cleaned up the RSoV script initialization code to get rid of
memory leaks;
* Updated the RSoVAllocation destructor to destroy the buffer but
not the uninitialized image.
* Updated allocation initialization code to correctly calculate
allocation size when rows are not aligned to the default minimum
alignment (16 bytes).
* Added a utility function to check if a script is completely backed
by CPU, and updated the CPU context lookup callback function to
use this utility to correctly return a CPU driver-specific script
for a HAL script.

Test: RSoVTest and RsTest

Change-Id: If85b8f01bde3190a9397aaedce8b9808d09716e6
sovAllocation.cpp
sovAllocation.h
sovContext.h
sovCore.cpp
sovScript.cpp
sovScript.h
d051d08a0100fe0a801ce2496b72cf6d97a76903 10-Jan-2017 I-Jui (Ray) Sung <ijsung@google.com> Multiple argument support for the RSoV compiler

Generated SPIR-V wrapper now contains localized decorations and buffer
declarations for kernel arguments. Also updated kernel wrapper generation
so that now the boilerplate code loads all input buffers as well.

Renumbered GLSL binding for allocations in the runtime accordingly.

Added a LIT test.

Test: RSoV lit tests, RSoVTest
Change-Id: I8f59245f832fcbda0651ed230cda9df7b664ca35
sovScript.cpp
a2306b660ee5adeb8c3b506f1f70e2e3b76bee63 06-Jan-2017 Yang Ni <yangni@google.com> Removed unnecessary dependencies from RSoV driver build

Bug: 30964317

Test: RSoV Test

Change-Id: Ic6ec4b2671c2cc460f9d84ec8e4e4d984a0c9e9a
ndroid.mk
f15ce3de10aa8edf30d9c2dca60237a3d24eddcc 06-Dec-2016 Yang Ni <yangni@google.com> Allocation implementation using buffers

Bug: 30964317

Test: lit tests and RSoVTest

Change-Id: Ib7be067638c781c989a2723072c4eae865bfe515
ndroid.mk
sovAllocation.cpp
sovAllocation.h
sovScript.cpp
ffa85366645c163dd529644ba5b8950c4c588d20 13-Dec-2016 I-Jui (Ray) Sung <ijsung@google.com> Initial multi-kernel support

This change adds multi-kernel support, with localized kernel function
types, argument types and OpEntryPoints. Also emit type and metadata
for each kernel. OpEntryPoints now have the string literals of RS
kernel names.

Some SPIR-V names are still shared, notably the global_invocation_id. This
doesn't seem to affect correctness per our current tests.

On the device side, the RSoV driver has been updated to use actual kernel
names instead of hardcoded "main".

Also added testcases in both LIT and RSoVTest.

Test: RSoV LIT Tests, RSoVTest on angler

Change-Id: I09936e69d9f19d21c5727430cb19414b508496bd
ndroid.mk
sovScript.cpp
sovScript.h
75f0d3110b04346b901771f96ce15cdbe907278f 11-Nov-2016 Yang Ni <yangni@google.com> Initial driver for RSoV (RenderScript over Vulkan/SPIR-V)

Bug: 30964317

Supports the following:

* Allocations of 32-bit integers and floating point numbers and vectors
* Single-input single-output kernels
* Co-existence of RSoV scripts and CPU intrinsics

Added default .clang-format for driver code using Google C++ code style.

The RSoV driver is loaded, if and only if the property debug.rs.rsov is
set to non-zero.

Test: RSTest and CTS with debug.rs.rsov set to 0; and RSoVTest with
debug.rs.rsov set to 1.

Change-Id: If63370a502d499e8fc5f4bbd2e90ce84b167c331
clang-format
ndroid.mk
sovAllocation.cpp
sovAllocation.h
sovContext.cpp
sovContext.h
sovCore.cpp
sovCore.h
sovElement.cpp
sovElement.h
sovRuntimeStubs.cpp
sovSampler.cpp
sovSampler.h
sovScript.cpp
sovScript.h
sovScriptGroup.cpp
sovScriptGroup.h
sovType.cpp
sovType.h