mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Assert that multiple render targets are not set while alpha testing
This commit is contained in:
		
							parent
							
								
									59a004f915
								
							
						
					
					
						commit
						8e1239fbc5
					
				@ -574,6 +574,7 @@ void RasterizerOpenGL::DrawArrays() {
 | 
			
		||||
    // Alpha Testing is synced on shaders.
 | 
			
		||||
    SyncTransformFeedback();
 | 
			
		||||
    SyncPointState();
 | 
			
		||||
    CheckAlphaTests();
 | 
			
		||||
 | 
			
		||||
    // TODO(bunnei): Sync framebuffer_scale uniform here
 | 
			
		||||
    // TODO(bunnei): Sync scissorbox uniform(s) here
 | 
			
		||||
@ -1041,4 +1042,15 @@ void RasterizerOpenGL::SyncPointState() {
 | 
			
		||||
    state.point.size = regs.point_size == 0 ? 1 : regs.point_size;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RasterizerOpenGL::CheckAlphaTests() {
 | 
			
		||||
    const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs;
 | 
			
		||||
 | 
			
		||||
    if (regs.alpha_test_enabled != 0 && regs.rt_control.count > 1) {
 | 
			
		||||
        LOG_CRITICAL(
 | 
			
		||||
            Render_OpenGL,
 | 
			
		||||
            "Alpha Testing is enabled with Multiple Render Targets, this behavior is undefined.");
 | 
			
		||||
        UNREACHABLE();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace OpenGL
 | 
			
		||||
 | 
			
		||||
@ -171,6 +171,9 @@ private:
 | 
			
		||||
    /// Syncs the point state to match the guest state
 | 
			
		||||
    void SyncPointState();
 | 
			
		||||
 | 
			
		||||
    /// Check asserts for alpha testing.
 | 
			
		||||
    void CheckAlphaTests();
 | 
			
		||||
 | 
			
		||||
    bool has_ARB_direct_state_access = false;
 | 
			
		||||
    bool has_ARB_multi_bind = false;
 | 
			
		||||
    bool has_ARB_separate_shader_objects = false;
 | 
			
		||||
 | 
			
		||||
@ -1276,9 +1276,8 @@ private:
 | 
			
		||||
                header.ps.IsColorComponentOutputEnabled(render_target, 1) ||
 | 
			
		||||
                header.ps.IsColorComponentOutputEnabled(render_target, 2) ||
 | 
			
		||||
                header.ps.IsColorComponentOutputEnabled(render_target, 3)) {
 | 
			
		||||
                shader.AddLine(fmt::format(
 | 
			
		||||
                    "if (AlphaFunc({})) discard;",
 | 
			
		||||
                    regs.GetRegisterAsFloat(current_reg)));
 | 
			
		||||
                shader.AddLine(fmt::format("if (!AlphaFunc({})) discard;",
 | 
			
		||||
                                           regs.GetRegisterAsFloat(current_reg)));
 | 
			
		||||
                current_reg += 4;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user