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