/** * Describe the specified channel of the src register. */ static void analyse_src(struct analysis_context *ctx, struct lp_tgsi_channel_info *chan_info, const struct tgsi_src_register *src, unsigned chan) { chan_info->file = TGSI_FILE_NULL; if (!src->Indirect && !src->Absolute && !src->Negate) { unsigned swizzle = tgsi_util_get_src_register_swizzle(src, chan); if (src->File == TGSI_FILE_TEMPORARY) { if (src->Index < Elements(ctx->temp)) { *chan_info = ctx->temp[src->Index][swizzle]; } } else { chan_info->file = src->File; if (src->File == TGSI_FILE_IMMEDIATE) { assert(src->Index < Elements(ctx->imm)); if (src->Index < Elements(ctx->imm)) { chan_info->u.value = ctx->imm[src->Index][swizzle]; } } else { chan_info->u.index = src->Index; chan_info->swizzle = swizzle; } } } }
unsigned tgsi_util_get_full_src_register_swizzle( const struct tgsi_full_src_register *reg, unsigned component ) { return tgsi_util_get_src_register_swizzle( ®->Register, component ); }