From e291e05794d89a85f88b1753a90f2a2326867014 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Wed, 24 Aug 2022 19:39:54 +0200 Subject: [PATCH] nv50: fix code heap after pipe_shader_enum change Instead of keying the shader heaps with the TGSI enum, do it with our nv50 one, so we won't run into issues like this in the future. Fixes: 27f46465c7a ("gallium/tgsi: reorder pipe shader type defines.") Signed-off-by: Karol Herbst Part-of: --- src/gallium/drivers/nouveau/nv50/nv50_program.c | 4 ++-- src/gallium/drivers/nouveau/nv50/nv50_screen.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.c b/src/gallium/drivers/nouveau/nv50/nv50_program.c index e1f9d9fefbf..168a6879c1b 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_program.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.c @@ -506,10 +506,10 @@ nv50_program_upload_code(struct nv50_context *nv50, struct nv50_program *prog) if (prog->type == PIPE_SHADER_COMPUTE) { /* CP code must be uploaded in FP code segment. */ - prog_type = 1; + prog_type = NV50_SHADER_STAGE_FRAGMENT; } else { prog->code_base = prog->mem->start; - prog_type = prog->type; + prog_type = nv50_context_shader_stage(prog->type); } ret = nv50_tls_realloc(nv50->screen, prog->tls_space); diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c index 14db028dc3a..a8a7ce993fa 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c @@ -785,16 +785,16 @@ nv50_screen_init_hwctx(struct nv50_screen *screen) PUSH_DATA (push, 0x3f); BEGIN_NV04(push, NV50_3D(VP_ADDRESS_HIGH), 2); - PUSH_DATAh(push, screen->code->offset + (0 << NV50_CODE_BO_SIZE_LOG2)); - PUSH_DATA (push, screen->code->offset + (0 << NV50_CODE_BO_SIZE_LOG2)); + PUSH_DATAh(push, screen->code->offset + (NV50_SHADER_STAGE_VERTEX << NV50_CODE_BO_SIZE_LOG2)); + PUSH_DATA (push, screen->code->offset + (NV50_SHADER_STAGE_VERTEX << NV50_CODE_BO_SIZE_LOG2)); BEGIN_NV04(push, NV50_3D(FP_ADDRESS_HIGH), 2); - PUSH_DATAh(push, screen->code->offset + (1 << NV50_CODE_BO_SIZE_LOG2)); - PUSH_DATA (push, screen->code->offset + (1 << NV50_CODE_BO_SIZE_LOG2)); + PUSH_DATAh(push, screen->code->offset + (NV50_SHADER_STAGE_FRAGMENT << NV50_CODE_BO_SIZE_LOG2)); + PUSH_DATA (push, screen->code->offset + (NV50_SHADER_STAGE_FRAGMENT << NV50_CODE_BO_SIZE_LOG2)); BEGIN_NV04(push, NV50_3D(GP_ADDRESS_HIGH), 2); - PUSH_DATAh(push, screen->code->offset + (2 << NV50_CODE_BO_SIZE_LOG2)); - PUSH_DATA (push, screen->code->offset + (2 << NV50_CODE_BO_SIZE_LOG2)); + PUSH_DATAh(push, screen->code->offset + (NV50_SHADER_STAGE_GEOMETRY << NV50_CODE_BO_SIZE_LOG2)); + PUSH_DATA (push, screen->code->offset + (NV50_SHADER_STAGE_GEOMETRY << NV50_CODE_BO_SIZE_LOG2)); BEGIN_NV04(push, NV50_3D(LOCAL_ADDRESS_HIGH), 3); PUSH_DATAh(push, screen->tls_bo->offset);