|
|
|
@ -121,6 +121,18 @@ void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, ScalarF32 value,
|
|
|
|
|
case IR::Attribute::PositionW:
|
|
|
|
|
ctx.Add("MOV.F result.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("MOV.F result.clip[{}].x,{};", index, value);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case IR::Attribute::ViewportIndex:
|
|
|
|
|
if (ctx.stage == Stage::Geometry || ctx.profile.support_viewport_index_layer_non_geometry) {
|
|
|
|
|
ctx.Add("MOV.F result.viewport.x,{};", value);
|
|
|
|
|