mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-11-04 12:34:39 +08:00 
			
		
		
		
	GPU: Interface cleanup.
This commit is contained in:
		
							parent
							
								
									46950ee4de
								
							
						
					
					
						commit
						9d618d0b70
					
				@ -53,10 +53,10 @@ void SetFramebufferLocation(const FramebufferLocation mode) {
 | 
			
		||||
 * Gets the location of the framebuffers
 | 
			
		||||
 * @return Location of framebuffers as FramebufferLocation enum
 | 
			
		||||
 */
 | 
			
		||||
const FramebufferLocation GetFramebufferLocation() {
 | 
			
		||||
    if ((g_regs.framebuffer_top_right_1 & ~Memory::VRAM_MASK) == Memory::VRAM_PADDR) {
 | 
			
		||||
FramebufferLocation GetFramebufferLocation(u32 address) {
 | 
			
		||||
    if ((address & ~Memory::VRAM_MASK) == Memory::VRAM_PADDR) {
 | 
			
		||||
        return FRAMEBUFFER_LOCATION_VRAM;
 | 
			
		||||
    } else if ((g_regs.framebuffer_top_right_1 & ~Memory::FCRAM_MASK) == Memory::FCRAM_PADDR) {
 | 
			
		||||
    } else if ((address & ~Memory::FCRAM_MASK) == Memory::FCRAM_PADDR) {
 | 
			
		||||
        return FRAMEBUFFER_LOCATION_FCRAM;
 | 
			
		||||
    } else {
 | 
			
		||||
        ERROR_LOG(GPU, "unknown framebuffer location!");
 | 
			
		||||
@ -64,21 +64,26 @@ const FramebufferLocation GetFramebufferLocation() {
 | 
			
		||||
    return FRAMEBUFFER_LOCATION_UNKNOWN;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u32 GetFramebufferAddr(const u32 address) {
 | 
			
		||||
    switch (GetFramebufferLocation(address)) {
 | 
			
		||||
    case FRAMEBUFFER_LOCATION_FCRAM:
 | 
			
		||||
        return Memory::VirtualAddressFromPhysical_FCRAM(address);
 | 
			
		||||
    case FRAMEBUFFER_LOCATION_VRAM:
 | 
			
		||||
        return Memory::VirtualAddressFromPhysical_VRAM(address);
 | 
			
		||||
    default:
 | 
			
		||||
        ERROR_LOG(GPU, "unknown framebuffer location");
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Gets a read-only pointer to a framebuffer in memory
 | 
			
		||||
 * @param address Physical address of framebuffer
 | 
			
		||||
 * @return Returns const pointer to raw framebuffer
 | 
			
		||||
 */
 | 
			
		||||
const u8* GetFramebufferPointer(const u32 address) {
 | 
			
		||||
    switch (GetFramebufferLocation()) {
 | 
			
		||||
    case FRAMEBUFFER_LOCATION_FCRAM:
 | 
			
		||||
        return (const u8*)Memory::GetPointer(Memory::VirtualAddressFromPhysical_FCRAM(address));
 | 
			
		||||
    case FRAMEBUFFER_LOCATION_VRAM:
 | 
			
		||||
        return (const u8*)Memory::GetPointer(Memory::VirtualAddressFromPhysical_VRAM(address));
 | 
			
		||||
    default:
 | 
			
		||||
        ERROR_LOG(GPU, "unknown framebuffer location");
 | 
			
		||||
    }
 | 
			
		||||
    return NULL;
 | 
			
		||||
    u32 addr = GetFramebufferAddr(address);
 | 
			
		||||
    return (addr != 0) ? Memory::GetPointer(addr) : nullptr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <typename T>
 | 
			
		||||
 | 
			
		||||
@ -219,10 +219,12 @@ void SetFramebufferLocation(const FramebufferLocation mode);
 | 
			
		||||
 */
 | 
			
		||||
const u8* GetFramebufferPointer(const u32 address);
 | 
			
		||||
 | 
			
		||||
u32 GetFramebufferAddr(const u32 address);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Gets the location of the framebuffers
 | 
			
		||||
 */
 | 
			
		||||
const FramebufferLocation GetFramebufferLocation();
 | 
			
		||||
FramebufferLocation GetFramebufferLocation(u32 address);
 | 
			
		||||
 | 
			
		||||
template <typename T>
 | 
			
		||||
inline void Read(T &var, const u32 addr);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user