| 
									
										
										
										
											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-01-07 19:38:00 -08:00
										 |  |  | 	using NativeVertexFormatMap = std::unordered_map<PortableVertexDeclaration, std::unique_ptr<NativeVertexFormat>>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-25 21:44:56 +00:00
										 |  |  | 	void Init(); | 
					
						
							|  |  |  | 	void Shutdown(); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void MarkAllDirty(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-07 19:38:00 -08:00
										 |  |  | 	NativeVertexFormatMap* GetNativeVertexFormatMap(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-09 08:35:04 +01:00
										 |  |  | 	// Returns -1 if buf_size is insufficient, else the amount of bytes consumed
 | 
					
						
							| 
									
										
										
										
											2015-01-31 09:23:50 +01:00
										 |  |  | 	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
										 |  |  | 
 | 
					
						
							|  |  |  | 	// For debugging
 | 
					
						
							|  |  |  | 	void AppendListToString(std::string *dest); | 
					
						
							| 
									
										
										
										
											2014-06-05 17:55:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-26 01:10:44 +02:00
										 |  |  | 	NativeVertexFormat* GetCurrentVertexFormat(); | 
					
						
							| 
									
										
										
										
											2015-05-30 00:42:45 +12: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
										 |  |  | 
 | 
					
						
							|  |  |  | 	// 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
										 |  |  | 
 | 
					
						
							|  |  |  | 	// VB_HAS_X. Bitmask telling what vertex components are present.
 | 
					
						
							|  |  |  | 	extern u32 g_current_components; | 
					
						
							| 
									
										
										
										
											2014-09-11 13:00:40 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 |