D3D12: Use helper method for binding EFB render targets
This commit is contained in:
parent
984da2d624
commit
32599559db
|
@ -62,7 +62,7 @@ void ReplaceRGBATexture2D(ID3D12Resource* texture12, const u8* buffer, unsigned
|
||||||
if (current_command_list_executed)
|
if (current_command_list_executed)
|
||||||
{
|
{
|
||||||
g_renderer->SetViewport();
|
g_renderer->SetViewport();
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
}
|
}
|
||||||
|
|
||||||
upload_buffer = s_texture_upload_stream_buffer->GetBuffer();
|
upload_buffer = s_texture_upload_stream_buffer->GetBuffer();
|
||||||
|
|
|
@ -197,12 +197,19 @@ void FramebufferManager::ResolveDepthTexture()
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
|
|
||||||
// Restores proper viewport/scissor settings.
|
// Restores proper viewport/scissor settings.
|
||||||
g_renderer->RestoreAPIState();
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FramebufferManager::RestoreEFBRenderTargets()
|
||||||
|
{
|
||||||
|
D3D::current_command_list->OMSetRenderTargets(1,
|
||||||
|
&FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE,
|
||||||
|
&FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
||||||
|
}
|
||||||
|
|
||||||
u32 FramebufferManager::ReadEFBColorAccessCopy(u32 x, u32 y)
|
u32 FramebufferManager::ReadEFBColorAccessCopy(u32 x, u32 y)
|
||||||
{
|
{
|
||||||
if (!m_efb.color_access_readback_map)
|
if (!m_efb.color_access_readback_map)
|
||||||
|
@ -325,7 +332,7 @@ void FramebufferManager::MapEFBColorAccessCopy()
|
||||||
m_efb.color_tex->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
m_efb.color_tex->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
|
|
||||||
// Restore state after resetting command list
|
// Restore state after resetting command list
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
RestoreEFBRenderTargets();
|
||||||
g_renderer->RestoreAPIState();
|
g_renderer->RestoreAPIState();
|
||||||
|
|
||||||
// Resource copy has finished, so safe to map now
|
// Resource copy has finished, so safe to map now
|
||||||
|
@ -377,7 +384,7 @@ void FramebufferManager::MapEFBDepthAccessCopy()
|
||||||
m_efb.depth_tex->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
m_efb.depth_tex->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
||||||
|
|
||||||
// Restore state after resetting command list
|
// Restore state after resetting command list
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
RestoreEFBRenderTargets();
|
||||||
g_renderer->RestoreAPIState();
|
g_renderer->RestoreAPIState();
|
||||||
|
|
||||||
// Resource copy has finished, so safe to map now
|
// Resource copy has finished, so safe to map now
|
||||||
|
@ -448,7 +455,7 @@ void XFBSource::CopyEFB(float gamma)
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
|
|
||||||
// Restores proper viewport/scissor settings.
|
// Restores proper viewport/scissor settings.
|
||||||
g_renderer->RestoreAPIState();
|
g_renderer->RestoreAPIState();
|
||||||
|
|
|
@ -70,6 +70,8 @@ public:
|
||||||
|
|
||||||
static void ResolveDepthTexture();
|
static void ResolveDepthTexture();
|
||||||
|
|
||||||
|
static void RestoreEFBRenderTargets();
|
||||||
|
|
||||||
// Access EFB from CPU
|
// Access EFB from CPU
|
||||||
static u32 ReadEFBColorAccessCopy(u32 x, u32 y);
|
static u32 ReadEFBColorAccessCopy(u32 x, u32 y);
|
||||||
static float ReadEFBDepthAccessCopy(u32 x, u32 y);
|
static float ReadEFBDepthAccessCopy(u32 x, u32 y);
|
||||||
|
|
|
@ -238,7 +238,7 @@ void PSTextureEncoder::Encode(u8* dst, u32 format, u32 native_width, u32 bytes_p
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D12_SHADER_BYTECODE PSTextureEncoder::SetStaticShader(unsigned int dst_format, PEControl::PixelFormat src_format,
|
D3D12_SHADER_BYTECODE PSTextureEncoder::SetStaticShader(unsigned int dst_format, PEControl::PixelFormat src_format,
|
||||||
|
|
|
@ -280,7 +280,7 @@ Renderer::Renderer(void*& window_handle)
|
||||||
D3D::current_command_list->RSSetViewports(1, &vp);
|
D3D::current_command_list->RSSetViewports(1, &vp);
|
||||||
|
|
||||||
// Already transitioned to appropriate states a few lines up for the clears.
|
// Already transitioned to appropriate states a few lines up for the clears.
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
|
|
||||||
D3D::BeginFrame();
|
D3D::BeginFrame();
|
||||||
}
|
}
|
||||||
|
@ -589,7 +589,7 @@ void Renderer::ReinterpretPixelData(unsigned int convtype)
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::SetBlendMode(bool force_update)
|
void Renderer::SetBlendMode(bool force_update)
|
||||||
|
@ -1000,7 +1000,7 @@ void Renderer::SwapImpl(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
|
|
||||||
SetViewport();
|
SetViewport();
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,7 +168,7 @@ void TextureCache::TCacheEntry::CopyRectangleFromTexture(
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
|
|
||||||
g_renderer->RestoreAPIState();
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ void TextureCache::TCacheEntry::FromRenderTarget(u8* dst, PEControl::PixelFormat
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE);
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
|
|
||||||
g_renderer->RestoreAPIState();
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
@ -490,7 +490,7 @@ void TextureCache::ConvertTexture(TCacheEntryBase* entry, TCacheEntryBase* uncon
|
||||||
|
|
||||||
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
FramebufferManager::GetEFBColorTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_RENDER_TARGET);
|
||||||
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
FramebufferManager::GetEFBDepthTexture()->TransitionToResourceState(D3D::current_command_list, D3D12_RESOURCE_STATE_DEPTH_WRITE );
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
|
|
||||||
g_renderer->RestoreAPIState();
|
g_renderer->RestoreAPIState();
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,7 +169,7 @@ void VertexManager::vFlush(bool use_dst_alpha)
|
||||||
|
|
||||||
g_renderer->SetViewport();
|
g_renderer->SetViewport();
|
||||||
|
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +202,7 @@ void VertexManager::ResetBuffer(u32 stride)
|
||||||
if (command_list_executed)
|
if (command_list_executed)
|
||||||
{
|
{
|
||||||
g_renderer->SetViewport();
|
g_renderer->SetViewport();
|
||||||
D3D::current_command_list->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV12(), FALSE, &FramebufferManager::GetEFBDepthTexture()->GetDSV12());
|
FramebufferManager::RestoreEFBRenderTargets();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_index_stream_buffer_reallocated)
|
if (m_index_stream_buffer_reallocated)
|
||||||
|
|
Loading…
Reference in New Issue