mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	glsl: implement set clip distance
and missed a diff in emit_glsl relating to var alloc ref counting
This commit is contained in:
		@@ -112,6 +112,9 @@ void PrecolorInst(IR::Inst& phi) {
 | 
			
		||||
            ir.PhiMove(phi, IR::Value{arg.InstRecursive()});
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    for (size_t i = 0; i < num_args; ++i) {
 | 
			
		||||
        IR::IREmitter{*phi.PhiBlock(i)}.Reference(IR::Value{&phi});
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Precolor(const IR::Program& program) {
 | 
			
		||||
 
 | 
			
		||||
@@ -186,6 +186,18 @@ void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, std::string_view val
 | 
			
		||||
    case IR::Attribute::PositionW:
 | 
			
		||||
        ctx.Add("gl_Position.{}={};", swizzle, value);
 | 
			
		||||
        break;
 | 
			
		||||
    case IR::Attribute::ClipDistance0:
 | 
			
		||||
    case IR::Attribute::ClipDistance1:
 | 
			
		||||
    case IR::Attribute::ClipDistance2:
 | 
			
		||||
    case IR::Attribute::ClipDistance3:
 | 
			
		||||
    case IR::Attribute::ClipDistance4:
 | 
			
		||||
    case IR::Attribute::ClipDistance5:
 | 
			
		||||
    case IR::Attribute::ClipDistance6:
 | 
			
		||||
    case IR::Attribute::ClipDistance7: {
 | 
			
		||||
        const u32 index{static_cast<u32>(attr) - static_cast<u32>(IR::Attribute::ClipDistance0)};
 | 
			
		||||
        ctx.Add("gl_ClipDistance[{}]={};", index, value);
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    default:
 | 
			
		||||
        fmt::print("Set attribute {}", attr);
 | 
			
		||||
        throw NotImplementedException("Set attribute {}", attr);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user