mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	maxwell_3d: implement MME shadow RAM
This commit is contained in:
		
							parent
							
								
									e5bb5d13c4
								
							
						
					
					
						commit
						dbfbe352e0
					
				@ -531,6 +531,13 @@ public:
 | 
				
			|||||||
            Fill = 0x1b02,
 | 
					            Fill = 0x1b02,
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        enum class ShadowRamControl : u32 {
 | 
				
			||||||
 | 
					            Track = 0,
 | 
				
			||||||
 | 
					            TrackWithFilter = 1,
 | 
				
			||||||
 | 
					            Passthrough = 2,
 | 
				
			||||||
 | 
					            Replay = 3,
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        struct RenderTargetConfig {
 | 
					        struct RenderTargetConfig {
 | 
				
			||||||
            u32 address_high;
 | 
					            u32 address_high;
 | 
				
			||||||
            u32 address_low;
 | 
					            u32 address_low;
 | 
				
			||||||
@ -674,7 +681,9 @@ public:
 | 
				
			|||||||
                    u32 bind;
 | 
					                    u32 bind;
 | 
				
			||||||
                } macros;
 | 
					                } macros;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                INSERT_UNION_PADDING_WORDS(0x17);
 | 
					                ShadowRamControl shadow_ram_control;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                INSERT_UNION_PADDING_WORDS(0x16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Upload::Registers upload;
 | 
					                Upload::Registers upload;
 | 
				
			||||||
                struct {
 | 
					                struct {
 | 
				
			||||||
@ -1265,6 +1274,9 @@ public:
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
    } regs{};
 | 
					    } regs{};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Store temporary hw register values, used by some calls to restore state after a operation
 | 
				
			||||||
 | 
					    Regs shadow_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static_assert(sizeof(Regs) == Regs::NUM_REGS * sizeof(u32), "Maxwell3D Regs has wrong size");
 | 
					    static_assert(sizeof(Regs) == Regs::NUM_REGS * sizeof(u32), "Maxwell3D Regs has wrong size");
 | 
				
			||||||
    static_assert(std::is_trivially_copyable_v<Regs>, "Maxwell3D Regs must be trivially copyable");
 | 
					    static_assert(std::is_trivially_copyable_v<Regs>, "Maxwell3D Regs must be trivially copyable");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1458,6 +1470,7 @@ private:
 | 
				
			|||||||
                  "Field " #field_name " has invalid position")
 | 
					                  "Field " #field_name " has invalid position")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ASSERT_REG_POSITION(macros, 0x45);
 | 
					ASSERT_REG_POSITION(macros, 0x45);
 | 
				
			||||||
 | 
					ASSERT_REG_POSITION(shadow_ram_control, 0x49);
 | 
				
			||||||
ASSERT_REG_POSITION(upload, 0x60);
 | 
					ASSERT_REG_POSITION(upload, 0x60);
 | 
				
			||||||
ASSERT_REG_POSITION(exec_upload, 0x6C);
 | 
					ASSERT_REG_POSITION(exec_upload, 0x6C);
 | 
				
			||||||
ASSERT_REG_POSITION(data_upload, 0x6D);
 | 
					ASSERT_REG_POSITION(data_upload, 0x6D);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user