diff --git a/src/freedreno/registers/adreno/a6xx.xml b/src/freedreno/registers/adreno/a6xx.xml index 78524aaab9d..0a2fecca4d1 100644 --- a/src/freedreno/registers/adreno/a6xx.xml +++ b/src/freedreno/registers/adreno/a6xx.xml @@ -3306,6 +3306,15 @@ to upconvert to 32b float internally? + + + + + diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index a32ac8166ac..f754be3c009 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -1373,6 +1373,16 @@ tu6_init_hw(struct tu_cmd_buffer *cmd, struct tu_cs *cs) tu_cs_emit_ib(cs, dev->cmdbuf_start_a725_quirk_entry); } + if (CHIP >= A7XX) { + /* Blob sets these two per draw. */ + tu_cs_emit_regs(cs, A7XX_PC_TESS_PARAM_SIZE(TU_TESS_PARAM_SIZE)); + /* Blob adds a bit more space ({0x10, 0x20, 0x30, 0x40} bytes) + * but the meaning of this additional space is not known, + * so we play safe and don't add it. + */ + tu_cs_emit_regs(cs, A7XX_PC_TESS_FACTOR_SIZE(TU_TESS_FACTOR_SIZE)); + } + tu_cs_sanity_check(cs); }