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

Commit fcf72312 authored by Jason Sams's avatar Jason Sams
Browse files

Create runtime stubs for compute driver.

Change-Id: I8e0250a642844a2ad3ff6efc38e385445b7da032
parent 16f61049
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