]> Chaos Git - corbenik/ctrulib.git/commitdiff
GPU : GPU_SetUniform
authorsmea <smealum@gmail.com>
Sun, 9 Mar 2014 15:38:55 +0000 (16:38 +0100)
committersmea <smealum@gmail.com>
Sun, 9 Mar 2014 15:38:55 +0000 (16:38 +0100)
libctru/include/ctr/GPU.h
libctru/include/ctr/SHDR.h
libctru/source/GPU.c
libctru/source/SHDR.c

index 7c9efb88dbae9e6df7a80d1367ab9d5ed491a9a3..511b9a597bd202028414f4919f8af448c7114f74 100644 (file)
@@ -9,4 +9,6 @@ void GPUCMD_Add(u32 cmd, u32* param, u32 paramlength);
 void GPUCMD_AddSingleParam(u32 cmd, u32 param);
 void GPUCMD_Finalize();
 
+void GPU_SetUniform(u32 startreg, u32* data, u32 numreg);
+
 #endif
index e0712e051e1d0e6dc7159f05318f6fcee89df84b..e71303676297a50f305bbfb256bc838af1a3aa03 100644 (file)
@@ -47,4 +47,13 @@ typedef struct{
        DVLE_s* DVLE;
 }DVLB_s;
 
+
+DVLB_s* SHDR_ParseSHBIN(u32* shbinData, u32 shbinSize);
+void SHDR_FreeDVLB(DVLB_s* dvlb);
+
+void DVLP_SendCode(DVLP_s* dvlp);
+void DVLP_SendOpDesc(DVLP_s* dvlp);
+
+void DVLE_SendOutmap(DVLE_s* dvle);
+
 #endif
index 09ec10efeb1ae98dfac23943dac04f3c01704c5d..3a51e68a10862a4d84b323ede18d3801e076530a 100644 (file)
@@ -69,3 +69,11 @@ void GPUCMD_Finalize()
        GPUCMD_AddSingleParam(0x000F0110, 0x00000001);
        GPUCMD_AddSingleParam(0x000F0010, 0x12345678);
 }
+
+void GPU_SetUniform(u32 startreg, u32* data, u32 numreg)
+{
+       if(!data)return;
+
+       GPUCMD_AddSingleParam(0x000F02C0, 0x80000000|startreg);
+       GPUCMD_Add(0x000F02C1, data, numreg*4);
+}
index 995538035c6f59c168e3bbdeea0c253599d4b95d..60e5a0ba8aa0e1bba69f9fcc987d7069eefdb67f 100644 (file)
@@ -15,35 +15,35 @@ DVLB_s* SHDR_ParseSHBIN(u32* shbinData, u32 shbinSize)
        DVLB_s* ret=malloc(sizeof(DVLB_s));
        if(!ret)goto exit;
 
-       //parse DVLB
-       ret->numDVLE=shbinData[1];
-       ret->DVLE=malloc(sizeof(DVLE_s)*ret->numDVLE);
-       if(!ret->DVLE)goto clean1;
-
-       //parse DVLP
-       u32* dvlpData=&shbinData[2+ret->numDVLE];
-       ret->DVLP.codeSize=dvlpData[3];
-       ret->DVLP.codeData=&dvlpData[dvlpData[2]/4];
-       ret->DVLP.opdescSize=dvlpData[5];
-       ret->DVLP.opcdescData=&dvlpData[dvlpData[4]/4];
-
-       //parse DVLE
-       int i;
-       for(i=0;i<ret->numDVLE;i++)
-       {
-               DVLE_s* dvle=&ret->DVLE[i];
-               u32* dvleData=&shbinData[shbinData[2+i]/4];
-
-               dvle->type=(dvleData[1]>>16)&0xFF;
-               dvle->mainOffset=dvleData[2];
-               dvle->endmainOffset=dvleData[3];
-
-               dvle->constTableSize=dvleData[7];
-               dvle->constTableData=(DVLE_constEntry_s*)&dvleData[dvleData[6]/4];
-
-               dvle->outTableSize=dvleData[11];
-               dvle->outTableData=(DVLE_outEntry_s*)&dvleData[dvleData[10]/4];
-       }
+       // //parse DVLB
+       // ret->numDVLE=shbinData[1];
+       // ret->DVLE=malloc(sizeof(DVLE_s)*ret->numDVLE);
+       // if(!ret->DVLE)goto clean1;
+
+       // //parse DVLP
+       // u32* dvlpData=&shbinData[2+ret->numDVLE];
+       // ret->DVLP.codeSize=dvlpData[3];
+       // ret->DVLP.codeData=&dvlpData[dvlpData[2]/4];
+       // ret->DVLP.opdescSize=dvlpData[5];
+       // ret->DVLP.opcdescData=&dvlpData[dvlpData[4]/4];
+
+       // //parse DVLE
+       // int i;
+       // for(i=0;i<ret->numDVLE;i++)
+       // {
+       //      DVLE_s* dvle=&ret->DVLE[i];
+       //      u32* dvleData=&shbinData[shbinData[2+i]/4];
+
+       //      dvle->type=(dvleData[1]>>16)&0xFF;
+       //      dvle->mainOffset=dvleData[2];
+       //      dvle->endmainOffset=dvleData[3];
+
+       //      dvle->constTableSize=dvleData[7];
+       //      dvle->constTableData=(DVLE_constEntry_s*)&dvleData[dvleData[6]/4];
+
+       //      dvle->outTableSize=dvleData[11];
+       //      dvle->outTableData=(DVLE_outEntry_s*)&dvleData[dvleData[10]/4];
+       // }
 
        clean1:
                free(ret);