mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	OpenGL: Pass Pica regs via parameter
This commit is contained in:
		
							parent
							
								
									a6fd4533f6
								
							
						
					
					
						commit
						52a4489d65
					
				@ -1004,7 +1004,7 @@ void RasterizerOpenGL::SamplerInfo::SyncWithConfig(
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RasterizerOpenGL::SetShader() {
 | 
			
		||||
    GLShader::PicaShaderConfig config = GLShader::PicaShaderConfig::CurrentConfig();
 | 
			
		||||
    auto config = GLShader::PicaShaderConfig::BuildFromRegs(Pica::g_state.regs);
 | 
			
		||||
    std::unique_ptr<PicaShader> shader = std::make_unique<PicaShader>();
 | 
			
		||||
 | 
			
		||||
    // Find (or generate) the GLSL shader for the current TEV state
 | 
			
		||||
 | 
			
		||||
@ -24,14 +24,12 @@ using TevStageConfig = TexturingRegs::TevStageConfig;
 | 
			
		||||
 | 
			
		||||
namespace GLShader {
 | 
			
		||||
 | 
			
		||||
PicaShaderConfig PicaShaderConfig::CurrentConfig() {
 | 
			
		||||
PicaShaderConfig PicaShaderConfig::BuildFromRegs(const Pica::Regs& regs) {
 | 
			
		||||
    PicaShaderConfig res;
 | 
			
		||||
 | 
			
		||||
    auto& state = res.state;
 | 
			
		||||
    std::memset(&state, 0, sizeof(PicaShaderConfig::State));
 | 
			
		||||
 | 
			
		||||
    const auto& regs = Pica::g_state.regs;
 | 
			
		||||
 | 
			
		||||
    state.scissor_test_mode = regs.rasterizer.scissor_test.mode;
 | 
			
		||||
 | 
			
		||||
    state.depthmap_enable = regs.rasterizer.depthmap_enable;
 | 
			
		||||
 | 
			
		||||
@ -39,8 +39,8 @@ enum Attributes {
 | 
			
		||||
 */
 | 
			
		||||
union PicaShaderConfig {
 | 
			
		||||
 | 
			
		||||
    /// Construct a PicaShaderConfig with the current Pica register configuration.
 | 
			
		||||
    static PicaShaderConfig CurrentConfig();
 | 
			
		||||
    /// Construct a PicaShaderConfig with the given Pica register configuration.
 | 
			
		||||
    static PicaShaderConfig BuildFromRegs(const Pica::Regs& regs);
 | 
			
		||||
 | 
			
		||||
    bool TevStageUpdatesCombinerBufferColor(unsigned stage_index) const {
 | 
			
		||||
        return (stage_index < 4) && (state.combiner_buffer_input & (1 << stage_index));
 | 
			
		||||
@ -58,7 +58,7 @@ union PicaShaderConfig {
 | 
			
		||||
    //       This makes BitField not TC when used in a union or struct so we have to resort
 | 
			
		||||
    //       to this ugly hack.
 | 
			
		||||
    //       Once that bug is fixed we can use Pica::Regs::TevStageConfig here.
 | 
			
		||||
    //       Doesn't include const_color because we don't sync it, see comment in CurrentConfig()
 | 
			
		||||
    //       Doesn't include const_color because we don't sync it, see comment in BuildFromRegs()
 | 
			
		||||
    struct TevStageConfigRaw {
 | 
			
		||||
        u32 sources_raw;
 | 
			
		||||
        u32 modifiers_raw;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user