GPU: Centralize DestroyAllFBOs().
This cleans up the postshader update code.
This commit is contained in:
parent
03e3a935da
commit
22e46b51c2
16 changed files with 52 additions and 157 deletions
|
@ -839,9 +839,6 @@ void FramebufferManagerCommon::CopyDisplayToOutput(bool reallyDirty) {
|
||||||
u32 offsetX = 0;
|
u32 offsetX = 0;
|
||||||
u32 offsetY = 0;
|
u32 offsetY = 0;
|
||||||
|
|
||||||
CardboardSettings cardboardSettings;
|
|
||||||
presentation_->GetCardboardSettings(&cardboardSettings);
|
|
||||||
|
|
||||||
// If it's not really dirty, we're probably frameskipping. Use the last working one.
|
// If it's not really dirty, we're probably frameskipping. Use the last working one.
|
||||||
u32 fbaddr = reallyDirty ? displayFramebufPtr_ : prevDisplayFramebufPtr_;
|
u32 fbaddr = reallyDirty ? displayFramebufPtr_ : prevDisplayFramebufPtr_;
|
||||||
prevDisplayFramebufPtr_ = fbaddr;
|
prevDisplayFramebufPtr_ = fbaddr;
|
||||||
|
@ -1705,6 +1702,13 @@ void FramebufferManagerCommon::Resized() {
|
||||||
|
|
||||||
gstate_c.skipDrawReason &= ~SKIPDRAW_NON_DISPLAYED_FB;
|
gstate_c.skipDrawReason &= ~SKIPDRAW_NON_DISPLAYED_FB;
|
||||||
|
|
||||||
|
if (UpdateSize()) {
|
||||||
|
DestroyAllFBOs();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Might have a new post shader - let's compile it.
|
||||||
|
presentation_->UpdatePostShader();
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Seems related - if you're ok with numbers all the time, show some more :)
|
// Seems related - if you're ok with numbers all the time, show some more :)
|
||||||
if (g_Config.iShowFPSCounter != 0) {
|
if (g_Config.iShowFPSCounter != 0) {
|
||||||
|
@ -1713,6 +1717,29 @@ void FramebufferManagerCommon::Resized() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FramebufferManagerCommon::DestroyAllFBOs() {
|
||||||
|
currentRenderVfb_ = nullptr;
|
||||||
|
displayFramebuf_ = nullptr;
|
||||||
|
prevDisplayFramebuf_ = nullptr;
|
||||||
|
prevPrevDisplayFramebuf_ = nullptr;
|
||||||
|
|
||||||
|
for (VirtualFramebuffer *vfb : vfbs_) {
|
||||||
|
INFO_LOG(FRAMEBUF, "Destroying FBO for %08x : %i x %i x %i", vfb->fb_address, vfb->width, vfb->height, vfb->format);
|
||||||
|
DestroyFramebuf(vfb);
|
||||||
|
}
|
||||||
|
vfbs_.clear();
|
||||||
|
|
||||||
|
for (VirtualFramebuffer *vfb : bvfbs_) {
|
||||||
|
DestroyFramebuf(vfb);
|
||||||
|
}
|
||||||
|
bvfbs_.clear();
|
||||||
|
|
||||||
|
for (auto &tempFB : tempFBOs_) {
|
||||||
|
tempFB.second.fbo->Release();
|
||||||
|
}
|
||||||
|
tempFBOs_.clear();
|
||||||
|
}
|
||||||
|
|
||||||
Draw::Framebuffer *FramebufferManagerCommon::GetTempFBO(TempFBO reason, u16 w, u16 h, Draw::FBColorDepth depth) {
|
Draw::Framebuffer *FramebufferManagerCommon::GetTempFBO(TempFBO reason, u16 w, u16 h, Draw::FBColorDepth depth) {
|
||||||
u64 key = ((u64)reason << 48) | ((u64)depth << 32) | ((u32)w << 16) | h;
|
u64 key = ((u64)reason << 48) | ((u64)depth << 32) | ((u32)w << 16) | h;
|
||||||
auto it = tempFBOs_.find(key);
|
auto it = tempFBOs_.find(key);
|
||||||
|
|
|
@ -296,6 +296,7 @@ public:
|
||||||
void SetSafeSize(u16 w, u16 h);
|
void SetSafeSize(u16 w, u16 h);
|
||||||
|
|
||||||
virtual void Resized();
|
virtual void Resized();
|
||||||
|
virtual void DestroyAllFBOs();
|
||||||
|
|
||||||
Draw::Framebuffer *GetTempFBO(TempFBO reason, u16 w, u16 h, Draw::FBColorDepth colorDepth = Draw::FBO_8888);
|
Draw::Framebuffer *GetTempFBO(TempFBO reason, u16 w, u16 h, Draw::FBColorDepth colorDepth = Draw::FBO_8888);
|
||||||
|
|
||||||
|
|
|
@ -498,39 +498,3 @@ void FramebufferManagerD3D11::EndFrame() {
|
||||||
void FramebufferManagerD3D11::DeviceLost() {
|
void FramebufferManagerD3D11::DeviceLost() {
|
||||||
DestroyAllFBOs();
|
DestroyAllFBOs();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramebufferManagerD3D11::DestroyAllFBOs() {
|
|
||||||
currentRenderVfb_ = nullptr;
|
|
||||||
displayFramebuf_ = nullptr;
|
|
||||||
prevDisplayFramebuf_ = nullptr;
|
|
||||||
prevPrevDisplayFramebuf_ = nullptr;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < vfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = vfbs_[i];
|
|
||||||
INFO_LOG(FRAMEBUF, "Destroying FBO for %08x : %i x %i x %i", vfb->fb_address, vfb->width, vfb->height, vfb->format);
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
vfbs_.clear();
|
|
||||||
|
|
||||||
for (size_t i = 0; i < bvfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = bvfbs_[i];
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
bvfbs_.clear();
|
|
||||||
|
|
||||||
for (auto &tempFB : tempFBOs_) {
|
|
||||||
tempFB.second.fbo->Release();
|
|
||||||
}
|
|
||||||
tempFBOs_.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FramebufferManagerD3D11::Resized() {
|
|
||||||
FramebufferManagerCommon::Resized();
|
|
||||||
|
|
||||||
if (UpdateSize()) {
|
|
||||||
DestroyAllFBOs();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Might have a new post shader - let's compile it.
|
|
||||||
presentation_->UpdatePostShader();
|
|
||||||
}
|
|
||||||
|
|
|
@ -41,10 +41,7 @@ public:
|
||||||
void SetDrawEngine(DrawEngineD3D11 *td);
|
void SetDrawEngine(DrawEngineD3D11 *td);
|
||||||
void DrawActiveTexture(float x, float y, float w, float h, float destW, float destH, float u0, float v0, float u1, float v1, int uvRotation, int flags) override;
|
void DrawActiveTexture(float x, float y, float w, float h, float destW, float destH, float u0, float v0, float u1, float v1, int uvRotation, int flags) override;
|
||||||
|
|
||||||
void DestroyAllFBOs();
|
|
||||||
|
|
||||||
void EndFrame();
|
void EndFrame();
|
||||||
void Resized() override;
|
|
||||||
void DeviceLost();
|
void DeviceLost();
|
||||||
void ReformatFramebufferFrom(VirtualFramebuffer *vfb, GEBufferFormat old) override;
|
void ReformatFramebufferFrom(VirtualFramebuffer *vfb, GEBufferFormat old) override;
|
||||||
|
|
||||||
|
|
|
@ -359,11 +359,12 @@ void GPU_D3D11::DoState(PointerWrap &p) {
|
||||||
// TODO: Some of these things may not be necessary.
|
// TODO: Some of these things may not be necessary.
|
||||||
// None of these are necessary when saving.
|
// None of these are necessary when saving.
|
||||||
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
||||||
textureCacheD3D11_->Clear(true);
|
textureCache_->Clear(true);
|
||||||
|
depalShaderCache_->Clear();
|
||||||
drawEngine_.ClearTrackedVertexArrays();
|
drawEngine_.ClearTrackedVertexArrays();
|
||||||
|
|
||||||
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
||||||
framebufferManagerD3D11_->DestroyAllFBOs();
|
framebufferManager_->DestroyAllFBOs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -597,23 +597,7 @@ static const D3DVERTEXELEMENT9 g_FramebufferVertexElements[] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramebufferManagerDX9::DestroyAllFBOs() {
|
void FramebufferManagerDX9::DestroyAllFBOs() {
|
||||||
currentRenderVfb_ = 0;
|
FramebufferManagerCommon::DestroyAllFBOs();
|
||||||
displayFramebuf_ = 0;
|
|
||||||
prevDisplayFramebuf_ = 0;
|
|
||||||
prevPrevDisplayFramebuf_ = 0;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < vfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = vfbs_[i];
|
|
||||||
INFO_LOG(FRAMEBUF, "Destroying FBO for %08x : %i x %i x %i", vfb->fb_address, vfb->width, vfb->height, vfb->format);
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
vfbs_.clear();
|
|
||||||
|
|
||||||
for (size_t i = 0; i < bvfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = bvfbs_[i];
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
bvfbs_.clear();
|
|
||||||
|
|
||||||
for (auto &it : offscreenSurfaces_) {
|
for (auto &it : offscreenSurfaces_) {
|
||||||
it.second.surface->Release();
|
it.second.surface->Release();
|
||||||
|
@ -621,15 +605,6 @@ static const D3DVERTEXELEMENT9 g_FramebufferVertexElements[] = {
|
||||||
offscreenSurfaces_.clear();
|
offscreenSurfaces_.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramebufferManagerDX9::Resized() {
|
|
||||||
FramebufferManagerCommon::Resized();
|
|
||||||
|
|
||||||
if (UpdateSize()) {
|
|
||||||
DestroyAllFBOs();
|
|
||||||
}
|
|
||||||
presentation_->UpdatePostShader();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FramebufferManagerDX9::GetFramebuffer(u32 fb_address, int fb_stride, GEBufferFormat fb_format, GPUDebugBuffer &buffer, int maxRes) {
|
bool FramebufferManagerDX9::GetFramebuffer(u32 fb_address, int fb_stride, GEBufferFormat fb_format, GPUDebugBuffer &buffer, int maxRes) {
|
||||||
VirtualFramebuffer *vfb = currentRenderVfb_;
|
VirtualFramebuffer *vfb = currentRenderVfb_;
|
||||||
if (!vfb) {
|
if (!vfb) {
|
||||||
|
|
|
@ -47,7 +47,6 @@ public:
|
||||||
void DestroyAllFBOs();
|
void DestroyAllFBOs();
|
||||||
|
|
||||||
void EndFrame();
|
void EndFrame();
|
||||||
void Resized() override;
|
|
||||||
void DeviceLost();
|
void DeviceLost();
|
||||||
void ReformatFramebufferFrom(VirtualFramebuffer *vfb, GEBufferFormat old) override;
|
void ReformatFramebufferFrom(VirtualFramebuffer *vfb, GEBufferFormat old) override;
|
||||||
|
|
||||||
|
|
|
@ -396,11 +396,12 @@ void GPU_DX9::DoState(PointerWrap &p) {
|
||||||
// TODO: Some of these things may not be necessary.
|
// TODO: Some of these things may not be necessary.
|
||||||
// None of these are necessary when saving.
|
// None of these are necessary when saving.
|
||||||
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
||||||
textureCacheDX9_->Clear(true);
|
textureCache_->Clear(true);
|
||||||
|
depalShaderCache_.Clear();
|
||||||
drawEngine_.ClearTrackedVertexArrays();
|
drawEngine_.ClearTrackedVertexArrays();
|
||||||
|
|
||||||
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
||||||
framebufferManagerDX9_->DestroyAllFBOs();
|
framebufferManager_->DestroyAllFBOs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -449,41 +449,10 @@ void FramebufferManagerGLES::DeviceRestore(Draw::DrawContext *draw) {
|
||||||
CreateDeviceObjects();
|
CreateDeviceObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramebufferManagerGLES::DestroyAllFBOs() {
|
|
||||||
currentRenderVfb_ = 0;
|
|
||||||
displayFramebuf_ = 0;
|
|
||||||
prevDisplayFramebuf_ = 0;
|
|
||||||
prevPrevDisplayFramebuf_ = 0;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < vfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = vfbs_[i];
|
|
||||||
INFO_LOG(FRAMEBUF, "Destroying FBO for %08x : %i x %i x %i", vfb->fb_address, vfb->width, vfb->height, vfb->format);
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
vfbs_.clear();
|
|
||||||
|
|
||||||
for (size_t i = 0; i < bvfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = bvfbs_[i];
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
bvfbs_.clear();
|
|
||||||
|
|
||||||
for (auto &tempFB : tempFBOs_) {
|
|
||||||
tempFB.second.fbo->Release();
|
|
||||||
}
|
|
||||||
tempFBOs_.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FramebufferManagerGLES::Resized() {
|
void FramebufferManagerGLES::Resized() {
|
||||||
FramebufferManagerCommon::Resized();
|
FramebufferManagerCommon::Resized();
|
||||||
|
|
||||||
render_->Resize(PSP_CoreParameter().pixelWidth, PSP_CoreParameter().pixelHeight);
|
render_->Resize(PSP_CoreParameter().pixelWidth, PSP_CoreParameter().pixelHeight);
|
||||||
if (UpdateSize()) {
|
|
||||||
DestroyAllFBOs();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Might have a new post shader - let's compile it.
|
|
||||||
presentation_->UpdatePostShader();
|
|
||||||
|
|
||||||
// render_->SetLineWidth(renderWidth_ / 480.0f);
|
// render_->SetLineWidth(renderWidth_ / 480.0f);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,8 +43,6 @@ public:
|
||||||
// x,y,w,h are relative to destW, destH which fill out the target completely.
|
// x,y,w,h are relative to destW, destH which fill out the target completely.
|
||||||
void DrawActiveTexture(float x, float y, float w, float h, float destW, float destH, float u0, float v0, float u1, float v1, int uvRotation, int flags) override;
|
void DrawActiveTexture(float x, float y, float w, float h, float destW, float destH, float u0, float v0, float u1, float v1, int uvRotation, int flags) override;
|
||||||
|
|
||||||
void DestroyAllFBOs();
|
|
||||||
|
|
||||||
virtual void Init() override;
|
virtual void Init() override;
|
||||||
void EndFrame();
|
void EndFrame();
|
||||||
void Resized() override;
|
void Resized() override;
|
||||||
|
|
|
@ -342,9 +342,7 @@ void GPU_GLES::DeviceRestore() {
|
||||||
|
|
||||||
void GPU_GLES::Reinitialize() {
|
void GPU_GLES::Reinitialize() {
|
||||||
GPUCommon::Reinitialize();
|
GPUCommon::Reinitialize();
|
||||||
textureCacheGL_->Clear(true);
|
|
||||||
depalShaderCache_.Clear();
|
depalShaderCache_.Clear();
|
||||||
framebufferManagerGL_->DestroyAllFBOs();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPU_GLES::InitClear() {
|
void GPU_GLES::InitClear() {
|
||||||
|
@ -510,11 +508,12 @@ void GPU_GLES::DoState(PointerWrap &p) {
|
||||||
// None of these are necessary when saving.
|
// None of these are necessary when saving.
|
||||||
// In Freeze-Frame mode, we don't want to do any of this.
|
// In Freeze-Frame mode, we don't want to do any of this.
|
||||||
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
||||||
textureCacheGL_->Clear(true);
|
textureCache_->Clear(true);
|
||||||
|
depalShaderCache_.Clear();
|
||||||
drawEngine_.ClearTrackedVertexArrays();
|
drawEngine_.ClearTrackedVertexArrays();
|
||||||
|
|
||||||
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
||||||
framebufferManagerGL_->DestroyAllFBOs();
|
framebufferManager_->DestroyAllFBOs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -459,6 +459,11 @@ void GPUCommon::Reinitialize() {
|
||||||
busyTicks = 0;
|
busyTicks = 0;
|
||||||
timeSpentStepping_ = 0.0;
|
timeSpentStepping_ = 0.0;
|
||||||
interruptsEnabled_ = true;
|
interruptsEnabled_ = true;
|
||||||
|
|
||||||
|
if (textureCache_)
|
||||||
|
textureCache_->Clear(true);
|
||||||
|
if (framebufferManager_)
|
||||||
|
framebufferManager_->DestroyAllFBOs();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPUCommon::UpdateVsyncInterval(bool force) {
|
void GPUCommon::UpdateVsyncInterval(bool force) {
|
||||||
|
|
|
@ -303,10 +303,10 @@ protected:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FramebufferManagerCommon *framebufferManager_;
|
FramebufferManagerCommon *framebufferManager_ = nullptr;
|
||||||
TextureCacheCommon *textureCache_;
|
TextureCacheCommon *textureCache_ = nullptr;
|
||||||
DrawEngineCommon *drawEngineCommon_;
|
DrawEngineCommon *drawEngineCommon_ = nullptr;
|
||||||
ShaderManagerCommon *shaderManager_;
|
ShaderManagerCommon *shaderManager_ = nullptr;
|
||||||
|
|
||||||
GraphicsContext *gfxCtx_;
|
GraphicsContext *gfxCtx_;
|
||||||
Draw::DrawContext *draw_;
|
Draw::DrawContext *draw_;
|
||||||
|
|
|
@ -448,39 +448,3 @@ void FramebufferManagerVulkan::DeviceRestore(VulkanContext *vulkan, Draw::DrawCo
|
||||||
|
|
||||||
InitDeviceObjects();
|
InitDeviceObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FramebufferManagerVulkan::DestroyAllFBOs() {
|
|
||||||
currentRenderVfb_ = 0;
|
|
||||||
displayFramebuf_ = 0;
|
|
||||||
prevDisplayFramebuf_ = 0;
|
|
||||||
prevPrevDisplayFramebuf_ = 0;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < vfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = vfbs_[i];
|
|
||||||
INFO_LOG(FRAMEBUF, "Destroying FBO for %08x : %i x %i x %i", vfb->fb_address, vfb->width, vfb->height, vfb->format);
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
vfbs_.clear();
|
|
||||||
|
|
||||||
for (size_t i = 0; i < bvfbs_.size(); ++i) {
|
|
||||||
VirtualFramebuffer *vfb = bvfbs_[i];
|
|
||||||
DestroyFramebuf(vfb);
|
|
||||||
}
|
|
||||||
bvfbs_.clear();
|
|
||||||
|
|
||||||
for (auto &tempFB : tempFBOs_) {
|
|
||||||
tempFB.second.fbo->Release();
|
|
||||||
}
|
|
||||||
tempFBOs_.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FramebufferManagerVulkan::Resized() {
|
|
||||||
FramebufferManagerCommon::Resized();
|
|
||||||
|
|
||||||
if (UpdateSize()) {
|
|
||||||
DestroyAllFBOs();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Might have a new post shader - let's compile it.
|
|
||||||
presentation_->UpdatePostShader();
|
|
||||||
}
|
|
||||||
|
|
|
@ -46,14 +46,11 @@ public:
|
||||||
// x,y,w,h are relative to destW, destH which fill out the target completely.
|
// x,y,w,h are relative to destW, destH which fill out the target completely.
|
||||||
void DrawActiveTexture(float x, float y, float w, float h, float destW, float destH, float u0, float v0, float u1, float v1, int uvRotation, int flags) override;
|
void DrawActiveTexture(float x, float y, float w, float h, float destW, float destH, float u0, float v0, float u1, float v1, int uvRotation, int flags) override;
|
||||||
|
|
||||||
void DestroyAllFBOs();
|
|
||||||
|
|
||||||
virtual void Init() override;
|
virtual void Init() override;
|
||||||
|
|
||||||
void BeginFrameVulkan(); // there's a BeginFrame in the base class, which this calls
|
void BeginFrameVulkan(); // there's a BeginFrame in the base class, which this calls
|
||||||
void EndFrame();
|
void EndFrame();
|
||||||
|
|
||||||
void Resized() override;
|
|
||||||
void DeviceLost();
|
void DeviceLost();
|
||||||
void DeviceRestore(VulkanContext *vulkan, Draw::DrawContext *draw);
|
void DeviceRestore(VulkanContext *vulkan, Draw::DrawContext *draw);
|
||||||
int GetLineWidth();
|
int GetLineWidth();
|
||||||
|
|
|
@ -413,9 +413,7 @@ void GPU_Vulkan::BuildReportingInfo() {
|
||||||
|
|
||||||
void GPU_Vulkan::Reinitialize() {
|
void GPU_Vulkan::Reinitialize() {
|
||||||
GPUCommon::Reinitialize();
|
GPUCommon::Reinitialize();
|
||||||
textureCacheVulkan_->Clear(true);
|
|
||||||
depalShaderCache_.Clear();
|
depalShaderCache_.Clear();
|
||||||
framebufferManagerVulkan_->DestroyAllFBOs();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPU_Vulkan::InitClear() {
|
void GPU_Vulkan::InitClear() {
|
||||||
|
@ -613,11 +611,11 @@ void GPU_Vulkan::DoState(PointerWrap &p) {
|
||||||
// None of these are necessary when saving.
|
// None of these are necessary when saving.
|
||||||
// In Freeze-Frame mode, we don't want to do any of this.
|
// In Freeze-Frame mode, we don't want to do any of this.
|
||||||
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
if (p.mode == p.MODE_READ && !PSP_CoreParameter().frozen) {
|
||||||
textureCacheVulkan_->Clear(true);
|
textureCache_->Clear(true);
|
||||||
depalShaderCache_.Clear();
|
depalShaderCache_.Clear();
|
||||||
|
|
||||||
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
gstate_c.Dirty(DIRTY_TEXTURE_IMAGE);
|
||||||
framebufferManagerVulkan_->DestroyAllFBOs();
|
framebufferManager_->DestroyAllFBOs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue