GPU : GPU_SetUniform
This commit is contained in:
parent
5683e006d0
commit
0761e6db1e
@ -9,4 +9,6 @@ void GPUCMD_Add(u32 cmd, u32* param, u32 paramlength);
|
|||||||
void GPUCMD_AddSingleParam(u32 cmd, u32 param);
|
void GPUCMD_AddSingleParam(u32 cmd, u32 param);
|
||||||
void GPUCMD_Finalize();
|
void GPUCMD_Finalize();
|
||||||
|
|
||||||
|
void GPU_SetUniform(u32 startreg, u32* data, u32 numreg);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -47,4 +47,13 @@ typedef struct{
|
|||||||
DVLE_s* DVLE;
|
DVLE_s* DVLE;
|
||||||
}DVLB_s;
|
}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
|
#endif
|
||||||
|
@ -69,3 +69,11 @@ void GPUCMD_Finalize()
|
|||||||
GPUCMD_AddSingleParam(0x000F0110, 0x00000001);
|
GPUCMD_AddSingleParam(0x000F0110, 0x00000001);
|
||||||
GPUCMD_AddSingleParam(0x000F0010, 0x12345678);
|
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);
|
||||||
|
}
|
||||||
|
@ -15,35 +15,35 @@ DVLB_s* SHDR_ParseSHBIN(u32* shbinData, u32 shbinSize)
|
|||||||
DVLB_s* ret=malloc(sizeof(DVLB_s));
|
DVLB_s* ret=malloc(sizeof(DVLB_s));
|
||||||
if(!ret)goto exit;
|
if(!ret)goto exit;
|
||||||
|
|
||||||
//parse DVLB
|
// //parse DVLB
|
||||||
ret->numDVLE=shbinData[1];
|
// ret->numDVLE=shbinData[1];
|
||||||
ret->DVLE=malloc(sizeof(DVLE_s)*ret->numDVLE);
|
// ret->DVLE=malloc(sizeof(DVLE_s)*ret->numDVLE);
|
||||||
if(!ret->DVLE)goto clean1;
|
// if(!ret->DVLE)goto clean1;
|
||||||
|
|
||||||
//parse DVLP
|
// //parse DVLP
|
||||||
u32* dvlpData=&shbinData[2+ret->numDVLE];
|
// u32* dvlpData=&shbinData[2+ret->numDVLE];
|
||||||
ret->DVLP.codeSize=dvlpData[3];
|
// ret->DVLP.codeSize=dvlpData[3];
|
||||||
ret->DVLP.codeData=&dvlpData[dvlpData[2]/4];
|
// ret->DVLP.codeData=&dvlpData[dvlpData[2]/4];
|
||||||
ret->DVLP.opdescSize=dvlpData[5];
|
// ret->DVLP.opdescSize=dvlpData[5];
|
||||||
ret->DVLP.opcdescData=&dvlpData[dvlpData[4]/4];
|
// ret->DVLP.opcdescData=&dvlpData[dvlpData[4]/4];
|
||||||
|
|
||||||
//parse DVLE
|
// //parse DVLE
|
||||||
int i;
|
// int i;
|
||||||
for(i=0;i<ret->numDVLE;i++)
|
// for(i=0;i<ret->numDVLE;i++)
|
||||||
{
|
// {
|
||||||
DVLE_s* dvle=&ret->DVLE[i];
|
// DVLE_s* dvle=&ret->DVLE[i];
|
||||||
u32* dvleData=&shbinData[shbinData[2+i]/4];
|
// u32* dvleData=&shbinData[shbinData[2+i]/4];
|
||||||
|
|
||||||
dvle->type=(dvleData[1]>>16)&0xFF;
|
// dvle->type=(dvleData[1]>>16)&0xFF;
|
||||||
dvle->mainOffset=dvleData[2];
|
// dvle->mainOffset=dvleData[2];
|
||||||
dvle->endmainOffset=dvleData[3];
|
// dvle->endmainOffset=dvleData[3];
|
||||||
|
|
||||||
dvle->constTableSize=dvleData[7];
|
// dvle->constTableSize=dvleData[7];
|
||||||
dvle->constTableData=(DVLE_constEntry_s*)&dvleData[dvleData[6]/4];
|
// dvle->constTableData=(DVLE_constEntry_s*)&dvleData[dvleData[6]/4];
|
||||||
|
|
||||||
dvle->outTableSize=dvleData[11];
|
// dvle->outTableSize=dvleData[11];
|
||||||
dvle->outTableData=(DVLE_outEntry_s*)&dvleData[dvleData[10]/4];
|
// dvle->outTableData=(DVLE_outEntry_s*)&dvleData[dvleData[10]/4];
|
||||||
}
|
// }
|
||||||
|
|
||||||
clean1:
|
clean1:
|
||||||
free(ret);
|
free(ret);
|
||||||
|
Loading…
Reference in New Issue
Block a user