Match a different block?
authorCafe <cafe@not.applicable>
Thu, 27 Jul 2017 00:00:00 +0000 (00:00 +0000)
committerCafe <cafe@not.applicable>
Thu, 27 Jul 2017 18:30:08 +0000 (18:30 +0000)
re.c

diff --git a/re.c b/re.c
index 83a1e436f88149b144fada4b692e6792aaf7a5be..3fff209f10d733c2e4f3677a955c7e778eba8c65 100644 (file)
--- a/re.c
+++ b/re.c
@@ -80,14 +80,34 @@ uint64_t make_mfbd(bool tiler, uint64_t sv_magic)
 
        mfbd->block1[4] = 0x02D801C2;
        mfbd->block1[6] = 0x02D801C2;
+
+       /* This might not a tiler issue so much as a which-frame issue.
+        * First tiler is 0xFF form. Rest of C021. All fragment C021.
+        * TODO: Investigate!
+        */
+
        mfbd->block1[7] = tiler ? 0x04001080 : 0x01001080;
        mfbd->block1[8] = tiler ? 0x000000FF : 0xC0210000;
-       mfbd->block1[9] = tiler ? 0x3F800000 : 0x00000000;
+       mfbd->block1[9] = /* tiler */ false ? 0x3F800000 : 0x00000000;
 
-       mfbd->block3[0] = 0x00000158;
+       /*mfbd->block3[0] = 0x00000158;
        mfbd->block3[1] = 0x00000420;
        mfbd->block3[14] = 0x04000000;
-       mfbd->block3[15] = 0x880A8899;
+       mfbd->block3[15] = 0x880A8899;*/
+
+       uint64_t block3[] = {
+               0x0000000000000000,
+               0x0000000000030005,
+               0x00000000B27F1600,
+               0x0000000102024000,
+               0x0000000000000003,
+               0x0000000000000000,
+               0x0000000000000000,
+               0x0000000000000000,
+               0x00000000B27F1900
+       };
+
+       memcpy(mfbd->block3, block3, sizeof(block3));
 
        return (uint64_t ) (uint32_t) mfbd | MFBD | (tiler ? FBD_VERTEX_TILER : FBD_FRAGMENT);
 }