| 
									
										
										
										
											2013-04-17 23:09:55 -04:00
										 |  |  | // Copyright 2013 Dolphin Emulator Project
 | 
					
						
							|  |  |  | // Licensed under GPLv2
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:30:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-27 13:26:06 -04:00
										 |  |  | #include "Common/ChunkFile.h"
 | 
					
						
							| 
									
										
										
										
											2014-09-07 20:06:58 -05:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							| 
									
										
										
										
											2014-02-17 05:18:15 -05:00
										 |  |  | #include "VideoCommon/CPMemory.h"
 | 
					
						
							| 
									
										
										
										
											2008-12-08 05:30:24 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // CP state
 | 
					
						
							| 
									
										
										
										
											2009-03-08 01:19:33 +00:00
										 |  |  | u8 *cached_arraybases[16]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-27 13:26:06 -04:00
										 |  |  | CPState g_main_cp_state; | 
					
						
							| 
									
										
										
										
											2014-08-27 13:38:00 -04:00
										 |  |  | CPState g_preprocess_cp_state; | 
					
						
							| 
									
										
										
										
											2014-08-27 13:26:06 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | void DoCPState(PointerWrap& p) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2014-08-27 13:38:00 -04:00
										 |  |  | 	// We don't save g_preprocess_cp_state separately because the GPU should be
 | 
					
						
							|  |  |  | 	// synced around state save/load.
 | 
					
						
							| 
									
										
										
										
											2014-08-27 13:26:06 -04:00
										 |  |  | 	p.DoArray(g_main_cp_state.array_bases, 16); | 
					
						
							|  |  |  | 	p.DoArray(g_main_cp_state.array_strides, 16); | 
					
						
							|  |  |  | 	p.Do(g_main_cp_state.matrix_index_a); | 
					
						
							|  |  |  | 	p.Do(g_main_cp_state.matrix_index_b); | 
					
						
							|  |  |  | 	p.Do(g_main_cp_state.vtx_desc.Hex); | 
					
						
							|  |  |  | 	p.DoArray(g_main_cp_state.vtx_attr, 8); | 
					
						
							|  |  |  | 	p.DoMarker("CP Memory"); | 
					
						
							| 
									
										
										
										
											2014-08-27 13:38:00 -04:00
										 |  |  | 	if (p.mode == PointerWrap::MODE_READ) | 
					
						
							|  |  |  | 		CopyPreprocessCPStateFromMain(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void CopyPreprocessCPStateFromMain() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |    memcpy(&g_preprocess_cp_state, &g_main_cp_state, sizeof(CPState)); | 
					
						
							| 
									
										
										
										
											2014-08-27 13:26:06 -04:00
										 |  |  | } |