mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 23:06:43 +08:00 
			
		
		
		
	Buffer Cache: fix discard writes.
This commit is contained in:
		
							parent
							
								
									bc4e58eb51
								
							
						
					
					
						commit
						acc99433c7
					
				| @ -289,8 +289,11 @@ std::pair<typename P::Buffer*, u32> BufferCache<P>::ObtainBuffer(GPUVAddr gpu_ad | ||||
|         MarkWrittenBuffer(buffer_id, *cpu_addr, size); | ||||
|         break; | ||||
|     case ObtainBufferOperation::DiscardWrite: { | ||||
|         IntervalType interval{*cpu_addr, size}; | ||||
|         VAddr cpu_addr_start = Common::AlignDown(*cpu_addr, 64); | ||||
|         VAddr cpu_addr_end = Common::AlignUp(*cpu_addr + size, 64); | ||||
|         IntervalType interval{cpu_addr_start, cpu_addr_end}; | ||||
|         ClearDownload(interval); | ||||
|         common_ranges.subtract(interval); | ||||
|         break; | ||||
|     } | ||||
|     default: | ||||
| @ -1159,6 +1162,11 @@ void BufferCache<P>::UpdateDrawIndirect() { | ||||
|             .size = static_cast<u32>(size), | ||||
|             .buffer_id = FindBuffer(*cpu_addr, static_cast<u32>(size)), | ||||
|         }; | ||||
|         VAddr cpu_addr_start = Common::AlignDown(*cpu_addr, 64); | ||||
|         VAddr cpu_addr_end = Common::AlignUp(*cpu_addr + size, 64); | ||||
|         IntervalType interval{cpu_addr_start, cpu_addr_end}; | ||||
|         ClearDownload(interval); | ||||
|         common_ranges.subtract(interval); | ||||
|     }; | ||||
|     if (current_draw_indirect->include_count) { | ||||
|         update(current_draw_indirect->count_start_address, sizeof(u32), | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user