<ins name="+ATEST" staging="w=1" mask="0xfff00" exact="0xc8f00" message="atest" table="true">
<src start="0" mask="0xf7"/>
<src start="3" mask="0xf7"/>
+ <!-- ATEST parameter datum. Implicitly encoded into the tuple on Bifrost.
+ Real source on Valhall. -->
+ <src start="6" pseudo="true"/>
<mod name="widen1" start="6" size="2">
<reserved/>
<opt>none</opt>
static void
bi_emit_atest(bi_builder *b, bi_index alpha)
{
- bi_instr *atest = bi_atest_to(b, bi_temp(b->shader), bi_coverage(b), alpha);
+ b->shader->coverage = bi_atest(b, bi_coverage(b), alpha,
+ bi_fau(BIR_FAU_ATEST_PARAM, false));
b->shader->emitted_atest = true;
- b->shader->coverage = atest->dest[0];
-
- /* Pseudo-source to encode in the tuple */
- atest->src[2] = bi_fau(BIR_FAU_ATEST_PARAM, false);
}
static void
flow(DISCARD);
bi_fadd_f32_to(b, bi_register(0), bi_register(0), bi_register(0));
flow(WAIT0126);
- bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5));
+ bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5),
+ bi_fau(BIR_FAU_ATEST_PARAM, false));
flow(WAIT0);
flow(END);
});
protected:
MergeFlow() {
mem_ctx = ralloc_context(NULL);
+ atest = bi_fau(BIR_FAU_ATEST_PARAM, false);
}
~MergeFlow() {
void *mem_ctx;
bi_instr *I;
+ bi_index atest;
};
TEST_F(MergeFlow, End) {
CASE({
bi_fadd_f32_to(b, bi_register(0), bi_register(0), bi_register(0));
flow(WAIT0126);
- bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5));
+ bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5), atest);
},
{
I = bi_fadd_f32_to(b, bi_register(0), bi_register(0), bi_register(0));
I->flow = VA_FLOW_WAIT0126;
- bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5));
+ bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5), atest);
});
}
flow(DISCARD);
flow(WAIT0);
flow(WAIT0126);
- bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5));
+ bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5), atest);
flow(WAIT);
bi_blend_to(b, bi_register(0), bi_register(4), bi_register(5),
bi_register(6), bi_register(7), bi_register(8),
BI_REGISTER_FORMAT_F32, false, false,
BI_VA_LOD_MODE_COMPUTED_LOD, BI_WRITE_MASK_RGBA, 4);
I->flow = VA_FLOW_WAIT0126;
- I = bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5));
+ I = bi_atest_to(b, bi_register(0), bi_register(4), bi_register(5), atest);
I->flow = VA_FLOW_WAIT;
I = bi_blend_to(b, bi_register(0), bi_register(4), bi_register(5),
bi_register(6), bi_register(7), bi_register(8),
}
TEST_F(ValhallPacking, AtestFP16) {
- bi_instr *I = bi_atest_to(b, bi_register(60), bi_register(60),
- bi_half(bi_register(1), true));
- I->src[2] = bi_fau(BIR_FAU_ATEST_PARAM, false);
-
- CASE(I, 0x007dbc0208ea013c);
+ CASE(bi_atest_to(b, bi_register(60), bi_register(60),
+ bi_half(bi_register(1), true),
+ bi_fau(BIR_FAU_ATEST_PARAM, false)),
+ 0x007dbc0208ea013c);
}
TEST_F(ValhallPacking, AtestFP32) {
- bi_instr *I = bi_atest_to(b, bi_register(60), bi_register(60), one);
- I->src[2] = bi_fau(BIR_FAU_ATEST_PARAM, false);
- CASE(I, 0x007dbc0200ead03c);
+ CASE(bi_atest_to(b, bi_register(60), bi_register(60), one,
+ bi_fau(BIR_FAU_ATEST_PARAM, false)),
+ 0x007dbc0200ead03c);
}
TEST_F(ValhallPacking, Transcendentals) {