| 
									
										
										
										
											2015-05-24 06:55:12 +02:00
										 |  |  | // Copyright 2008 Dolphin Emulator Project
 | 
					
						
							| 
									
										
										
										
											2015-05-18 01:08:10 +02:00
										 |  |  | // Licensed under GPLv2+
 | 
					
						
							| 
									
										
										
										
											2013-04-17 23:09:55 -04:00
										 |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 13:54:46 -05:00
										 |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-26 13:55:34 -06:00
										 |  |  | #include <memory>
 | 
					
						
							| 
									
										
										
										
											2009-08-10 06:18:10 +00:00
										 |  |  | #include <string>
 | 
					
						
							| 
									
										
										
										
											2016-01-07 19:38:00 -08:00
										 |  |  | #include <unordered_map>
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-07 20:06:58 -05:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							| 
									
										
										
										
											2016-01-17 16:54:31 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-31 14:51:55 -05:00
										 |  |  | class DataReader; | 
					
						
							| 
									
										
										
										
											2016-01-17 16:54:31 -05:00
										 |  |  | class NativeVertexFormat; | 
					
						
							| 
									
										
										
										
											2016-01-07 19:38:00 -08:00
										 |  |  | struct PortableVertexDeclaration; | 
					
						
							| 
									
										
										
										
											2014-02-17 05:18:15 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | namespace VertexLoaderManager | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | using NativeVertexFormatMap = | 
					
						
							|  |  |  |     std::unordered_map<PortableVertexDeclaration, std::unique_ptr<NativeVertexFormat>>; | 
					
						
							| 
									
										
										
										
											2016-01-07 19:38:00 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | void Init(); | 
					
						
							|  |  |  | void Shutdown(); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | void MarkAllDirty(); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | NativeVertexFormatMap* GetNativeVertexFormatMap(); | 
					
						
							| 
									
										
										
										
											2016-01-07 19:38:00 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | // Returns -1 if buf_size is insufficient, else the amount of bytes consumed
 | 
					
						
							|  |  |  | int RunVertices(int vtx_attr_group, int primitive, int count, DataReader src, bool skip_drawing, | 
					
						
							|  |  |  |                 bool is_preprocess); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | // For debugging
 | 
					
						
							|  |  |  | void AppendListToString(std::string* dest); | 
					
						
							| 
									
										
										
										
											2014-06-05 17:55:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | NativeVertexFormat* GetCurrentVertexFormat(); | 
					
						
							| 
									
										
										
										
											2015-05-30 00:42:45 +12:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | // Resolved pointers to array bases. Used by vertex loaders.
 | 
					
						
							|  |  |  | extern u8* cached_arraybases[12]; | 
					
						
							|  |  |  | void UpdateVertexArrayPointers(); | 
					
						
							| 
									
										
										
										
											2015-06-01 19:58:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | // Position cache for zfreeze (3 vertices, 4 floats each to allow SIMD overwrite).
 | 
					
						
							|  |  |  | // These arrays are in reverse order.
 | 
					
						
							|  |  |  | extern float position_cache[3][4]; | 
					
						
							|  |  |  | extern u32 position_matrix_index[3]; | 
					
						
							| 
									
										
										
										
											2015-11-01 22:39:31 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | // VB_HAS_X. Bitmask telling what vertex components are present.
 | 
					
						
							|  |  |  | extern u32 g_current_components; | 
					
						
							| 
									
										
										
										
											2014-09-11 13:00:40 -04:00
										 |  |  | } |