mirror of https://github.com/PCSX2/pcsx2.git
gsdx-d3d11: Copy render target when it matches texture in slot 4
Needed for channel shuffle, this copies the render target when it's the same as the resource texture bound on slot 4.
This commit is contained in:
parent
554b797b92
commit
ef0ebd6517
|
@ -479,7 +479,26 @@ void GSDevice11::DrawPrimitive()
|
||||||
|
|
||||||
void GSDevice11::DrawIndexedPrimitive()
|
void GSDevice11::DrawIndexedPrimitive()
|
||||||
{
|
{
|
||||||
m_ctx->DrawIndexed(m_index.count, m_index.start, m_vertex.start);
|
// DX can't read from the FB
|
||||||
|
// So let's copy it and set that as the shader
|
||||||
|
// resource for slot 4 to avoid issues.
|
||||||
|
if (m_state.ps_sr_texture[4] && m_state.ps_sr_texture[4]->Equal(m_state.rt_texture))
|
||||||
|
{
|
||||||
|
//fprintf(stdout, "FB read detected on slot 4: copying fb...\n");
|
||||||
|
|
||||||
|
GSTexture* cp = CopyRenderTarget(m_state.rt_texture);
|
||||||
|
|
||||||
|
PSSetShaderResource(4, cp);
|
||||||
|
PSUpdateShaderState();
|
||||||
|
|
||||||
|
m_ctx->DrawIndexed(m_index.count, m_index.start, m_vertex.start);
|
||||||
|
|
||||||
|
Recycle(cp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_ctx->DrawIndexed(m_index.count, m_index.start, m_vertex.start);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSDevice11::DrawIndexedPrimitive(int offset, int count)
|
void GSDevice11::DrawIndexedPrimitive(int offset, int count)
|
||||||
|
|
Loading…
Reference in New Issue