| 
									
										
										
										
											2015-05-24 06:55:12 +02:00
										 |  |  | // Copyright 2015 Dolphin Emulator Project
 | 
					
						
							| 
									
										
										
										
											2015-05-18 01:08:10 +02:00
										 |  |  | // Licensed under GPLv2+
 | 
					
						
							| 
									
										
										
										
											2015-02-12 18:52:07 -06:00
										 |  |  | // Refer to the license.txt file included.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2016-01-17 16:54:31 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-12 18:52:07 -06:00
										 |  |  | #include "Common/Arm64Emitter.h"
 | 
					
						
							| 
									
										
										
										
											2016-01-17 16:54:31 -05:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							| 
									
										
										
										
											2015-02-12 18:52:07 -06:00
										 |  |  | #include "VideoCommon/VertexLoaderBase.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-31 14:51:55 -05:00
										 |  |  | class DataReader; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-12 18:52:07 -06:00
										 |  |  | class VertexLoaderARM64 : public VertexLoaderBase, public Arm64Gen::ARM64CodeBlock | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   VertexLoaderARM64(const TVtxDesc& vtx_desc, const VAT& vtx_att); | 
					
						
							| 
									
										
										
										
											2015-02-12 18:52:07 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   std::string GetName() const override { return "VertexLoaderARM64"; } | 
					
						
							|  |  |  |   bool IsInitialized() override { return true; } | 
					
						
							|  |  |  |   int RunVertices(DataReader src, DataReader dst, int count) override; | 
					
						
							| 
									
										
										
										
											2015-02-12 18:52:07 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   u32 m_src_ofs = 0; | 
					
						
							|  |  |  |   u32 m_dst_ofs = 0; | 
					
						
							|  |  |  |   Arm64Gen::FixupBranch m_skip_vertex; | 
					
						
							|  |  |  |   Arm64Gen::ARM64FloatEmitter m_float_emit; | 
					
						
							|  |  |  |   void GetVertexAddr(int array, u64 attribute, Arm64Gen::ARM64Reg reg); | 
					
						
							|  |  |  |   s32 GetAddressImm(int array, u64 attribute, Arm64Gen::ARM64Reg reg, u32 align); | 
					
						
							|  |  |  |   int ReadVertex(u64 attribute, int format, int count_in, int count_out, bool dequantize, | 
					
						
							|  |  |  |                  u8 scaling_exponent, AttributeFormat* native_format, s32 offset = -1); | 
					
						
							|  |  |  |   void ReadColor(u64 attribute, int format, s32 offset); | 
					
						
							|  |  |  |   void GenerateVertexLoader(); | 
					
						
							| 
									
										
										
										
											2015-02-12 18:52:07 -06:00
										 |  |  | }; |