/* Enqueue a flip command in RSX command buffer. Setup next screen to be drawn to. */ void flip(displayData *vdat) { s32 status = gcmSetFlip(vdat->context, vdat->curr_fb); assert(status == 0); rsxFlushBuffer(vdat->context); gcmSetWaitFlip(vdat->context); vdat->curr_fb = !vdat->curr_fb; ++vdat->framecnt; }
int flip(gcmContextData *context, s32 buffer){ if(gcmSetFlip(context, buffer) == 0) { rsxFlushBuffer(context); // Prevent the RSX from continuing until the flip has finished. gcmSetWaitFlip(context); return TRUE; } return FALSE; }
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; }
void flip() { if(!first_fb) waitflip(); else gcmResetFlipStatus(); gcmSetFlip(context,curr_fb); rsxFlushBuffer(context); gcmSetWaitFlip(context); curr_fb ^= 1; setRenderTarget(curr_fb); first_fb = 0; }
/* flip a buffer to screen */ inline int rescFlip ( videoData *vdata ) { if ( rescSetConvertAndFlip ( vdata->context, vdata->rsx_buffers[vdata->currentBuffer].id ) == 0 ) { rsxFlushBuffer ( vdata->context ) ; /* Prevent the RSX from continuing until the flip has finished. */ rescSetWaitFlip ( vdata->context ) ; /* set render target */ rescSetRenderTarget ( vdata ) ; return TRUE; } return FALSE; }
static void psl1ght_displaytarget_display(struct sw_winsys *ws, struct sw_displaytarget *dt, void *context_private) { struct psl1ght_sw_winsys *psl1ght = psl1ght_sw_winsys(ws); struct psl1ght_sw_displaytarget *psdt = psl1ght_sw_displaytarget(dt); if (psdt->bufferId == NO_BUFFER) { if (!psl1ght_displaytarget_set_buffer(psl1ght, psdt)) return; } gcmResetFlipStatus(); if (!gcmSetFlip(psl1ght->ctx, psdt->bufferId)) { rsxFlushBuffer(psl1ght->ctx); gcmSetWaitFlip(psl1ght->ctx); } }
void flip(s32 buffer) { assert(gcmSetFlip(context, buffer) == 0); rsxFlushBuffer(context); gcmSetWaitFlip(context); // Prevent the RSX from continuing until the flip has finished. }