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

Commit ff0f67d8 authored by Jason Sams's avatar Jason Sams Committed by Android (Google) Code Review
Browse files

Merge "Create runtime stubs for compute driver."

parents 8c4da95f fcf72312
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -95,7 +95,9 @@ LOCAL_SRC_FILES:= \
	rsFont.cpp \
	rsLocklessFifo.cpp \
	rsObjectBase.cpp \
	rsMatrix.cpp \
	rsMatrix2x2.cpp \
	rsMatrix3x3.cpp \
	rsMatrix4x4.cpp \
	rsMesh.cpp \
	rsMutex.cpp \
	rsProgram.cpp \
@@ -107,7 +109,6 @@ LOCAL_SRC_FILES:= \
	rsScript.cpp \
	rsScriptC.cpp \
	rsScriptC_Lib.cpp \
	rsScriptC_LibCL.cpp \
	rsScriptC_LibGL.cpp \
	rsShaderCache.cpp \
	rsSignal.cpp \
@@ -119,7 +120,9 @@ LOCAL_SRC_FILES:= \
	driver/rsdCore.cpp \
	driver/rsdGL.cpp \
	driver/rsdProgramRaster.cpp \
	driver/rsdProgramStore.cpp
	driver/rsdProgramStore.cpp \
	driver/rsdRuntimeMath.cpp \
	driver/rsdRuntimeStubs.cpp


LOCAL_SHARED_LIBRARIES += libz libcutils libutils libEGL libGLESv1_CM libGLESv2 libui libbcc
+12 −0
Original line number Diff line number Diff line
@@ -52,6 +52,18 @@ typedef void * RsProgramRaster;

typedef void (* RsBitmapCallback_t)(void *);

typedef struct {
    float m[16];
} rs_matrix4x4;

typedef struct {
    float m[9];
} rs_matrix3x3;

typedef struct {
    float m[4];
} rs_matrix2x2;

enum RsDeviceParam {
    RS_DEVICE_PARAM_FORCE_SOFTWARE_GL,
    RS_DEVICE_PARAM_COUNT
+6 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

#include "rsdCore.h"
#include "rsdBcc.h"
#include "rsdRuntime.h"

#include "rsContext.h"
#include "rsScriptC.h"
@@ -129,8 +130,7 @@ bool rsdScriptInit(const Context *rsc,
                     char const *cacheDir,
                     uint8_t const *bitcode,
                     size_t bitcodeSize,
                     uint32_t flags,
                     RsHalSymbolLookupFunc lookupFunc) {
                     uint32_t flags) {
    //LOGE("rsdScriptCreate %p %p %p %p %i %i %p", rsc, resName, cacheDir, bitcode, bitcodeSize, flags, lookupFunc);

    char *cachePath = NULL;
@@ -149,7 +149,7 @@ bool rsdScriptInit(const Context *rsc,

    //LOGE("mBccScript %p", script->mBccScript);

    if (bccRegisterSymbolCallback(drv->mBccScript, lookupFunc, script) != 0) {
    if (bccRegisterSymbolCallback(drv->mBccScript, &rsdLookupRuntimeStub, script) != 0) {
        LOGE("bcc: FAILS to register symbol callback");
        goto error;
    }
@@ -334,7 +334,7 @@ void rsdScriptInvokeForEach(const Context *rsc,
                            uint32_t usrLen,
                            const RsScriptCall *sc) {

    RsHal * dc = (RsHal *)rsc->mHal.drv;
    RsdHal * dc = (RsdHal *)rsc->mHal.drv;

    MTLaunchStruct mtls;
    memset(&mtls, 0, sizeof(mtls));
@@ -513,7 +513,7 @@ void rsdScriptSetGlobalObj(const Context *dc, const Script *script, uint32_t slo
        return;
    }

    rsiSetObject((ObjectBase **)destPtr, data);
    rsrSetObject(dc, script, (ObjectBase **)destPtr, data);
}

void rsdScriptDestroy(const Context *dc, Script *script) {
@@ -525,7 +525,7 @@ void rsdScriptDestroy(const Context *dc, Script *script) {
                // The field address can be NULL if the script-side has
                // optimized the corresponding global variable away.
                if (drv->mFieldAddress[ct]) {
                    rsiClearObject((ObjectBase **)drv->mFieldAddress[ct]);
                    rsrClearObject(dc, script, (ObjectBase **)drv->mFieldAddress[ct]);
                }
            }
        }
+2 −2
Original line number Diff line number Diff line
@@ -18,12 +18,12 @@
#define RSD_BCC_H

#include <rs_hal.h>
#include <rsRuntime.h>


bool rsdScriptInit(const android::renderscript::Context *, android::renderscript::ScriptC *,
                   char const *resName, char const *cacheDir,
                   uint8_t const *bitcode, size_t bitcodeSize,
                   uint32_t flags, android::renderscript::RsHalSymbolLookupFunc lookupFunc);
                   uint8_t const *bitcode, size_t bitcodeSize, uint32_t flags);
void rsdScriptInvokeFunction(const android::renderscript::Context *dc,
                             android::renderscript::Script *script,
                             uint32_t slot,
+5 −5
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ static RsdHalFunctions FunctionTable = {

static void * HelperThreadProc(void *vrsc) {
    Context *rsc = static_cast<Context *>(vrsc);
    RsHal *dc = (RsHal *)rsc->mHal.drv;
    RsdHal *dc = (RsdHal *)rsc->mHal.drv;


    uint32_t idx = (uint32_t)android_atomic_inc(&dc->mWorkers.mLaunchCount);
@@ -116,7 +116,7 @@ static void * HelperThreadProc(void *vrsc) {
}

void rsdLaunchThreads(Context *rsc, WorkerCallback_t cbk, void *data) {
    RsHal *dc = (RsHal *)rsc->mHal.drv;
    RsdHal *dc = (RsdHal *)rsc->mHal.drv;

    dc->mWorkers.mLaunchData = data;
    dc->mWorkers.mLaunchCallback = cbk;
@@ -132,7 +132,7 @@ void rsdLaunchThreads(Context *rsc, WorkerCallback_t cbk, void *data) {
bool rsdHalInit(Context *rsc, uint32_t version_major, uint32_t version_minor) {
    rsc->mHal.funcs = FunctionTable;

    RsHal *dc = (RsHal *)calloc(1, sizeof(RsHal));
    RsdHal *dc = (RsdHal *)calloc(1, sizeof(RsdHal));
    if (!dc) {
        LOGE("Calloc for driver hal failed.");
        return false;
@@ -181,14 +181,14 @@ bool rsdHalInit(Context *rsc, uint32_t version_major, uint32_t version_minor) {


void SetPriority(const Context *rsc, int32_t priority) {
    RsHal *dc = (RsHal *)rsc->mHal.drv;
    RsdHal *dc = (RsdHal *)rsc->mHal.drv;
    for (uint32_t ct=0; ct < dc->mWorkers.mCount; ct++) {
        setpriority(PRIO_PROCESS, dc->mWorkers.mNativeThreadId[ct], priority);
    }
}

void Shutdown(Context *rsc) {
    RsHal *dc = (RsHal *)rsc->mHal.drv;
    RsdHal *dc = (RsdHal *)rsc->mHal.drv;

    dc->mExit = true;
    dc->mWorkers.mLaunchData = NULL;
Loading