softgpu: Skip flushing on no change.

Minor tweak, we sometimes try to flush even without anything to flush, and
were previously rechecking a lot of things.
This commit is contained in:
Unknown W. Brackets 2022-09-19 08:38:11 -07:00
parent 259abf79dd
commit e2929fb395
2 changed files with 13 additions and 5 deletions

View File

@ -474,6 +474,9 @@ void BinManager::Drain() {
}
void BinManager::Flush(const char *reason) {
if (queueRange_.x1 == 0x7FFFFFFF)
return;
double st;
if (coreCollectDebugStats)
st = time_now_d();

View File

@ -1006,19 +1006,24 @@ void SoftGPU::Execute_LoadClut(u32 op, u32 diff) {
void SoftGPU::Execute_FramebufPtr(u32 op, u32 diff) {
// We assume fb.data won't change while we're drawing.
drawEngine_->transformUnit.Flush("framebuf");
fb.data = Memory::GetPointerWrite(gstate.getFrameBufAddress());
if (diff) {
drawEngine_->transformUnit.Flush("framebuf");
fb.data = Memory::GetPointerWrite(gstate.getFrameBufAddress());
}
}
void SoftGPU::Execute_FramebufFormat(u32 op, u32 diff) {
// We should flush, because ranges within bins may change.
drawEngine_->transformUnit.Flush("framebuf");
if (diff)
drawEngine_->transformUnit.Flush("framebuf");
}
void SoftGPU::Execute_ZbufPtr(u32 op, u32 diff) {
// We assume depthbuf.data won't change while we're drawing.
drawEngine_->transformUnit.Flush("depthbuf");
depthbuf.data = Memory::GetPointerWrite(gstate.getDepthBufAddress());
if (diff) {
drawEngine_->transformUnit.Flush("depthbuf");
depthbuf.data = Memory::GetPointerWrite(gstate.getDepthBufAddress());
}
}
void SoftGPU::Execute_VertexType(u32 op, u32 diff) {