[GPU] Check page access only once for specific range

This commit is contained in:
Gliniak 2024-08-10 21:33:56 +02:00
parent 1864f3d9f2
commit feb88ee6b1
1 changed files with 4 additions and 1 deletions

View File

@ -420,7 +420,8 @@ bool D3D12SharedMemory::UploadRanges(
uint32_t upload_range_length = upload_range.second; uint32_t upload_range_length = upload_range.second;
trace_writer_.WriteMemoryRead(upload_range_start << page_size_log2(), trace_writer_.WriteMemoryRead(upload_range_start << page_size_log2(),
upload_range_length << page_size_log2()); upload_range_length << page_size_log2());
while (upload_range_length != 0) {
if (upload_range_length > 0) {
// Hacky handling for certain games (494707D4, 55530874) that crashes due // Hacky handling for certain games (494707D4, 55530874) that crashes due
// to accessing unallocated pages // to accessing unallocated pages
const uint32_t upload_range_last_page = const uint32_t upload_range_last_page =
@ -436,7 +437,9 @@ bool D3D12SharedMemory::UploadRanges(
XELOGE("Invalid upload range for GPU: {:08X}", upload_range_start); XELOGE("Invalid upload range for GPU: {:08X}", upload_range_start);
return false; return false;
} }
}
while (upload_range_length != 0) {
ID3D12Resource* upload_buffer; ID3D12Resource* upload_buffer;
size_t upload_buffer_offset, upload_buffer_size; size_t upload_buffer_offset, upload_buffer_size;
uint8_t* upload_buffer_mapping = upload_buffer_pool_->RequestPartial( uint8_t* upload_buffer_mapping = upload_buffer_pool_->RequestPartial(