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

Commit 9c54bdbf authored by Jason Sams's avatar Jason Sams
Browse files

Implement default programs and implement defaults and parents for imports.

parent b37c0a5d
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
// Fountain test script

#pragma version(1)
#pragma stateVertex(orthoWindow)
#pragma stateRaster(flat)
#pragma stateVertex(default)
#pragma stateFragment(PgmFragBackground)
#pragma stateFragmentStore(MyBlend)
#pragma stateFragmentStore(parent)


int main(void* con, int ft, int launchID) {
+0 −11
Original line number Diff line number Diff line
@@ -58,10 +58,8 @@ public class FountainRS {
    private RenderScript.ProgramFragmentStore mPFS;
    private RenderScript.ProgramFragment mPF;
    private RenderScript.ProgramFragment mPF2;
    private RenderScript.ProgramVertex mPV;
    private RenderScript.Allocation mTexture;
    private RenderScript.Sampler mSampler;
    private ProgramVertexAlloc mPVA;

    private Bitmap mBackground;

@@ -110,15 +108,6 @@ public class FountainRS {
        mPF2.bindSampler(mSampler, 0);
        mPF2.setName("PgmFragBackground");

        mRS.programVertexBegin(null, null);
        mPV = mRS.programVertexCreate();
        mPVA = new ProgramVertexAlloc(mRS);
        mPV.bindAllocation(0, mPVA.mAlloc);
        mPVA.setupOrthoWindow(320, 480);
        mRS.contextBindProgramVertex(mPV);




        mParams[0] = 0;
        mParams[1] = partCount;
+26 −6
Original line number Diff line number Diff line
@@ -119,6 +119,14 @@ void * Context::threadProc(void *vrsc)
     rsc->mServerReturns.init(128);

     rsc->initEGL();

     rsc->mStateVertex.init(rsc, rsc->mWidth, rsc->mHeight);
     rsc->setVertex(NULL);
     rsc->mStateFragment.init(rsc, rsc->mWidth, rsc->mHeight);
     rsc->setFragment(NULL);
     rsc->mStateFragmentStore.init(rsc, rsc->mWidth, rsc->mHeight);
     rsc->setFragmentStore(NULL);

     rsc->mRunning = true;
     bool mDraw = true;
     while (!rsc->mExit) {
@@ -212,20 +220,32 @@ void Context::setRootScript(Script *s)

void Context::setFragmentStore(ProgramFragmentStore *pfs)
{
    if (pfs == NULL) {
        mFragmentStore.set(mStateFragmentStore.mDefault);
    } else {
        mFragmentStore.set(pfs);
    pfs->setupGL();
    }
    mFragmentStore->setupGL();
}

void Context::setFragment(ProgramFragment *pf)
{
    if (pf == NULL) {
        mFragment.set(mStateFragment.mDefault);
    } else {
        mFragment.set(pf);
    pf->setupGL();
    }
    mFragment->setupGL();
}

void Context::setVertex(ProgramVertex *pv)
{
    if (pv == NULL) {
        mVertex.set(mStateVertex.mDefault);
    } else {
        mVertex.set(pv);
    pv->setupGL();
    }
    mVertex->setupGL();
}

void Context::assignName(ObjectBase *obj, const char *name, uint32_t len)
+11 −4
Original line number Diff line number Diff line
@@ -81,6 +81,17 @@ public:
    ObjectBase * lookupName(const char *name) const;
    void appendNameDefines(String8 *str) const;


    ProgramFragment * getDefaultProgramFragment() const {
        return mStateFragment.mDefault.get();
    }
    ProgramVertex * getDefaultProgramVertex() const {
        return mStateVertex.mDefault.get();
    }
    ProgramFragmentStore * getDefaultProgramFragmentStore() const {
        return mStateFragmentStore.mDefault.get();
    }

protected:
    Device *mDev;

@@ -107,10 +118,6 @@ protected:
    ObjectBaseRef<ProgramVertex> mVertex;
    ObjectBaseRef<ProgramFragmentStore> mFragmentStore;

    ProgramFragment * mDefaultFragment;
    ProgramVertex * mDefaultVertex;
    ProgramFragmentStore * mDefaultFragmentStore;

private:
    Context();

+22 −0
Original line number Diff line number Diff line
@@ -136,4 +136,26 @@ void Matrix::loadMultiply(const Matrix *lhs, const Matrix *rhs)
    }
}

void Matrix::loadOrtho(float l, float r, float b, float t, float n, float f) {
    loadIdentity();
    m[0] = 2 / (r - l);
    m[5] = 2 / (t - b);
    m[10]= -2 / (f - n);
    m[12]= -(r + l) / (r - l);
    m[13]= -(t + b) / (t - b);
    m[14]= -(f + n) / (f - n);
}

void Matrix::loadFrustum(float l, float r, float b, float t, float n, float f) {
    loadIdentity();
    m[0] = 2 * n / (r - l);
    m[5] = 2 * n / (t - b);
    m[8] = (r + l) / (r - l);
    m[9] = (t + b) / (t - b);
    m[10]= -(f + n) / (f - n);
    m[11]= -1;
    m[14]= -2*f*n / (f - n);
    m[15]= 0;
}

Loading