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

Commit 2123b46b authored by Alex Sakhartchouk's avatar Alex Sakhartchouk
Browse files

Piping texture names through shader builder.

Fixing uint size_t mismatch.

Change-Id: Ia7c8bd9f829deaa50e1cc381ccd50f29676bbdfb
parent a3f15432
Loading
Loading
Loading
Loading
+34 −1
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ public class Program extends BaseObj {
    Element mOutputs[];
    Type mConstants[];
    TextureType mTextures[];
    String mTextureNames[];
    int mTextureCount;
    String mShader;

@@ -110,6 +111,16 @@ public class Program extends BaseObj {
        return mTextures[slot];
    }

    /**
     * @hide
     */
    public String getTextureName(int slot) {
        if ((slot < 0) || (slot >= mTextureCount)) {
            throw new IllegalArgumentException("Slot ID out of range.");
        }
        return mTextureNames[slot];
    }

    /**
     * Binds a constant buffer to be used as uniform inputs to the
     * program
@@ -180,6 +191,7 @@ public class Program extends BaseObj {
        Type mConstants[];
        Type mTextures[];
        TextureType mTextureTypes[];
        String mTextureNames[];
        int mInputCount;
        int mOutputCount;
        int mConstantCount;
@@ -197,6 +209,7 @@ public class Program extends BaseObj {
            mConstantCount = 0;
            mTextureCount = 0;
            mTextureTypes = new TextureType[MAX_TEXTURE];
            mTextureNames = new String[MAX_TEXTURE];
        }

        /**
@@ -300,10 +313,28 @@ public class Program extends BaseObj {
         * @return  self
         */
        public BaseProgramBuilder addTexture(TextureType texType) throws IllegalArgumentException {
            addTexture(texType, "Tex" + mTextureCount);
            return this;
        }

        /**
         * @hide
         * Adds a texture input to the Program
         *
         * @param texType describes that the texture to append it (2D,
         *                Cubemap, etc.)
         * @param texName what the texture should be called in the
         *                shader
         * @return  self
         */
        public BaseProgramBuilder addTexture(TextureType texType, String texName)
            throws IllegalArgumentException {
            if(mTextureCount >= MAX_TEXTURE) {
                throw new IllegalArgumentException("Max texture count exceeded.");
            }
            mTextureTypes[mTextureCount ++] = texType;
            mTextureTypes[mTextureCount] = texType;
            mTextureNames[mTextureCount] = texName;
            mTextureCount ++;
            return this;
        }

@@ -317,6 +348,8 @@ public class Program extends BaseObj {
            p.mTextureCount = mTextureCount;
            p.mTextures = new TextureType[mTextureCount];
            System.arraycopy(mTextureTypes, 0, p.mTextures, 0, mTextureCount);
            p.mTextureNames = new String[mTextureCount];
            System.arraycopy(mTextureNames, 0, p.mTextureNames, 0, mTextureCount);
        }
    }

+3 −1
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public class ProgramFragment extends Program {
        public ProgramFragment create() {
            mRS.validate();
            int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
            String[] texNames = new String[mTextureCount];
            int idx = 0;

            for (int i=0; i < mInputCount; i++) {
@@ -76,9 +77,10 @@ public class ProgramFragment extends Program {
            for (int i=0; i < mTextureCount; i++) {
                tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
                tmp[idx++] = mTextureTypes[i].mID;
                texNames[i] = mTextureNames[i];
            }

            int id = mRS.nProgramFragmentCreate(mShader, tmp);
            int id = mRS.nProgramFragmentCreate(mShader, texNames, tmp);
            ProgramFragment pf = new ProgramFragment(id, mRS);
            initProgram(pf);
            return pf;
+3 −1
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ public class ProgramFragmentFixedFunction extends ProgramFragment {
        public ProgramFragmentFixedFunction create() {
            mRS.validate();
            int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
            String[] texNames = new String[mTextureCount];
            int idx = 0;

            for (int i=0; i < mInputCount; i++) {
@@ -64,9 +65,10 @@ public class ProgramFragmentFixedFunction extends ProgramFragment {
            for (int i=0; i < mTextureCount; i++) {
                tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
                tmp[idx++] = mTextureTypes[i].mID;
                texNames[i] = mTextureNames[i];
            }

            int id = mRS.nProgramFragmentCreate(mShader, tmp);
            int id = mRS.nProgramFragmentCreate(mShader, texNames, tmp);
            ProgramFragmentFixedFunction pf = new ProgramFragmentFixedFunction(id, mRS);
            initProgram(pf);
            return pf;
+3 −1
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ public class ProgramVertex extends Program {
        public ProgramVertex create() {
            mRS.validate();
            int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
            String[] texNames = new String[mTextureCount];
            int idx = 0;

            for (int i=0; i < mInputCount; i++) {
@@ -133,9 +134,10 @@ public class ProgramVertex extends Program {
            for (int i=0; i < mTextureCount; i++) {
                tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
                tmp[idx++] = mTextureTypes[i].mID;
                texNames[i] = mTextureNames[i];
            }

            int id = mRS.nProgramVertexCreate(mShader, tmp);
            int id = mRS.nProgramVertexCreate(mShader, texNames, tmp);
            ProgramVertex pv = new ProgramVertex(id, mRS);
            initProgram(pv);
            return pv;
+3 −1
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ public class ProgramVertexFixedFunction extends ProgramVertex {
        public ProgramVertexFixedFunction create() {
            mRS.validate();
            int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
            String[] texNames = new String[mTextureCount];
            int idx = 0;

            for (int i=0; i < mInputCount; i++) {
@@ -87,9 +88,10 @@ public class ProgramVertexFixedFunction extends ProgramVertex {
            for (int i=0; i < mTextureCount; i++) {
                tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
                tmp[idx++] = mTextureTypes[i].mID;
                texNames[i] = mTextureNames[i];
            }

            int id = mRS.nProgramVertexCreate(mShader, tmp);
            int id = mRS.nProgramVertexCreate(mShader, texNames, tmp);
            ProgramVertexFixedFunction pv = new ProgramVertexFixedFunction(id, mRS);
            initProgram(pv);
            return pv;
Loading