From ae14362ff6b1ec48fb53638730432e06519c7ed8 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Sun, 11 Sep 2022 00:38:34 +0200 Subject: [PATCH] nvk: wire up M2MF for Fermi Signed-off-by: Karol Herbst Part-of: --- src/nouveau/nvidia-headers/meson.build | 1 + src/nouveau/nvidia-headers/nv_push.h | 2 ++ src/nouveau/vulkan/nvk_cmd_draw.c | 12 ++++++++++++ 3 files changed, 15 insertions(+) diff --git a/src/nouveau/nvidia-headers/meson.build b/src/nouveau/nvidia-headers/meson.build index 1e71c446d1e..69ac0fff129 100644 --- a/src/nouveau/nvidia-headers/meson.build +++ b/src/nouveau/nvidia-headers/meson.build @@ -1,5 +1,6 @@ nvk_classes = [ 'cl902d', + 'cl9039', 'cl906f', 'cl9097', 'cl90b5', diff --git a/src/nouveau/nvidia-headers/nv_push.h b/src/nouveau/nvidia-headers/nv_push.h index 698cff67962..a17015cedaa 100644 --- a/src/nouveau/nvidia-headers/nv_push.h +++ b/src/nouveau/nvidia-headers/nv_push.h @@ -58,6 +58,8 @@ void vk_push_print(FILE *fp, const struct nv_push *push, #define SUBC_NVC0C0 1 #define SUBC_NVC3C0 1 +#define SUBC_NV9039 2 + #define SUBC_NV902D 3 #define SUBC_NV90B5 4 diff --git a/src/nouveau/vulkan/nvk_cmd_draw.c b/src/nouveau/vulkan/nvk_cmd_draw.c index 272902700af..3d0d5a8b522 100644 --- a/src/nouveau/vulkan/nvk_cmd_draw.c +++ b/src/nouveau/vulkan/nvk_cmd_draw.c @@ -16,6 +16,7 @@ #include "nouveau_context.h" #include "nvk_cl902d.h" +#include "nvk_cl9039.h" #include "nvk_cl90c0.h" #include "nvk_clb0c0.h" @@ -43,6 +44,17 @@ nvk_queue_init_context_draw_state(struct nvk_queue *queue) nv_push_init(&push, push_data, ARRAY_SIZE(push_data)); struct nv_push *p = &push; + /* M2MF state */ + if (dev->ctx->m2mf.cls <= FERMI_MEMORY_TO_MEMORY_FORMAT_A) { + /* we absolutely do not support Fermi, but if somebody wants to toy + /* around with it, this is a must */ + P_MTHD(p, NV9039, SET_OBJECT); + P_NV9039_SET_OBJECT(p, { + .class_id = dev->ctx->m2mf.cls, + .engine_id = 0, + }); + } + /* 2D state */ P_MTHD(p, NV902D, SET_OBJECT); P_NV902D_SET_OBJECT(p, {