|
|
@ -403,6 +403,13 @@ Id EmitIsHelperInvocation(EmitContext& ctx) {
|
|
|
|
return ctx.OpLoad(ctx.U1, ctx.is_helper_invocation);
|
|
|
|
return ctx.OpLoad(ctx.U1, ctx.is_helper_invocation);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Id EmitYDirection(EmitContext& ctx) {
|
|
|
|
|
|
|
|
if (ctx.profile.y_negate) {
|
|
|
|
|
|
|
|
return ctx.Constant(ctx.F32[1], -1.0f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return ctx.Constant(ctx.F32[1], 1.0f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Id EmitLoadLocal(EmitContext& ctx, Id word_offset) {
|
|
|
|
Id EmitLoadLocal(EmitContext& ctx, Id word_offset) {
|
|
|
|
const Id pointer{ctx.OpAccessChain(ctx.private_u32, ctx.local_memory, word_offset)};
|
|
|
|
const Id pointer{ctx.OpAccessChain(ctx.private_u32, ctx.local_memory, word_offset)};
|
|
|
|
return ctx.OpLoad(ctx.U32[1], pointer);
|
|
|
|
return ctx.OpLoad(ctx.U32[1], pointer);
|
|
|
|