mirror of https://github.com/PCSX2/pcsx2.git
GSdx-hw: Store bounding rectangle in protected member
This commit is contained in:
parent
7f5dc2135e
commit
acf771edd8
|
@ -1081,7 +1081,7 @@ void GSRendererHW::Draw()
|
||||||
}
|
}
|
||||||
|
|
||||||
// The rectangle of the draw
|
// The rectangle of the draw
|
||||||
GSVector4i r = GSVector4i(m_vt.m_min.p.xyxy(m_vt.m_max.p)).rintersect(GSVector4i(context->scissor.in));
|
m_r = GSVector4i(m_vt.m_min.p.xyxy(m_vt.m_max.p)).rintersect(GSVector4i(context->scissor.in));
|
||||||
|
|
||||||
if(m_hacks.m_oi && !(this->*m_hacks.m_oi)(rt_tex, ds_tex, tex))
|
if(m_hacks.m_oi && !(this->*m_hacks.m_oi)(rt_tex, ds_tex, tex))
|
||||||
{
|
{
|
||||||
|
@ -1089,7 +1089,7 @@ void GSRendererHW::Draw()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!OI_BlitFMV(rt, tex, r)) {
|
if (!OI_BlitFMV(rt, tex, m_r)) {
|
||||||
GL_INS("Warning skipping a draw call (%d)", s_n);
|
GL_INS("Warning skipping a draw call (%d)", s_n);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1102,7 +1102,7 @@ void GSRendererHW::Draw()
|
||||||
&& !m_context->TEST.ATE // no alpha test
|
&& !m_context->TEST.ATE // no alpha test
|
||||||
&& (!m_context->TEST.ZTE || m_context->TEST.ZTST == ZTST_ALWAYS) // no depth test
|
&& (!m_context->TEST.ZTE || m_context->TEST.ZTST == ZTST_ALWAYS) // no depth test
|
||||||
&& (m_vt.m_eq.rgba == 0xFFFF) // constant color write
|
&& (m_vt.m_eq.rgba == 0xFFFF) // constant color write
|
||||||
&& r.x == 0 && r.y == 0) { // Likely full buffer write
|
&& m_r.x == 0 && m_r.y == 0) { // Likely full buffer write
|
||||||
|
|
||||||
OI_GsMemClear();
|
OI_GsMemClear();
|
||||||
|
|
||||||
|
@ -1165,20 +1165,20 @@ void GSRendererHW::Draw()
|
||||||
|
|
||||||
// Help to detect rendering outside of the framebuffer
|
// Help to detect rendering outside of the framebuffer
|
||||||
#if _DEBUG
|
#if _DEBUG
|
||||||
if (m_upscale_multiplier * r.z > m_width) {
|
if (m_upscale_multiplier * m_r.z > m_width) {
|
||||||
GL_INS("ERROR: RT width is too small only %d but require %d", m_width, m_upscale_multiplier * r.z);
|
GL_INS("ERROR: RT width is too small only %d but require %d", m_width, m_upscale_multiplier * m_r.z);
|
||||||
}
|
}
|
||||||
if (m_upscale_multiplier * r.w > m_height) {
|
if (m_upscale_multiplier * m_r.w > m_height) {
|
||||||
GL_INS("ERROR: RT height is too small only %d but require %d", m_height, m_upscale_multiplier * r.w);
|
GL_INS("ERROR: RT height is too small only %d but require %d", m_height, m_upscale_multiplier * m_r.w);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(fm != 0xffffffff && rt)
|
if(fm != 0xffffffff && rt)
|
||||||
{
|
{
|
||||||
//rt->m_valid = rt->m_valid.runion(r);
|
//rt->m_valid = rt->m_valid.runion(r);
|
||||||
rt->UpdateValidity(r);
|
rt->UpdateValidity(m_r);
|
||||||
|
|
||||||
m_tc->InvalidateVideoMem(context->offset.fb, r, false);
|
m_tc->InvalidateVideoMem(context->offset.fb, m_r, false);
|
||||||
|
|
||||||
m_tc->InvalidateVideoMemType(GSTextureCache::DepthStencil, context->FRAME.Block());
|
m_tc->InvalidateVideoMemType(GSTextureCache::DepthStencil, context->FRAME.Block());
|
||||||
}
|
}
|
||||||
|
@ -1186,9 +1186,9 @@ void GSRendererHW::Draw()
|
||||||
if(zm != 0xffffffff && ds)
|
if(zm != 0xffffffff && ds)
|
||||||
{
|
{
|
||||||
//ds->m_valid = ds->m_valid.runion(r);
|
//ds->m_valid = ds->m_valid.runion(r);
|
||||||
ds->UpdateValidity(r);
|
ds->UpdateValidity(m_r);
|
||||||
|
|
||||||
m_tc->InvalidateVideoMem(context->offset.zb, r, false);
|
m_tc->InvalidateVideoMem(context->offset.zb, m_r, false);
|
||||||
|
|
||||||
m_tc->InvalidateVideoMemType(GSTextureCache::RenderTarget, context->ZBUF.Block());
|
m_tc->InvalidateVideoMemType(GSTextureCache::RenderTarget, context->ZBUF.Block());
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,6 +139,7 @@ private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
GSTextureCache* m_tc;
|
GSTextureCache* m_tc;
|
||||||
|
GSVector4i m_r;
|
||||||
|
|
||||||
virtual void DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* tex) = 0;
|
virtual void DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* tex) = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue