summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Jones <jajones@nvidia.com>2019-09-13 14:08:27 -0700
committerMarge Bot <eric+marge@anholt.net>2021-02-17 03:52:53 +0000
commitff534e1b5066f1c8e7969f99f40ec080eee1b907 (patch)
tree4b64cdb57fd863c514f06325b405799a4ab7103b
parentc4cc3d915b89aa3d92b6b4efb56e3e668f77a0eb (diff)
nouveau: Stash supported sector layout in screen
Older Tegra GPUs use a different sector bit swizzling layout than desktop and Xavier GPUs. Hence their format modifiers must be differentiated from those of other GPUs. As a precursor to supporting more expressive block linear format modifiers, deduce the sector layout used for a given GPU from its chipset and stash the layout in the nouveau screen structure. Signed-off-by: James Jones <jajones@nvidia.com> Tested-by: Karol Herbst <kherbst@redhat.com> Tested-by: Simon Ser <contact@emersion.fr> Reviewed-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3724>
-rw-r--r--src/gallium/drivers/nouveau/nouveau_screen.c12
-rw-r--r--src/gallium/drivers/nouveau/nouveau_screen.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c
index 04d8e6f30d2..80ef7a12c44 100644
--- a/src/gallium/drivers/nouveau/nouveau_screen.c
+++ b/src/gallium/drivers/nouveau/nouveau_screen.c
@@ -275,6 +275,18 @@ nouveau_screen_init(struct nouveau_screen *screen, struct nouveau_device *dev)
} while ((start + screen->svm_cutout_size) < BITFIELD64_MASK(limit_bit));
}
+ switch (dev->chipset) {
+ case 0x0ea: /* TK1, GK20A */
+ case 0x12b: /* TX1, GM20B */
+ case 0x13b: /* TX2, GP10B */
+ screen->tegra_sector_layout = true;
+ break;
+ default:
+ /* Xavier's GPU and everything else */
+ screen->tegra_sector_layout = false;
+ break;
+ }
+
/*
* Set default VRAM domain if not overridden
*/
diff --git a/src/gallium/drivers/nouveau/nouveau_screen.h b/src/gallium/drivers/nouveau/nouveau_screen.h
index 2eb6320b2ec..1176c54db3d 100644
--- a/src/gallium/drivers/nouveau/nouveau_screen.h
+++ b/src/gallium/drivers/nouveau/nouveau_screen.h
@@ -58,6 +58,7 @@ struct nouveau_screen {
int64_t cpu_gpu_time_delta;
bool hint_buf_keep_sysmem_copy;
+ bool tegra_sector_layout;
unsigned vram_domain;