From 8cf878c4d09a2173dc588930deefba24fe4e3c92 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Tue, 25 Oct 2022 17:42:12 +0200 Subject: [PATCH] r600/sfn: evaluate LDS location for color and clip-vertex too This is required to support compatibility contexts Related: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6926 Fixes: 3340c7ce359252ad09b3e4d338837944482fb248 r600/sfn: lower CLIPVERTEX to clip planes Signed-off-by: Gert Wollny Part-of: (cherry picked from commit 1fe408e82fce04d8e2c86d5fd7321a4ca6afc8a8) --- .pick_status.json | 2 +- .../drivers/r600/sfn/sfn_nir_lower_tess_io.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 60c954637b0..f32a645b9fe 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -292,7 +292,7 @@ "description": "r600/sfn: evaluate LDS location for color and clip-vertex too", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "3340c7ce359252ad09b3e4d338837944482fb248" }, diff --git a/src/gallium/drivers/r600/sfn/sfn_nir_lower_tess_io.cpp b/src/gallium/drivers/r600/sfn/sfn_nir_lower_tess_io.cpp index 39cb3465098..e712ef710a7 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir_lower_tess_io.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir_lower_tess_io.cpp @@ -74,6 +74,16 @@ static int get_tcs_varying_offset(nir_intrinsic_instr *op) return 0x20; case VARYING_SLOT_CLIP_DIST1: return 0x30; + case VARYING_SLOT_COL0: + return 0x40; + case VARYING_SLOT_COL1: + return 0x50; + case VARYING_SLOT_BFC0: + return 0x60; + case VARYING_SLOT_BFC1: + return 0x70; + case VARYING_SLOT_CLIP_VERTEX: + return 0x80; case VARYING_SLOT_TESS_LEVEL_OUTER: return 0; case VARYING_SLOT_TESS_LEVEL_INNER: @@ -81,7 +91,7 @@ static int get_tcs_varying_offset(nir_intrinsic_instr *op) default: if (location >= VARYING_SLOT_VAR0 && location <= VARYING_SLOT_VAR31) - return 0x10 * (location - VARYING_SLOT_VAR0) + 0x40; + return 0x10 * (location - VARYING_SLOT_VAR0) + 0x90; if (location >= VARYING_SLOT_PATCH0) { return 0x10 * (location - VARYING_SLOT_PATCH0) + 0x20;