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

Commit a3b5960f authored by Alex Sakhartchouk's avatar Alex Sakhartchouk
Browse files

Making sure we can build libRS on the host for serialization.

Change-Id: If0a5d77b20c0e1e2d124fa0737643a5dd1d4409a
parent bd07f8e8
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -130,6 +130,28 @@ LOCAL_MODULE_TAGS := optional

include $(BUILD_SHARED_LIBRARY)

# Now build a host version for serialization
include $(CLEAR_VARS)
LOCAL_CFLAGS += -DANDROID_RS_BUILD_FOR_HOST

LOCAL_SRC_FILES:= \
	rsAllocation.cpp \
	rsComponent.cpp \
	rsElement.cpp \
	rsFileA3D.cpp \
	rsObjectBase.cpp \
	rsMesh.cpp \
	rsStream.cpp \
	rsType.cpp

LOCAL_STATIC_LIBRARIES := libcutils libutils

LOCAL_LDLIBS := -lpthread
LOCAL_MODULE:= libRSserialize
LOCAL_MODULE_TAGS := optional

include $(BUILD_HOST_STATIC_LIBRARY)

# include the java examples
include $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk,\
    java \
+3 −0
Original line number Diff line number Diff line
@@ -365,6 +365,9 @@ RsAllocation rsaAllocationCreateFromBitmap(RsContext con, RsType vtype,
RsAllocation rsaAllocationCubeCreateFromBitmap(RsContext con, RsType vtype,
                                               RsAllocationMipmapControl mips,
                                               const void *data, uint32_t usages);
#ifdef ANDROID_RS_BUILD_FOR_HOST
#define NO_RS_FUNCS
#endif

#ifndef NO_RS_FUNCS
#include "rsgApiFuncDecl.h"
+26 −17
Original line number Diff line number Diff line
@@ -21,12 +21,7 @@
#include <GLES/glext.h>
#else
#include "rsContextHostStub.h"

#include <OpenGL/gl.h>
#include <OpenGl/glext.h>
#endif

#include "utils/StopWatch.h"
#endif //ANDROID_RS_BUILD_FOR_HOST

static void rsaAllocationGenerateScriptMips(RsContext con, RsAllocation va);

@@ -83,7 +78,7 @@ Allocation::~Allocation() {
        mPtr = NULL;
    }
    freeScriptMemory();

#ifndef ANDROID_RS_BUILD_FOR_HOST
    if (mBufferID) {
        // Causes a SW crash....
        //LOGV(" mBufferID %i", mBufferID);
@@ -94,6 +89,7 @@ Allocation::~Allocation() {
        glDeleteTextures(1, &mTextureID);
        mTextureID = 0;
    }
#endif //ANDROID_RS_BUILD_FOR_HOST
}

void Allocation::setCpuWritable(bool) {
@@ -118,6 +114,7 @@ void Allocation::deferedUploadToTexture(const Context *rsc) {
}

uint32_t Allocation::getGLTarget() const {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    if (getIsTexture()) {
        if (mType->getDimFaces()) {
            return GL_TEXTURE_CUBE_MAP;
@@ -128,6 +125,7 @@ uint32_t Allocation::getGLTarget() const {
    if (getIsBufferObject()) {
        return GL_ARRAY_BUFFER;
    }
#endif //ANDROID_RS_BUILD_FOR_HOST
    return 0;
}

@@ -158,7 +156,7 @@ void Allocation::syncAll(Context *rsc, RsAllocationUsageType src) {
}

void Allocation::uploadToTexture(const Context *rsc) {

#ifndef ANDROID_RS_BUILD_FOR_HOST
    mUsageFlags |= RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE;
    GLenum type = mType->getElement()->getComponent().getGLType();
    GLenum format = mType->getElement()->getComponent().getGLFormat();
@@ -195,8 +193,10 @@ void Allocation::uploadToTexture(const Context *rsc) {
    }

    rsc->checkError("Allocation::uploadToTexture");
#endif //ANDROID_RS_BUILD_FOR_HOST
}

#ifndef ANDROID_RS_BUILD_FOR_HOST
const static GLenum gFaceOrder[] = {
    GL_TEXTURE_CUBE_MAP_POSITIVE_X,
    GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
@@ -205,10 +205,12 @@ const static GLenum gFaceOrder[] = {
    GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
    GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
};
#endif //ANDROID_RS_BUILD_FOR_HOST

void Allocation::update2DTexture(const void *ptr, uint32_t xoff, uint32_t yoff,
                                 uint32_t lod, RsAllocationCubemapFace face,
                                 uint32_t w, uint32_t h) {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    GLenum type = mType->getElement()->getComponent().getGLType();
    GLenum format = mType->getElement()->getComponent().getGLFormat();
    GLenum target = (GLenum)getGLTarget();
@@ -220,9 +222,11 @@ void Allocation::update2DTexture(const void *ptr, uint32_t xoff, uint32_t yoff,
        t = gFaceOrder[face];
    }
    glTexSubImage2D(t, lod, xoff, yoff, w, h, format, type, ptr);
#endif //ANDROID_RS_BUILD_FOR_HOST
}

void Allocation::upload2DTexture(bool isFirstUpload) {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    GLenum type = mType->getElement()->getComponent().getGLType();
    GLenum format = mType->getElement()->getComponent().getGLFormat();

@@ -258,10 +262,9 @@ void Allocation::upload2DTexture(bool isFirstUpload) {
    }

    if (mMipmapControl == RS_ALLOCATION_MIPMAP_ON_SYNC_TO_TEXTURE) {
#ifndef ANDROID_RS_BUILD_FOR_HOST
        glGenerateMipmap(target);
#endif //ANDROID_RS_BUILD_FOR_HOST
    }
#endif //ANDROID_RS_BUILD_FOR_HOST
}

void Allocation::deferedUploadToBufferObject(const Context *rsc) {
@@ -270,6 +273,7 @@ void Allocation::deferedUploadToBufferObject(const Context *rsc) {
}

void Allocation::uploadToBufferObject(const Context *rsc) {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    rsAssert(!mType->getDimY());
    rsAssert(!mType->getDimZ());

@@ -288,6 +292,7 @@ void Allocation::uploadToBufferObject(const Context *rsc) {
    glBufferData(target, mType->getSizeBytes(), getPtr(), GL_DYNAMIC_DRAW);
    glBindBuffer(target, 0);
    rsc->checkError("Allocation::uploadToBufferObject");
#endif //ANDROID_RS_BUILD_FOR_HOST
}

void Allocation::uploadCheck(Context *rsc) {
@@ -386,7 +391,7 @@ void Allocation::elementData(Context *rsc, uint32_t x, const void *data,
    ptr += mType->getElement()->getFieldOffsetBytes(cIdx);

    if (sizeBytes != e->getSizeBytes()) {
        LOGE("Error Allocation::subElementData data size %i does not match field size %i.", sizeBytes, e->getSizeBytes());
        LOGE("Error Allocation::subElementData data size %i does not match field size %zu.", sizeBytes, e->getSizeBytes());
        rsc->setError(RS_ERROR_BAD_VALUE, "subElementData bad size.");
        return;
    }
@@ -429,7 +434,7 @@ void Allocation::elementData(Context *rsc, uint32_t x, uint32_t y,
    ptr += mType->getElement()->getFieldOffsetBytes(cIdx);

    if (sizeBytes != e->getSizeBytes()) {
        LOGE("Error Allocation::subElementData data size %i does not match field size %i.", sizeBytes, e->getSizeBytes());
        LOGE("Error Allocation::subElementData data size %i does not match field size %zu.", sizeBytes, e->getSizeBytes());
        rsc->setError(RS_ERROR_BAD_VALUE, "subElementData bad size.");
        return;
    }
@@ -445,10 +450,13 @@ void Allocation::elementData(Context *rsc, uint32_t x, uint32_t y,
}

void Allocation::addProgramToDirty(const Program *p) {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    mToDirtyList.push(p);
#endif //ANDROID_RS_BUILD_FOR_HOST
}

void Allocation::removeProgramToDirty(const Program *p) {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    for (size_t ct=0; ct < mToDirtyList.size(); ct++) {
        if (mToDirtyList[ct] == p) {
            mToDirtyList.removeAt(ct);
@@ -456,6 +464,7 @@ void Allocation::removeProgramToDirty(const Program *p) {
        }
    }
    rsAssert(0);
#endif //ANDROID_RS_BUILD_FOR_HOST
}

void Allocation::dumpLOGV(const char *prefix) const {
@@ -530,9 +539,11 @@ Allocation *Allocation::createFromStream(Context *rsc, IStream *stream) {
}

void Allocation::sendDirty() const {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    for (size_t ct=0; ct < mToDirtyList.size(); ct++) {
        mToDirtyList[ct]->forceDirty();
    }
#endif //ANDROID_RS_BUILD_FOR_HOST
}

void Allocation::incRefs(const void *ptr, size_t ct, size_t startOff) const {
@@ -591,7 +602,7 @@ void Allocation::resize2D(Context *rsc, uint32_t dimX, uint32_t dimY) {

/////////////////
//

#ifndef ANDROID_RS_BUILD_FOR_HOST

namespace android {
namespace renderscript {
@@ -674,8 +685,6 @@ static void mip(const Adapter2D &out, const Adapter2D &in) {
    }
}

#ifndef ANDROID_RS_BUILD_FOR_HOST

void rsi_AllocationSyncAll(Context *rsc, RsAllocation va, RsAllocationUsageType src) {
    Allocation *a = static_cast<Allocation *>(va);
    a->syncAll(rsc, src);
@@ -739,8 +748,6 @@ void rsi_AllocationResize2D(Context *rsc, RsAllocation va, uint32_t dimX, uint32
    a->resize2D(rsc, dimX, dimY);
}

#endif //ANDROID_RS_BUILD_FOR_HOST

}
}

@@ -840,3 +847,5 @@ RsAllocation rsaAllocationCubeCreateFromBitmap(RsContext con, RsType vtype,
    texAlloc->deferedUploadToTexture(rsc);
    return texAlloc;
}

#endif //ANDROID_RS_BUILD_FOR_HOST
+4 −3
Original line number Diff line number Diff line
@@ -18,8 +18,6 @@

#ifndef ANDROID_RS_BUILD_FOR_HOST
#include <GLES/gl.h>
#else
#include <OpenGL/gl.h>
#endif

using namespace android;
@@ -183,6 +181,7 @@ bool Component::isReference() const {
}

uint32_t Component::getGLType() const {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    switch (mType) {
    case RS_TYPE_UNSIGNED_5_6_5:    return GL_UNSIGNED_SHORT_5_6_5;
    case RS_TYPE_UNSIGNED_5_5_5_1:  return GL_UNSIGNED_SHORT_5_5_5_1;
@@ -196,11 +195,12 @@ uint32_t Component::getGLType() const {
    case RS_TYPE_SIGNED_16:     return GL_SHORT;
    default:    break;
    }

#endif //ANDROID_RS_BUILD_FOR_HOST
    return 0;
}

uint32_t Component::getGLFormat() const {
#ifndef ANDROID_RS_BUILD_FOR_HOST
    switch (mKind) {
    case RS_KIND_PIXEL_L: return GL_LUMINANCE;
    case RS_KIND_PIXEL_A: return GL_ALPHA;
@@ -209,6 +209,7 @@ uint32_t Component::getGLFormat() const {
    case RS_KIND_PIXEL_RGBA: return GL_RGBA;
    default: break;
    }
#endif //ANDROID_RS_BUILD_FOR_HOST
    return 0;
}

+6 −42
Original line number Diff line number Diff line
@@ -18,34 +18,18 @@
#define ANDROID_RS_CONTEXT_HOST_STUB_H

#include "rsUtils.h"
//#include "rsMutex.h"

//#include "rsThreadIO.h"
#include "rsType.h"
#include "rsMatrix.h"
#include "rsAllocation.h"
#include "rsMesh.h"
//#include "rsDevice.h"
#include "rsScriptC.h"
#include "rsAllocation.h"
#include "rsAdapter.h"
#include "rsSampler.h"
#include "rsProgramFragment.h"
#include "rsProgramStore.h"
#include "rsProgramRaster.h"
#include "rsProgramVertex.h"
#include "rsShaderCache.h"
#include "rsVertexArray.h"

//#include "rsgApiStructs.h"
//#include "rsLocklessFifo.h"

//#include <ui/egl/android_natives.h>

// ---------------------------------------------------------------------------
namespace android {
namespace renderscript {

#define CHECK_OBJ(o)
#define CHECK_OBJ_OR_NULL(o)

class Device;

class Context {
@@ -56,36 +40,13 @@ public:
    ~Context() {
    }


    //StructuredAllocationContext mStateAllocation;
    ElementState mStateElement;
    TypeState mStateType;
    SamplerState mStateSampler;
    //ProgramFragmentState mStateFragment;
    ProgramStoreState mStateFragmentStore;
    //ProgramRasterState mStateRaster;
    //ProgramVertexState mStateVertex;
    VertexArrayState mStateVertexArray;

    //ScriptCState mScriptC;
    ShaderCache mShaderCache;

    RsSurfaceConfig mUserSurfaceConfig;

    //bool setupCheck();

    ProgramFragment * getDefaultProgramFragment() const {
        return NULL;
    }
    ProgramVertex * getDefaultProgramVertex() const {
        return NULL;
    }
    ProgramStore * getDefaultProgramStore() const {
        return NULL;
    }
    ProgramRaster * getDefaultProgramRaster() const {
        return NULL;
    }

    uint32_t getWidth() const {return 0;}
    uint32_t getHeight() const {return 0;}
@@ -99,6 +60,8 @@ public:
        _RS_TIMER_TOTAL
    };

    void timerSet(Timers) { }

    bool checkVersion1_1() const {return false; }
    bool checkVersion2_0() const {return false; }

@@ -157,3 +120,4 @@ protected:
}
}
#endif
Loading