28faded3432d20cc2e9b9e58b4706031bd6ea9c9 |
|
22-Feb-2017 |
Yang Ni <yangni@google.com> |
Added support for global variables Bug: 30964317 Pass necessary metadata about global variables--i.e., offsets of each global variable in the synthesized global buffer--from the compiler to the driver. This metadata is encoded as an OpString in the generated SPIR-V code. The driver also creates the global buffer to store all global variables. Added support for sharing globals between invokes and kernels. rs2spirv also does global variable access to global buffer field access transformation for the CPU code, so that CPU and GPU access the same global buffer resident in shared memory assuming the same data layout. Added in the compiler support to handle global variable intializers, and contantant expressions. Removed capability Address, since Vulkan validation rules disallow it. Converted OpInBoundsPtrAccessChain into OpInBoundsAccessChain, since the former requires capability Address. OpInBoundsPtrAccessChain instructions get generated for accesses to global variables, which are now fields in the global buffer. Added an RSoV test for global variables. Adjusted lit tests to check the new OpString. This CL is limited to non-allocation global variables, as global rs_allocations are handled in separate CLs. This CL does not handle constant globals either, which will be dealt with in followup CLs. Test: lit tests and RSoVTest Change-Id: Ia8f44c4ffa22046a72a58a26942ced595b3f5f53
/frameworks/rs/rsov/driver/rsovAllocation.cpp
|
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
/frameworks/rs/rsov/driver/rsovAllocation.cpp
|
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
/frameworks/rs/rsov/driver/rsovAllocation.cpp
|
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
/frameworks/rs/rsov/driver/rsovAllocation.cpp
|
f15ce3de10aa8edf30d9c2dca60237a3d24eddcc |
|
06-Dec-2016 |
Yang Ni <yangni@google.com> |
Allocation implementation using buffers Bug: 30964317 Test: lit tests and RSoVTest Change-Id: Ib7be067638c781c989a2723072c4eae865bfe515
/frameworks/rs/rsov/driver/rsovAllocation.cpp
|
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
/frameworks/rs/rsov/driver/rsovAllocation.cpp
|