mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	gcc 11 compatibility fix (suggestion) (#5778)
Fixes missing include and runtime variable in offsetof * gcc 11 compatibility fix * Revert "gcc 11 compatibility fix" This reverts commit bf5711d944bbdf7b5663ba4fec1b9066f16e2bb2. * gcc 11 compatibility fix (with pointer math) * Don't require pointers for framebuffer field math * Code style fix (clang-format)
This commit is contained in:
		
							parent
							
								
									6e16081b6a
								
							
						
					
					
						commit
						a2f34ea82b
					
				
					 3 changed files with 23 additions and 14 deletions
				
			
		|  | @ -9,6 +9,7 @@ | |||
| #include <atomic> | ||||
| #include <cstddef> | ||||
| #include <cstring> | ||||
| #include <limits> | ||||
| #include <new> | ||||
| #include <type_traits> | ||||
| #include <vector> | ||||
|  |  | |||
|  | @ -283,29 +283,29 @@ ResultCode SetBufferSwap(u32 screen_id, const FrameBufferInfo& info) { | |||
|     PAddr phys_address_left = VirtualToPhysicalAddress(info.address_left); | ||||
|     PAddr phys_address_right = VirtualToPhysicalAddress(info.address_right); | ||||
|     if (info.active_fb == 0) { | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX( | ||||
|                                                 framebuffer_config[screen_id].address_left1)), | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_FRAMEBUFFER_REG_INDEX( | ||||
|                                                 screen_id, address_left1)), | ||||
|                          phys_address_left); | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX( | ||||
|                                                 framebuffer_config[screen_id].address_right1)), | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_FRAMEBUFFER_REG_INDEX( | ||||
|                                                 screen_id, address_right1)), | ||||
|                          phys_address_right); | ||||
|     } else { | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX( | ||||
|                                                 framebuffer_config[screen_id].address_left2)), | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_FRAMEBUFFER_REG_INDEX( | ||||
|                                                 screen_id, address_left2)), | ||||
|                          phys_address_left); | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX( | ||||
|                                                 framebuffer_config[screen_id].address_right2)), | ||||
|         WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_FRAMEBUFFER_REG_INDEX( | ||||
|                                                 screen_id, address_right2)), | ||||
|                          phys_address_right); | ||||
|     } | ||||
|     WriteSingleHWReg(base_address + | ||||
|                          4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].stride)), | ||||
|                          4 * static_cast<u32>(GPU_FRAMEBUFFER_REG_INDEX(screen_id, stride)), | ||||
|                      info.stride); | ||||
|     WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX( | ||||
|                                             framebuffer_config[screen_id].color_format)), | ||||
|     WriteSingleHWReg(base_address + | ||||
|                          4 * static_cast<u32>(GPU_FRAMEBUFFER_REG_INDEX(screen_id, color_format)), | ||||
|                      info.format); | ||||
|     WriteSingleHWReg( | ||||
|         base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].active_fb)), | ||||
|         info.shown_fb); | ||||
|     WriteSingleHWReg(base_address + | ||||
|                          4 * static_cast<u32>(GPU_FRAMEBUFFER_REG_INDEX(screen_id, active_fb)), | ||||
|                      info.shown_fb); | ||||
| 
 | ||||
|     if (Pica::g_debug_context) | ||||
|         Pica::g_debug_context->OnEvent(Pica::DebugContext::Event::BufferSwapped, nullptr); | ||||
|  |  | |||
|  | @ -30,6 +30,14 @@ constexpr double SCREEN_REFRESH_RATE = BASE_CLOCK_RATE_ARM11 / static_cast<doubl | |||
| // Returns index corresponding to the Regs member labeled by field_name
 | ||||
| #define GPU_REG_INDEX(field_name) (offsetof(GPU::Regs, field_name) / sizeof(u32)) | ||||
| 
 | ||||
| // Returns index corresponding to the Regs::FramebufferConfig labeled by field_name
 | ||||
| // screen_id is a subscript for Regs::framebuffer_config
 | ||||
| #define GPU_FRAMEBUFFER_REG_INDEX(screen_id, field_name)                                           \ | ||||
|     ((offsetof(GPU::Regs, framebuffer_config) +                                                    \ | ||||
|       sizeof(GPU::Regs::FramebufferConfig) * (screen_id) +                                         \ | ||||
|       offsetof(GPU::Regs::FramebufferConfig, field_name)) /                                        \ | ||||
|      sizeof(u32)) | ||||
| 
 | ||||
| // MMIO region 0x1EFxxxxx
 | ||||
| struct Regs { | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue