memory_manager: Use GPUVAdddr, not PAddr, for GPU addresses.
This commit is contained in:
		@@ -145,7 +145,7 @@ void Maxwell3D::ProcessQueryGet() {
 | 
			
		||||
    GPUVAddr sequence_address = regs.query.QueryAddress();
 | 
			
		||||
    // Since the sequence address is given as a GPU VAddr, we have to convert it to an application
 | 
			
		||||
    // VAddr before writing.
 | 
			
		||||
    VAddr address = memory_manager.PhysicalToVirtualAddress(sequence_address);
 | 
			
		||||
    VAddr address = memory_manager.GpuToCpuAddress(sequence_address);
 | 
			
		||||
 | 
			
		||||
    // TODO(Subv): Support the other query units.
 | 
			
		||||
    ASSERT_MSG(regs.query.query_get.unit == Regs::QueryUnit::Crop,
 | 
			
		||||
@@ -225,8 +225,7 @@ void Maxwell3D::ProcessCBData(u32 value) {
 | 
			
		||||
    // Don't allow writing past the end of the buffer.
 | 
			
		||||
    ASSERT(regs.const_buffer.cb_pos + sizeof(u32) <= regs.const_buffer.cb_size);
 | 
			
		||||
 | 
			
		||||
    VAddr address =
 | 
			
		||||
        memory_manager.PhysicalToVirtualAddress(buffer_address + regs.const_buffer.cb_pos);
 | 
			
		||||
    VAddr address = memory_manager.GpuToCpuAddress(buffer_address + regs.const_buffer.cb_pos);
 | 
			
		||||
 | 
			
		||||
    Memory::Write32(address, value);
 | 
			
		||||
 | 
			
		||||
@@ -238,7 +237,7 @@ Texture::TICEntry Maxwell3D::GetTICEntry(u32 tic_index) const {
 | 
			
		||||
    GPUVAddr tic_base_address = regs.tic.TICAddress();
 | 
			
		||||
 | 
			
		||||
    GPUVAddr tic_address_gpu = tic_base_address + tic_index * sizeof(Texture::TICEntry);
 | 
			
		||||
    VAddr tic_address_cpu = memory_manager.PhysicalToVirtualAddress(tic_address_gpu);
 | 
			
		||||
    VAddr tic_address_cpu = memory_manager.GpuToCpuAddress(tic_address_gpu);
 | 
			
		||||
 | 
			
		||||
    Texture::TICEntry tic_entry;
 | 
			
		||||
    Memory::ReadBlock(tic_address_cpu, &tic_entry, sizeof(Texture::TICEntry));
 | 
			
		||||
@@ -268,7 +267,7 @@ Texture::TSCEntry Maxwell3D::GetTSCEntry(u32 tsc_index) const {
 | 
			
		||||
    GPUVAddr tsc_base_address = regs.tsc.TSCAddress();
 | 
			
		||||
 | 
			
		||||
    GPUVAddr tsc_address_gpu = tsc_base_address + tsc_index * sizeof(Texture::TSCEntry);
 | 
			
		||||
    VAddr tsc_address_cpu = memory_manager.PhysicalToVirtualAddress(tsc_address_gpu);
 | 
			
		||||
    VAddr tsc_address_cpu = memory_manager.GpuToCpuAddress(tsc_address_gpu);
 | 
			
		||||
 | 
			
		||||
    Texture::TSCEntry tsc_entry;
 | 
			
		||||
    Memory::ReadBlock(tsc_address_cpu, &tsc_entry, sizeof(Texture::TSCEntry));
 | 
			
		||||
@@ -293,7 +292,7 @@ std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderSt
 | 
			
		||||
         current_texture < tex_info_buffer_end; current_texture += sizeof(Texture::TextureHandle)) {
 | 
			
		||||
 | 
			
		||||
        Texture::TextureHandle tex_handle{
 | 
			
		||||
            Memory::Read32(memory_manager.PhysicalToVirtualAddress(current_texture))};
 | 
			
		||||
            Memory::Read32(memory_manager.GpuToCpuAddress(current_texture))};
 | 
			
		||||
 | 
			
		||||
        Texture::FullTextureInfo tex_info{};
 | 
			
		||||
        // TODO(Subv): Use the shader to determine which textures are actually accessed.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user