GPU: Added a function to determine whether a shader stage is enabled or not.
This commit is contained in:
		@@ -301,5 +301,26 @@ u32 Maxwell3D::GetRegisterValue(u32 method) const {
 | 
			
		||||
    return regs.reg_array[method];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Maxwell3D::IsShaderStageEnabled(Regs::ShaderStage stage) const {
 | 
			
		||||
    // The Vertex stage is always enabled.
 | 
			
		||||
    if (stage == Regs::ShaderStage::Vertex)
 | 
			
		||||
        return true;
 | 
			
		||||
 | 
			
		||||
    switch (stage) {
 | 
			
		||||
    case Regs::ShaderStage::TesselationControl:
 | 
			
		||||
        return regs.shader_config[static_cast<size_t>(Regs::ShaderProgram::TesselationControl)]
 | 
			
		||||
                   .enable != 0;
 | 
			
		||||
    case Regs::ShaderStage::TesselationEval:
 | 
			
		||||
        return regs.shader_config[static_cast<size_t>(Regs::ShaderProgram::TesselationEval)]
 | 
			
		||||
                   .enable != 0;
 | 
			
		||||
    case Regs::ShaderStage::Geometry:
 | 
			
		||||
        return regs.shader_config[static_cast<size_t>(Regs::ShaderProgram::Geometry)].enable != 0;
 | 
			
		||||
    case Regs::ShaderStage::Fragment:
 | 
			
		||||
        return regs.shader_config[static_cast<size_t>(Regs::ShaderProgram::Fragment)].enable != 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    UNREACHABLE();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Engines
 | 
			
		||||
} // namespace Tegra
 | 
			
		||||
 
 | 
			
		||||
@@ -518,6 +518,9 @@ public:
 | 
			
		||||
    /// Returns a list of enabled textures for the specified shader stage.
 | 
			
		||||
    std::vector<Texture::FullTextureInfo> GetStageTextures(Regs::ShaderStage stage) const;
 | 
			
		||||
 | 
			
		||||
    /// Returns whether the specified shader stage is enabled or not.
 | 
			
		||||
    bool IsShaderStageEnabled(Regs::ShaderStage stage) const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    std::unordered_map<u32, std::vector<u32>> uploaded_macros;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user