From ab75e0a12634a262f68a3438fffa014bed36e043 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Mon, 21 Nov 2022 12:21:10 +0100 Subject: [PATCH] freedreno/a6xx: Document per-view viewport in GRAS_SU_CNTL Part-of: --- src/freedreno/common/freedreno_dev_info.h | 6 ++++++ src/freedreno/common/freedreno_devices.py | 2 ++ src/freedreno/registers/adreno/a6xx.xml | 17 ++++++++++++----- src/freedreno/vulkan/tu_pipeline.cc | 4 ++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/freedreno/common/freedreno_dev_info.h b/src/freedreno/common/freedreno_dev_info.h index 13e7a6ca4ea..aa44d8bc002 100644 --- a/src/freedreno/common/freedreno_dev_info.h +++ b/src/freedreno/common/freedreno_dev_info.h @@ -146,6 +146,12 @@ struct fd_dev_info { bool has_lrz_dir_tracking; bool lrz_track_quirk; + /* Some generations have a bit to add the multiview index to the + * viewport index, which lets us implement different scaling for + * different views. + */ + bool has_per_view_viewport; + struct { uint32_t PC_POWER_CNTL; uint32_t TPL1_DBG_ECO_CNTL; diff --git a/src/freedreno/common/freedreno_devices.py b/src/freedreno/common/freedreno_devices.py index 221199d63d8..0acec2f29af 100644 --- a/src/freedreno/common/freedreno_devices.py +++ b/src/freedreno/common/freedreno_devices.py @@ -238,6 +238,7 @@ a6xx_gen3 = dict( has_lrz_dir_tracking = True, enable_lrz_fast_clear = True, lrz_track_quirk = True, + has_per_view_viewport = True, ) # a635, a660: @@ -263,6 +264,7 @@ a6xx_gen4 = dict( has_dp4acc = True, enable_lrz_fast_clear = True, has_lrz_dir_tracking = True, + has_per_view_viewport = True, ) add_gpus([ diff --git a/src/freedreno/registers/adreno/a6xx.xml b/src/freedreno/registers/adreno/a6xx.xml index 79261dba648..99697411ebb 100644 --- a/src/freedreno/registers/adreno/a6xx.xml +++ b/src/freedreno/registers/adreno/a6xx.xml @@ -1732,12 +1732,19 @@ to upconvert to 32b float internally? - - - + + + + diff --git a/src/freedreno/vulkan/tu_pipeline.cc b/src/freedreno/vulkan/tu_pipeline.cc index 060198d7674..d42f556f239 100644 --- a/src/freedreno/vulkan/tu_pipeline.cc +++ b/src/freedreno/vulkan/tu_pipeline.cc @@ -2205,8 +2205,8 @@ tu6_gras_su_cntl(const VkPipelineRasterizationStateCreateInfo *rast_info, if (multiview) { gras_su_cntl |= - A6XX_GRAS_SU_CNTL_UNK17 | - A6XX_GRAS_SU_CNTL_MULTIVIEW_ENABLE; + A6XX_GRAS_SU_CNTL_MULTIVIEW_ENABLE | + A6XX_GRAS_SU_CNTL_RENDERTARGETINDEXINCR; } return gras_su_cntl;