Use flags to avoid hashing textures when unchanged.
If only parameters change (like wrapping or clut, etc.) we don't need to rehash the data - we know it hasn't changed. Should reduce the distance between lazy texture hashing on and off.
This commit is contained in:
parent
1b30c5b212
commit
4c1c694d4b
12 changed files with 186 additions and 45 deletions
|
@ -755,7 +755,9 @@ void FramebufferManager::DoSetRenderFrameBuffer() {
|
|||
|
||||
// None found? Create one.
|
||||
if (!vfb) {
|
||||
gstate_c.textureChanged = true;
|
||||
if (gstate_c.textureChanged == TEXCHANGE_UNCHANGED) {
|
||||
gstate_c.textureChanged = TEXCHANGE_PARAMSONLY;
|
||||
}
|
||||
vfb = new VirtualFramebuffer();
|
||||
vfb->fbo = 0;
|
||||
vfb->fb_address = fb_address;
|
||||
|
@ -859,7 +861,9 @@ void FramebufferManager::DoSetRenderFrameBuffer() {
|
|||
// Use it as a render target.
|
||||
DEBUG_LOG(SCEGE, "Switching render target to FBO for %08x: %i x %i x %i ", vfb->fb_address, vfb->width, vfb->height, vfb->format);
|
||||
vfb->usageFlags |= FB_USAGE_RENDERTARGET;
|
||||
gstate_c.textureChanged = true;
|
||||
if (gstate_c.textureChanged == TEXCHANGE_UNCHANGED) {
|
||||
gstate_c.textureChanged = TEXCHANGE_PARAMSONLY;
|
||||
}
|
||||
vfb->last_frame_render = gpuStats.numFlips;
|
||||
frameLastFramebufUsed = gpuStats.numFlips;
|
||||
vfb->dirtyAfterDisplay = true;
|
||||
|
@ -1191,7 +1195,9 @@ void FramebufferManager::ReadFramebufferToMemory(VirtualFramebuffer *vfb, bool s
|
|||
glEnable(GL_DITHER);
|
||||
} else {
|
||||
nvfb->usageFlags |= FB_USAGE_RENDERTARGET;
|
||||
gstate_c.textureChanged = true;
|
||||
if (gstate_c.textureChanged == TEXCHANGE_UNCHANGED) {
|
||||
gstate_c.textureChanged = TEXCHANGE_PARAMSONLY;
|
||||
}
|
||||
nvfb->last_frame_render = gpuStats.numFlips;
|
||||
nvfb->dirtyAfterDisplay = true;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue