DMA: Delay GPU transfers by block count

Needs real GPU timings, but fixes NFS5 in the meantime.
This commit is contained in:
Connor McLaughlin 2019-12-29 15:34:05 +10:00
parent 41cf894488
commit 0639f4264f
2 changed files with 9 additions and 1 deletions

View file

@ -197,6 +197,15 @@ TickCount DMA::GetTransferDelay(Channel channel) const
} }
break; break;
case Channel::GPU:
{
if (cs.channel_control.sync_mode == SyncMode::Request)
return cs.block_control.request.GetBlockCount();
else
return 1;
}
break;
default: default:
return 1; return 1;
} }

View file

@ -54,7 +54,6 @@ public:
private: private:
static constexpr PhysicalMemoryAddress BASE_ADDRESS_MASK = UINT32_C(0x00FFFFFF); static constexpr PhysicalMemoryAddress BASE_ADDRESS_MASK = UINT32_C(0x00FFFFFF);
static constexpr PhysicalMemoryAddress ADDRESS_MASK = UINT32_C(0x001FFFFC); static constexpr PhysicalMemoryAddress ADDRESS_MASK = UINT32_C(0x001FFFFC);
static constexpr u32 TRANSFER_TICKS = 10;
enum class SyncMode : u32 enum class SyncMode : u32
{ {