mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 08:59:03 -06:00 
			
		
		
		
	gl_state_tracker: Implement dirty flags for primitive restart
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user