n50/compute: submit initial compute state in nv50_screen_create

This fixes some CACHE_ERROR caused by proper multi-threading support. The
bug is a bit older though, just never triggered because there was only one
push buffer to begin with.

Without this change the compute initialization stayed unpushed in the
screen push buffer causing random issues.

Fixes: ff72440b40 ("nv50: implement a basic compute support")
Signed-off-by: Karol Herbst <git@karolherbst.de>
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24496>
(cherry picked from commit a9a30a7e09)
This commit is contained in:
Karol Herbst 2023-08-04 16:56:23 +02:00 committed by Dylan Baker
parent 2cbed72bca
commit 3b87165497
2 changed files with 4 additions and 3 deletions

View file

@ -19464,7 +19464,7 @@
"description": "n50/compute: submit initial compute state in nv50_screen_create",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "ff72440b40211326eda118232fabd53965410afd",
"notes": null

View file

@ -787,8 +787,6 @@ nv50_screen_init_hwctx(struct nv50_screen *screen)
PUSH_DATA (push, 1);
BEGIN_NV04(push, NV50_3D(UNK19C0), 1);
PUSH_DATA (push, 1);
PUSH_KICK (push);
}
static int nv50_tls_alloc(struct nv50_screen *screen, unsigned tls_space,
@ -1071,6 +1069,9 @@ nv50_screen_create(struct nouveau_device *dev)
goto fail;
}
// submit all initial state
PUSH_KICK(screen->base.pushbuf);
return &screen->base;
fail: