minifix + geoshader stride
This commit is contained in:
parent
a1830973c7
commit
d195917ec1
@ -24,6 +24,7 @@ typedef struct
|
|||||||
{
|
{
|
||||||
shaderInstance_s* vertexShader;
|
shaderInstance_s* vertexShader;
|
||||||
shaderInstance_s* geometryShader;
|
shaderInstance_s* geometryShader;
|
||||||
|
u8 geometryShaderInputStride;
|
||||||
}shaderProgram_s;
|
}shaderProgram_s;
|
||||||
|
|
||||||
Result shaderInstanceInit(shaderInstance_s* si, DVLE_s* dvle);
|
Result shaderInstanceInit(shaderInstance_s* si, DVLE_s* dvle);
|
||||||
@ -34,5 +35,5 @@ Result shaderInstanceGetBool(shaderInstance_s* si, int id, bool* value);
|
|||||||
Result shaderProgramInit(shaderProgram_s* sp);
|
Result shaderProgramInit(shaderProgram_s* sp);
|
||||||
Result shaderProgramFree(shaderProgram_s* sp);
|
Result shaderProgramFree(shaderProgram_s* sp);
|
||||||
Result shaderProgramSetVsh(shaderProgram_s* sp, DVLE_s* dvle);
|
Result shaderProgramSetVsh(shaderProgram_s* sp, DVLE_s* dvle);
|
||||||
Result shaderProgramSetGsh(shaderProgram_s* sp, DVLE_s* dvle);
|
Result shaderProgramSetGsh(shaderProgram_s* sp, DVLE_s* dvle, u8 stride);
|
||||||
Result shaderProgramUse(shaderProgram_s* sp);
|
Result shaderProgramUse(shaderProgram_s* sp);
|
||||||
|
@ -87,7 +87,7 @@ Result shaderInstanceSetBool(shaderInstance_s* si, int id, bool value)
|
|||||||
if(id<0 || id>15)return -2;
|
if(id<0 || id>15)return -2;
|
||||||
|
|
||||||
si->boolUniforms &= ~(1<<id);
|
si->boolUniforms &= ~(1<<id);
|
||||||
si->boolUniforms |= (!value)<<id;
|
si->boolUniforms |= (value)<<id;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -138,7 +138,7 @@ Result shaderProgramSetVsh(shaderProgram_s* sp, DVLE_s* dvle)
|
|||||||
return shaderInstanceInit(sp->vertexShader, dvle);
|
return shaderInstanceInit(sp->vertexShader, dvle);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result shaderProgramSetGsh(shaderProgram_s* sp, DVLE_s* dvle)
|
Result shaderProgramSetGsh(shaderProgram_s* sp, DVLE_s* dvle, u8 stride)
|
||||||
{
|
{
|
||||||
if(!sp || !dvle)return -1;
|
if(!sp || !dvle)return -1;
|
||||||
if(dvle->type != GEOMETRY_SHDR)return -2;
|
if(dvle->type != GEOMETRY_SHDR)return -2;
|
||||||
@ -148,6 +148,8 @@ Result shaderProgramSetGsh(shaderProgram_s* sp, DVLE_s* dvle)
|
|||||||
sp->geometryShader = (shaderInstance_s*)malloc(sizeof(shaderInstance_s));
|
sp->geometryShader = (shaderInstance_s*)malloc(sizeof(shaderInstance_s));
|
||||||
if(!sp->geometryShader)return -3;
|
if(!sp->geometryShader)return -3;
|
||||||
|
|
||||||
|
sp->geometryShaderInputStride = stride;
|
||||||
|
|
||||||
return shaderInstanceInit(sp->geometryShader, dvle);
|
return shaderInstanceInit(sp->geometryShader, dvle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,7 +203,7 @@ Result shaderProgramUse(shaderProgram_s* sp)
|
|||||||
GPU_SetShaderOutmap((u32*)gshDvle->outmapData);
|
GPU_SetShaderOutmap((u32*)gshDvle->outmapData);
|
||||||
|
|
||||||
//GSH input attributes stuff
|
//GSH input attributes stuff
|
||||||
GPUCMD_AddWrite(GPUREG_GSH_INPUTBUFFER_CONFIG, 0x08000003);
|
GPUCMD_AddWrite(GPUREG_GSH_INPUTBUFFER_CONFIG, 0x08000000|(sp->geometryShaderInputStride-1));
|
||||||
GPUCMD_AddIncrementalWrites(GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW, ((u32[]){0x76543210, 0xFEDCBA98}), 2);
|
GPUCMD_AddIncrementalWrites(GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW, ((u32[]){0x76543210, 0xFEDCBA98}), 2);
|
||||||
|
|
||||||
GPUCMD_AddMaskedWrite(GPUREG_GEOSTAGE_CONFIG, 0x1, 0x00000002);
|
GPUCMD_AddMaskedWrite(GPUREG_GEOSTAGE_CONFIG, 0x1, 0x00000002);
|
||||||
|
Loading…
Reference in New Issue
Block a user