]> Chaos Git - corbenik/ctrulib.git/commitdiff
SHDR : SHDR_GetUniformRegister (untested)
authorJordan Rabet <jordan.rabet@ensimag.grenoble-inp.fr>
Thu, 13 Mar 2014 14:50:43 +0000 (15:50 +0100)
committerJordan Rabet <jordan.rabet@ensimag.grenoble-inp.fr>
Thu, 13 Mar 2014 14:50:43 +0000 (15:50 +0100)
libctru/include/ctr/SHDR.h
libctru/source/SHDR.c

index 92c4687e3e3e2991528053754efe5a86b3bf65ba..e6808f8cc0f8398cdfc9514093f3a146e79f607c 100644 (file)
@@ -60,6 +60,7 @@ typedef struct{
 DVLB_s* SHDR_ParseSHBIN(u32* shbinData, u32 shbinSize);
 void SHDR_UseProgram(DVLB_s* dvlb, u8 id);
 void SHDR_FreeDVLB(DVLB_s* dvlb);
+s8 SHDR_GetUniformRegister(DVLB_s* dvlb, char* name, u8 programID);
 
 void DVLP_SendCode(DVLP_s* dvlp);
 void DVLP_SendOpDesc(DVLP_s* dvlp);
index 446a6ce5ab46a1f033cddde2ae3ddab8debfec0b..95f55dcb038feb43ae6a5a96050d5741b6f2cfd8 100644 (file)
@@ -57,6 +57,21 @@ DVLB_s* SHDR_ParseSHBIN(u32* shbinData, u32 shbinSize)
                return ret;
 }
 
+s8 SHDR_GetUniformRegister(DVLB_s* dvlb, char* name, u8 programID)
+{
+       if(!dvlb || !name)return -1;
+
+       DVLE_s* dvle=&dvlb->DVLE[programID];
+
+       int i;  DVLE_uniformEntry_s* u=dvle->uniformTableData;
+       for(i=0;i<dvle->uniformTableSize;i++)
+       {
+               if(!strcmp(dvle->symbolTableData[u->symbolOffset],name))return (s8)u->startReg;
+               u++;
+       }
+       return -1;
+}
+
 //hm
 static inline u8 minu8(u8 a, u8 b)
 {