move RestoreAPIState and ResetAPIState into backends
it's a backend specific hack, so it should be here should give a small speedup in dx11 efb2tex
This commit is contained in:
parent
fd06342a97
commit
c5fa3e0f3d
|
@ -164,12 +164,8 @@ void FramebufferManagerBase::CopyToVirtualXFB(u32 xfbAddr, u32 fbWidth, u32 fbHe
|
||||||
// keep stale XFB data from being used
|
// keep stale XFB data from being used
|
||||||
ReplaceVirtualXFB();
|
ReplaceVirtualXFB();
|
||||||
|
|
||||||
g_renderer->ResetAPIState(); // reset any game specific settings
|
|
||||||
|
|
||||||
// Copy EFB data to XFB and restore render target again
|
// Copy EFB data to XFB and restore render target again
|
||||||
vxfb->xfbSource->CopyEFB(Gamma);
|
vxfb->xfbSource->CopyEFB(Gamma);
|
||||||
|
|
||||||
g_renderer->RestoreAPIState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FramebufferManagerBase::VirtualXFBListType::iterator FramebufferManagerBase::FindVirtualXFB(u32 xfbAddr, u32 width, u32 height)
|
FramebufferManagerBase::VirtualXFBListType::iterator FramebufferManagerBase::FindVirtualXFB(u32 xfbAddr, u32 width, u32 height)
|
||||||
|
|
|
@ -814,9 +814,5 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat
|
||||||
|
|
||||||
entry->frameCount = frameCount;
|
entry->frameCount = frameCount;
|
||||||
|
|
||||||
g_renderer->ResetAPIState(); // reset any game specific settings
|
|
||||||
|
|
||||||
entry->FromRenderTarget(dstAddr, dstFormat, srcFormat, srcRect, isIntensity, scaleByHalf, cbufid, colmat);
|
entry->FromRenderTarget(dstAddr, dstFormat, srcFormat, srcRect, isIntensity, scaleByHalf, cbufid, colmat);
|
||||||
|
|
||||||
g_renderer->RestoreAPIState();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,6 +208,8 @@ void XFBSource::DecodeToTexture(u32 xfbAddr, u32 fbWidth, u32 fbHeight)
|
||||||
|
|
||||||
void XFBSource::CopyEFB(float Gamma)
|
void XFBSource::CopyEFB(float Gamma)
|
||||||
{
|
{
|
||||||
|
g_renderer->ResetAPIState(); // reset any game specific settings
|
||||||
|
|
||||||
// Copy EFB data to XFB and restore render target again
|
// Copy EFB data to XFB and restore render target again
|
||||||
const D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, (float)texWidth, (float)texHeight);
|
const D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, (float)texWidth, (float)texHeight);
|
||||||
|
|
||||||
|
@ -222,6 +224,8 @@ void XFBSource::CopyEFB(float Gamma)
|
||||||
|
|
||||||
D3D::context->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV(),
|
D3D::context->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV(),
|
||||||
FramebufferManager::GetEFBDepthTexture()->GetDSV());
|
FramebufferManager::GetEFBDepthTexture()->GetDSV());
|
||||||
|
|
||||||
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace DX11
|
} // namespace DX11
|
|
@ -187,6 +187,8 @@ void FramebufferManager::CopyToRealXFB(u32 xfbAddr, u32 fbWidth, u32 fbHeight, c
|
||||||
|
|
||||||
void XFBSource::CopyEFB(float Gamma)
|
void XFBSource::CopyEFB(float Gamma)
|
||||||
{
|
{
|
||||||
|
g_renderer->ResetAPIState(); // reset any game specific settings
|
||||||
|
|
||||||
// Copy EFB data to XFB and restore render target again
|
// Copy EFB data to XFB and restore render target again
|
||||||
LPDIRECT3DSURFACE9 Rendersurf = NULL;
|
LPDIRECT3DSURFACE9 Rendersurf = NULL;
|
||||||
texture->GetSurfaceLevel(0, &Rendersurf);
|
texture->GetSurfaceLevel(0, &Rendersurf);
|
||||||
|
@ -229,6 +231,8 @@ void XFBSource::CopyEFB(float Gamma)
|
||||||
D3D::dev->SetDepthStencilSurface(FramebufferManager::GetEFBDepthRTSurface());
|
D3D::dev->SetDepthStencilSurface(FramebufferManager::GetEFBDepthRTSurface());
|
||||||
|
|
||||||
Rendersurf->Release();
|
Rendersurf->Release();
|
||||||
|
|
||||||
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace DX9
|
} // namespace DX9
|
||||||
|
|
|
@ -83,6 +83,8 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
|
||||||
bool isIntensity, bool scaleByHalf, unsigned int cbufid,
|
bool isIntensity, bool scaleByHalf, unsigned int cbufid,
|
||||||
const float *colmat)
|
const float *colmat)
|
||||||
{
|
{
|
||||||
|
g_renderer->ResetAPIState(); // reset any game specific settings
|
||||||
|
|
||||||
const LPDIRECT3DTEXTURE9 read_texture = (srcFormat == PIXELFMT_Z24) ?
|
const LPDIRECT3DTEXTURE9 read_texture = (srcFormat == PIXELFMT_Z24) ?
|
||||||
FramebufferManager::GetEFBDepthTexture() :
|
FramebufferManager::GetEFBDepthTexture() :
|
||||||
FramebufferManager::GetEFBColorTexture();
|
FramebufferManager::GetEFBColorTexture();
|
||||||
|
@ -180,6 +182,8 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
|
||||||
D3D::SetTexture(0, NULL);
|
D3D::SetTexture(0, NULL);
|
||||||
D3D::dev->SetRenderTarget(0, FramebufferManager::GetEFBColorRTSurface());
|
D3D::dev->SetRenderTarget(0, FramebufferManager::GetEFBColorRTSurface());
|
||||||
D3D::dev->SetDepthStencilSurface(FramebufferManager::GetEFBDepthRTSurface());
|
D3D::dev->SetDepthStencilSurface(FramebufferManager::GetEFBDepthRTSurface());
|
||||||
|
|
||||||
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width, unsigned int height,
|
TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width, unsigned int height,
|
||||||
|
|
|
@ -309,6 +309,8 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
|
||||||
bool isIntensity, bool scaleByHalf, unsigned int cbufid,
|
bool isIntensity, bool scaleByHalf, unsigned int cbufid,
|
||||||
const float *colmat)
|
const float *colmat)
|
||||||
{
|
{
|
||||||
|
g_renderer->ResetAPIState(); // reset any game specific settings
|
||||||
|
|
||||||
// Make sure to resolve anything we need to read from.
|
// Make sure to resolve anything we need to read from.
|
||||||
const GLuint read_texture = (srcFormat == PIXELFMT_Z24) ?
|
const GLuint read_texture = (srcFormat == PIXELFMT_Z24) ?
|
||||||
FramebufferManager::ResolveAndGetDepthTarget(srcRect) :
|
FramebufferManager::ResolveAndGetDepthTarget(srcRect) :
|
||||||
|
@ -434,6 +436,8 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
|
||||||
SaveTexture(StringFromFormat("%sefb_frame_%i.tga", File::GetUserPath(D_DUMPTEXTURES_IDX).c_str(),
|
SaveTexture(StringFromFormat("%sefb_frame_%i.tga", File::GetUserPath(D_DUMPTEXTURES_IDX).c_str(),
|
||||||
count++).c_str(), GL_TEXTURE_2D, texture, virtual_width, virtual_height, 0);
|
count++).c_str(), GL_TEXTURE_2D, texture, virtual_width, virtual_height, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextureCache::TCacheEntry::SetTextureParameters(const TexMode0 &newmode, const TexMode1 &newmode1)
|
void TextureCache::TCacheEntry::SetTextureParameters(const TexMode0 &newmode, const TexMode1 &newmode1)
|
||||||
|
|
Loading…
Reference in New Issue