mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
If a larger framebuffer is needed, upgrade it once.
This should prevent issues where it gets larger and smaller like in the past.
This commit is contained in:
parent
dde2f3ade6
commit
1f76adb7a3
2 changed files with 16 additions and 2 deletions
|
@ -708,6 +708,7 @@ void FramebufferManager::DoSetRenderFrameBuffer() {
|
|||
|
||||
int buffer_width = drawing_width;
|
||||
int buffer_height = drawing_height;
|
||||
bool embiggened = false;
|
||||
|
||||
// Find a matching framebuffer
|
||||
VirtualFramebuffer *vfb = 0;
|
||||
|
@ -718,8 +719,19 @@ void FramebufferManager::DoSetRenderFrameBuffer() {
|
|||
// Update fb stride in case it changed
|
||||
vfb->fb_stride = fb_stride;
|
||||
if (v->width < drawing_width && v->height < drawing_height) {
|
||||
v->width = drawing_width;
|
||||
v->height = drawing_height;
|
||||
// Embiggen if it gets bigger, but only once.
|
||||
// This prevents it happening over and over again.
|
||||
if (!v->embiggened) {
|
||||
// TODO: Could copy over the data.
|
||||
embiggened = true;
|
||||
vfb = NULL;
|
||||
DestroyFramebuf(v);
|
||||
vfbs_.erase(vfbs_.begin() + i);
|
||||
break;
|
||||
} else {
|
||||
v->width = drawing_width;
|
||||
v->height = drawing_height;
|
||||
}
|
||||
}
|
||||
if (v->format != fmt) {
|
||||
v->width = drawing_width;
|
||||
|
@ -755,6 +767,7 @@ void FramebufferManager::DoSetRenderFrameBuffer() {
|
|||
vfb->reallyDirtyAfterDisplay = true;
|
||||
vfb->memoryUpdated = false;
|
||||
vfb->depthUpdated = false;
|
||||
vfb->embiggened = embiggened;
|
||||
|
||||
if (g_Config.bTrueColor) {
|
||||
vfb->colorDepth = FBO_8888;
|
||||
|
|
|
@ -85,6 +85,7 @@ struct VirtualFramebuffer {
|
|||
|
||||
bool dirtyAfterDisplay;
|
||||
bool reallyDirtyAfterDisplay; // takes frame skipping into account
|
||||
bool embiggened;
|
||||
};
|
||||
|
||||
void CenterRect(float *x, float *y, float *w, float *h,
|
||||
|
|
Loading…
Add table
Reference in a new issue