Skip to content

Commit

Permalink
sceDisplay, GPUState cleanup and comments
Browse files Browse the repository at this point in the history
  • Loading branch information
hrydgard committed Jul 25, 2015
1 parent 828c740 commit 0726912
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 20 deletions.
29 changes: 12 additions & 17 deletions Core/HLE/sceDisplay.cpp
Expand Up @@ -60,16 +60,14 @@ struct FrameBufferState {
int pspFramebufLinesize;
};

struct WaitVBlankInfo
{
struct WaitVBlankInfo {
WaitVBlankInfo(u32 tid) : threadID(tid), vcountUnblock(1) {}
WaitVBlankInfo(u32 tid, int vcount) : threadID(tid), vcountUnblock(vcount) {}
SceUID threadID;
// Number of vcounts to block for.
int vcountUnblock;

void DoState(PointerWrap &p)
{
void DoState(PointerWrap &p) {
auto s = p.Section("WaitVBlankInfo", 1);
if (!s)
return;
Expand Down Expand Up @@ -326,16 +324,14 @@ void __DisplayVblankBeginCallback(SceUID threadID, SceUID prevCallbackId) {
WaitVBlankInfo waitData(0);
for (size_t i = 0; i < vblankWaitingThreads.size(); i++) {
WaitVBlankInfo *t = &vblankWaitingThreads[i];
if (t->threadID == threadID)
{
if (t->threadID == threadID) {
waitData = *t;
vblankWaitingThreads.erase(vblankWaitingThreads.begin() + i);
break;
}
}

if (waitData.threadID != threadID)
{
if (waitData.threadID != threadID) {
WARN_LOG_REPORT(SCEDISPLAY, "sceDisplayWaitVblankCB: could not find waiting thread info.");
return;
}
Expand Down Expand Up @@ -498,19 +494,19 @@ static void DoFrameTiming(bool &throttle, bool &skipFrame, float timestep) {
// Check if the frameskipping code should be enabled. If neither throttling or frameskipping is on,
// we have nothing to do here.
bool doFrameSkip = g_Config.iFrameSkip != 0;

if (!throttle && g_Config.bFrameSkipUnthrottle) {
doFrameSkip = true;
skipFrame = true;
if (numSkippedFrames >= 7) {
skipFrame = false;
}
return;
return;
}

if (!throttle && !doFrameSkip)
return;

time_update();

float scaledTimestep = timestep;
Expand All @@ -530,7 +526,7 @@ static void DoFrameTiming(bool &throttle, bool &skipFrame, float timestep) {
nextFrameTime = std::max(lastFrameTime + scaledTimestep, time_now_d() - maxFallBehindFrames * scaledTimestep);
}
curFrameTime = time_now_d();

// Auto-frameskip automatically if speed limit is set differently than the default.
bool useAutoFrameskip = g_Config.bAutoFrameSkip && g_Config.iRenderingMode != FB_NON_BUFFERED_MODE;
if (g_Config.bAutoFrameSkip || (g_Config.iFrameSkip == 0 && fpsLimiter == FPS_LIMIT_CUSTOM && g_Config.iFpsLimit > 60)) {
Expand Down Expand Up @@ -707,8 +703,7 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
}
}

void hleAfterFlip(u64 userdata, int cyclesLate)
{
void hleAfterFlip(u64 userdata, int cyclesLate) {
gpu->BeginFrame(); // doesn't really matter if begin or end of frame.

// This seems like as good a time as any to check if the config changed.
Expand Down Expand Up @@ -769,7 +764,7 @@ static u32 sceDisplaySetMode(int displayMode, int displayWidth, int displayHeigh
WARN_LOG(SCEDISPLAY, "sceDisplaySetMode INVALID SIZE (%i, %i, %i)", displayMode, displayWidth, displayHeight);
return SCE_KERNEL_ERROR_INVALID_SIZE;
}

if (displayMode != PSP_DISPLAY_MODE_LCD) {
WARN_LOG(SCEDISPLAY, "sceDisplaySetMode INVALID MODE(%i, %i, %i)", displayMode, displayWidth, displayHeight);
return SCE_KERNEL_ERROR_INVALID_MODE;
Expand Down Expand Up @@ -1017,11 +1012,11 @@ static float sceDisplayGetFramePerSec() {
}

static u32 sceDisplayIsForeground() {
DEBUG_LOG(SCEDISPLAY,"IMPL sceDisplayIsForeground()");
DEBUG_LOG(SCEDISPLAY,"IMPL sceDisplayIsForeground()");
if (!hasSetMode || framebuf.topaddr == 0)
return 0;
else
return 1; // return value according to JPCSP comment
return 1; // return value according to JPCSP comment
}

static u32 sceDisplayGetMode(u32 modeAddr, u32 widthAddr, u32 heightAddr) {
Expand Down
8 changes: 5 additions & 3 deletions GPU/GPUState.h
Expand Up @@ -435,6 +435,9 @@ inline int vertTypeGetTexCoordMask(u32 vertType) { return vertType & GE_VTYPE_TC

// The rest is cached simplified/converted data for fast access.
// Does not need to be saved when saving/restoring context.
//
// Lots of this, however, is actual emulator state which must be saved when savestating.
// vertexAddr, indexAddr, offsetAddr for example.

struct UVScale {
float uScale, vScale;
Expand All @@ -447,11 +450,9 @@ enum TextureChangeReason {
TEXCHANGE_PARAMSONLY = 0x02,
};

struct GPUStateCache
{
struct GPUStateCache {
u32 vertexAddr;
u32 indexAddr;

u32 offsetAddr;

u8 textureChanged;
Expand All @@ -464,6 +465,7 @@ struct GPUStateCache

UVScale uv;
bool flipTexture;

bool bgraTexture;
bool needShaderTexClamp;
bool allowShaderBlend;
Expand Down

0 comments on commit 0726912

Please sign in to comment.