mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 01:40:08 +01:00
pan/bi: Model 3rd source for ATEST
ATEST on Valhall takes atest-param as an explicit encoded source. The source also exists on Bifrost, but it's implied in the encoding. Rather than treating it as a "ghost" source, model it in the IR explicitly so the count is correct. Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17794>
This commit is contained in:
parent
42b815397c
commit
0bef566fba
5 changed files with 20 additions and 18 deletions
|
|
@ -2496,6 +2496,9 @@
|
|||
<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>
|
||||
|
|
|
|||
|
|
@ -859,12 +859,9 @@ bi_skip_atest(bi_context *ctx, bool emit_zs)
|
|||
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
|
||||
|
|
|
|||
|
|
@ -109,7 +109,8 @@ TEST_F(InsertFlow, AtestWait6AndWait0After) {
|
|||
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);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ class MergeFlow : public testing::Test {
|
|||
protected:
|
||||
MergeFlow() {
|
||||
mem_ctx = ralloc_context(NULL);
|
||||
atest = bi_fau(BIR_FAU_ATEST_PARAM, false);
|
||||
}
|
||||
|
||||
~MergeFlow() {
|
||||
|
|
@ -61,6 +62,7 @@ protected:
|
|||
|
||||
void *mem_ctx;
|
||||
bi_instr *I;
|
||||
bi_index atest;
|
||||
};
|
||||
|
||||
TEST_F(MergeFlow, End) {
|
||||
|
|
@ -101,12 +103,12 @@ TEST_F(MergeFlow, TrivialWait) {
|
|||
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);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -269,7 +271,7 @@ TEST_F(MergeFlow, DeletePointlessDiscard) {
|
|||
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),
|
||||
|
|
@ -283,7 +285,7 @@ TEST_F(MergeFlow, DeletePointlessDiscard) {
|
|||
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),
|
||||
|
|
|
|||
|
|
@ -193,17 +193,16 @@ TEST_F(ValhallPacking, Mux) {
|
|||
}
|
||||
|
||||
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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue