Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 976ae272 authored by Stephen Hines's avatar Stephen Hines
Browse files

Add support for handling a bitcode wrapper to librs.

BUG=5425905

Change-Id: I75676060703df6d9043b287fea900c4379455ee2
parent 335c4e6c
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@

#ifndef ANDROID_RS_SERIALIZE
#include <bcinfo/BitcodeTranslator.h>
#include <bcinfo/BitcodeWrapper.h>
#endif

using namespace android;
@@ -196,7 +197,24 @@ bool ScriptC::runCompiler(Context *rsc,

    //LOGE("runCompiler %p %p %p %p %p %i", rsc, this, resName, cacheDir, bitcode, bitcodeLen);
#ifndef ANDROID_RS_SERIALIZE
    uint32_t sdkVersion = rsc->getTargetSdkVersion();
    uint32_t sdkVersion = 0;
    bcinfo::BitcodeWrapper bcWrapper((const char *)bitcode, bitcodeLen);
    if (!bcWrapper.unwrap()) {
        LOGE("Bitcode is not in proper container format (raw or wrapper)");
        return false;
    }

    rsAssert(bcWrapper.getHeaderVersion() == 0);
    if (bcWrapper.getBCFileType() == bcinfo::BC_WRAPPER) {
        sdkVersion = bcWrapper.getTargetAPI();
    }

    if (sdkVersion == 0) {
        // This signals that we didn't have a wrapper containing information
        // about the bitcode.
        sdkVersion = rsc->getTargetSdkVersion();
    }

    if (BT) {
        delete BT;
    }