mirror of https://github.com/PCSX2/pcsx2.git
GS: Skip draws when scissor is invalid
i.e. the bottom-right is greater than the top-left. tombraidertitle.gs.xz hits this.
This commit is contained in:
parent
159d0c060f
commit
828e86bdf4
|
@ -2600,6 +2600,7 @@ void GSState::UpdateScissor()
|
|||
{
|
||||
m_scissor = m_context->scissor.ex;
|
||||
m_ofxy = m_context->scissor.ofxy;
|
||||
m_scissor_invalid = !m_context->scissor.in.gt32(m_context->scissor.in.zwzw()).allfalse();
|
||||
}
|
||||
|
||||
void GSState::UpdateVertexKick()
|
||||
|
@ -3110,6 +3111,9 @@ __forceinline void GSState::VertexKick(u32 skip)
|
|||
if (m < n)
|
||||
return;
|
||||
|
||||
// Skip draws when scissor is out of range (i.e. bottom-right is less than top-left), since everything will get clipped.
|
||||
skip |= static_cast<u32>(m_scissor_invalid);
|
||||
|
||||
if (skip == 0 && (prim != GS_TRIANGLEFAN || m <= 4)) // m_vertex.xy only knows about the last 4 vertices, head could be far behind for fan
|
||||
{
|
||||
GSVector4i pmin, pmax;
|
||||
|
|
|
@ -222,6 +222,7 @@ public:
|
|||
u32 m_crc = 0;
|
||||
CRC::Game m_game = {};
|
||||
std::unique_ptr<GSDumpBase> m_dump;
|
||||
bool m_scissor_invalid = false;
|
||||
bool m_nativeres = false;
|
||||
bool m_mipmap = false;
|
||||
bool m_texflush_flag = false;
|
||||
|
|
Loading…
Reference in New Issue