static void waitFinish(gcmContextData *context, u32 sLabelVal){ rsxSetWriteBackendLabel(context, GCM_LABEL_INDEX, sLabelVal); rsxFlushBuffer(context); while(*(vu32 *) gcmGetLabelAddress(GCM_LABEL_INDEX) != sLabelVal) usleep(30); sLabelVal++; }
static void wait_finish() { rsxSetWriteBackendLabel(context, GCM_LABEL_INDEX, sLabelVal); rsxFlushBuffer(context); while (*(vu32 *) gcmGetLabelAddress(GCM_LABEL_INDEX) != sLabelVal) usleep(30); ++sLabelVal; }
int main(int argc,const char *argv[]) { s32 ret,i; padInfo padinfo; padData paddata; rsxProgramConst *consts = rsxFragmentProgramGetConsts(fpo); initialize(); ioPadInit(7); sphere = createSphere(3.0f,32,32); donut = createDonut(3.0f,1.5f,32,32); cube = createCube(5.0f); rsxConstOffsetTable *co_table = rsxFragmentProgramGetConstOffsetTable(fpo,consts[lightColor_id].index); u32 const_addr = (u32)((u64)fp_buffer + co_table->offset[0]); setup_shared_buffer(const_addr,(u32)(u64)mem_align(128,128),(u32)(u64)gcmGetLabelAddress(64)); signal_spu_ppu(); signal_spu_rsx(); P = transpose(Matrix4::perspective(DEGTORAD(45.0f),aspect_ratio,1.0f,3000.0f)); setRenderTarget(curr_fb); rsxFinish(context,0); ret = atexit(program_exit_callback); ret = sysUtilRegisterCallback(0,sysutil_exit_callback,NULL); delete cube; running = 1; while(running) { ret = sysUtilCheckCallback(); ioPadGetInfo(&padinfo); for(i=0; i<MAX_PADS; i++) { if(padinfo.status[i]) { ioPadGetData(i, &paddata); if(paddata.BTN_CROSS) { return 0; } } } drawFrame(); flip(); } return 0; }