gl_state_tracker: Implement dirty flags for primitive restart
This commit is contained in:
		
							parent
							
								
									37536d7a49
								
							
						
					
					
						commit
						46a1888e02
					
				| @ -1017,10 +1017,19 @@ void RasterizerOpenGL::SyncCullMode() { | ||||
| } | ||||
| 
 | ||||
| void RasterizerOpenGL::SyncPrimitiveRestart() { | ||||
|     const auto& regs = system.GPU().Maxwell3D().regs; | ||||
|     auto& gpu = system.GPU().Maxwell3D(); | ||||
|     auto& flags = gpu.dirty.flags; | ||||
|     if (!flags[Dirty::PrimitiveRestart]) { | ||||
|         return; | ||||
|     } | ||||
|     flags[Dirty::PrimitiveRestart] = false; | ||||
| 
 | ||||
|     oglEnable(GL_PRIMITIVE_RESTART, regs.primitive_restart.enabled); | ||||
|     glPrimitiveRestartIndex(regs.primitive_restart.index); | ||||
|     if (gpu.regs.primitive_restart.enabled) { | ||||
|         glEnable(GL_PRIMITIVE_RESTART); | ||||
|         glPrimitiveRestartIndex(gpu.regs.primitive_restart.index); | ||||
|     } else { | ||||
|         glDisable(GL_PRIMITIVE_RESTART); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void RasterizerOpenGL::SyncDepthTestState() { | ||||
|  | ||||
| @ -164,6 +164,10 @@ void SetupDirtyBlend(Tables& tables) { | ||||
|     FillBlock(tables[1], OFF(blend), NUM(blend), BlendStates); | ||||
| } | ||||
| 
 | ||||
| void SetupDirtyPrimitiveRestart(Tables& tables) { | ||||
|     FillBlock(tables[0], OFF(primitive_restart), NUM(primitive_restart), PrimitiveRestart); | ||||
| } | ||||
| 
 | ||||
| void SetupDirtyMisc(Tables& tables) { | ||||
|     auto& table = tables[0]; | ||||
| 
 | ||||
| @ -192,6 +196,7 @@ void StateTracker::Initialize() { | ||||
|     SetupDirtyDepthTest(tables); | ||||
|     SetupDirtyStencilTest(tables); | ||||
|     SetupDirtyBlend(tables); | ||||
|     SetupDirtyPrimitiveRestart(tables); | ||||
|     SetupDirtyMisc(tables); | ||||
| 
 | ||||
|     auto& store = dirty.on_write_stores; | ||||
|  | ||||
| @ -56,13 +56,13 @@ enum : u8 { | ||||
|     Shaders, | ||||
|     ClipDistances, | ||||
| 
 | ||||
|     ColorMask, | ||||
|     FrontFace, | ||||
|     CullTest, | ||||
|     DepthMask, | ||||
|     DepthTest, | ||||
|     PrimitiveRestart, | ||||
|     StencilTest, | ||||
|     ColorMask, | ||||
|     PrimitiveRestart, | ||||
|     PolygonOffset, | ||||
| 
 | ||||
|     Last | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
						ReinUsesLisp