@ -32,7 +32,6 @@ enum : u8 {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    DepthWriteEnable , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    DepthCompareOp , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    FrontFace , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    PrimitiveTopology , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    StencilOp , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    StencilTestEnable , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -43,6 +42,8 @@ static_assert(Last <= std::numeric_limits<u8>::max());
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				}  // namespace Dirty
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				class  StateTracker  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    using  Maxwell  =  Tegra : : Engines : : Maxwell3D : : Regs ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				public : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    explicit  StateTracker ( Core : : System &  system ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -102,10 +103,6 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  Exchange ( Dirty : : FrontFace ,  false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool  TouchPrimitiveTopology ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  Exchange ( Dirty : : PrimitiveTopology ,  false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool  TouchStencilOp ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  Exchange ( Dirty : : StencilOp ,  false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -114,7 +111,15 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  Exchange ( Dirty : : StencilTestEnable ,  false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool  ChangePrimitiveTopology ( Maxwell : : PrimitiveTopology  new_topology )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        const  bool  has_changed  =  current_topology  ! =  new_topology ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        current_topology  =  new_topology ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  has_changed ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				private : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    static  constexpr  auto  INVALID_TOPOLOGY  =  static_cast < Maxwell : : PrimitiveTopology > ( ~ 0u ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool  Exchange ( std : : size_t  id ,  bool  new_value )  const  noexcept  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        auto &  flags  =  system . GPU ( ) . Maxwell3D ( ) . dirty . flags ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        const  bool  is_dirty  =  flags [ id ] ; 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -124,6 +129,7 @@ private:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    Core : : System &  system ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    Tegra : : Engines : : Maxwell3D : : DirtyState : : Flags  invalidation_flags ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    Maxwell : : PrimitiveTopology  current_topology  =  INVALID_TOPOLOGY ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				}  // namespace Vulkan