freedreno/ir3: Add more tess varying slots

Fixes some piglits that I stumbled across by mistake.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17341>
This commit is contained in:
Rob Clark 2022-07-01 17:32:53 -07:00 committed by Marge Bot
parent ff22be1110
commit f2d9805f9b
3 changed files with 27 additions and 77 deletions

View File

@ -52,7 +52,6 @@ glx@glx-multi-window-single-context,Fail
glx@glx-swap-pixmap-bad,Fail
glx@glx-visuals-depth -pixmap,Crash
glx@glx-visuals-stencil -pixmap,Crash
shaders@glsl-fs-fogscale,Fail
# "../src/freedreno/ir3/ir3_shader.h:968:ir3_link_add: Assertion `i < ARRAY_SIZE(l->var)' failed."
shaders@glsl-max-varyings >max_varying_components,Crash
@ -311,15 +310,6 @@ spec@glsl-1.50@execution@compatibility@clipping@vs-gs-clip-vertex-equal-to-posit
spec@glsl-1.50@execution@compatibility@clipping@vs-gs-clip-vertex-homogeneity,Crash
spec@glsl-1.50@execution@compatibility@clipping@vs-gs-clip-vertex-primitives-triangle-strip,Crash
spec@glsl-1.50@execution@compatibility@gs-clamp-vertex-color,Fail
spec@glsl-1.50@execution@compatibility@gs-ff-frag,Fail
spec@glsl-1.50@execution@compatibility@gs-texcoord-array-2,Fail
spec@glsl-1.50@execution@compatibility@gs-texcoord-array,Fail
# "ir3_nir_lower_tess.c:111: shader_io_get_unique_index: Assertion `!"illegal slot in get unique index\n"' failed."
# I think on VARYING_SLOT_COL0 from the VS.
spec@glsl-1.50@execution@compatibility@vs-gs-ff-frag,Crash
spec@glsl-1.50@execution@compatibility@vs-gs-texcoord-array-2,Crash
spec@glsl-1.50@execution@compatibility@vs-gs-texcoord-array,Crash
@ -457,56 +447,6 @@ spec@!opengl 1.4@gl-1.4-polygon-offset,Fail
spec@!opengl 2.0@gl-2.0-edgeflag,Crash
spec@!opengl 2.0@gl-2.0-edgeflag-immediate,Crash
# "src/freedreno/ir3/ir3_nir_lower_tess.c:111: shader_io_get_unique_index: Assertion `!"illegal slot in get unique index\n"'"
spec@!opengl 2.0@vertex-program-two-side back back2,Crash
spec@!opengl 2.0@vertex-program-two-side back front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side back front2,Fail
spec@!opengl 2.0@vertex-program-two-side back,Crash
spec@!opengl 2.0@vertex-program-two-side back2,Crash
spec@!opengl 2.0@vertex-program-two-side enabled back back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled back front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled back front2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled back,Fail
spec@!opengl 2.0@vertex-program-two-side enabled back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front back back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front back front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front back front2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front back,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front back@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front front2 back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front front2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front front2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front2 back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front2,Fail
spec@!opengl 2.0@vertex-program-two-side enabled front2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front back back2,Fail
spec@!opengl 2.0@vertex-program-two-side front back back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front back front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side front back front2 back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front back front2,Fail
spec@!opengl 2.0@vertex-program-two-side front back front2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front back,Fail
spec@!opengl 2.0@vertex-program-two-side front back@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front back2,Fail
spec@!opengl 2.0@vertex-program-two-side front back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side front front2 back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front front2,Fail
spec@!opengl 2.0@vertex-program-two-side front front2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front,Fail
spec@!opengl 2.0@vertex-program-two-side front@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front2 back2,Fail
spec@!opengl 2.0@vertex-program-two-side front2 back2@gs-out and fs,Fail
spec@!opengl 2.0@vertex-program-two-side front2,Fail
spec@!opengl 2.0@vertex-program-two-side front2@gs-out and fs,Fail
spec@!opengl 2.1@pbo,Fail
spec@!opengl 2.1@pbo@test_polygon_stip,Fail
spec@!opengl 2.1@polygon-stipple-fs,Fail

View File

@ -30,7 +30,7 @@ struct state {
struct primitive_map {
/* +POSITION, +PSIZE, ... - see shader_io_get_unique_index */
unsigned loc[32 + 6];
unsigned loc[32 + 11];
unsigned stride;
} map;
@ -99,21 +99,31 @@ is_tess_levels(gl_varying_slot slot)
static unsigned
shader_io_get_unique_index(gl_varying_slot slot)
{
if (slot == VARYING_SLOT_POS)
return 0;
if (slot == VARYING_SLOT_PSIZ)
return 1;
if (slot == VARYING_SLOT_CLIP_DIST0)
return 2;
if (slot == VARYING_SLOT_CLIP_DIST1)
return 3;
if (slot == VARYING_SLOT_VIEWPORT)
return 4;
if (slot == VARYING_SLOT_LAYER)
return 5;
if (slot >= VARYING_SLOT_VAR0 && slot <= VARYING_SLOT_VAR31)
return 6 + (slot - VARYING_SLOT_VAR0);
unreachable("illegal slot in get unique index\n");
switch (slot) {
case VARYING_SLOT_POS: return 0;
case VARYING_SLOT_PSIZ: return 1;
case VARYING_SLOT_COL0: return 2;
case VARYING_SLOT_COL1: return 3;
case VARYING_SLOT_BFC0: return 4;
case VARYING_SLOT_BFC1: return 5;
case VARYING_SLOT_FOGC: return 6;
case VARYING_SLOT_CLIP_DIST0: return 7;
case VARYING_SLOT_CLIP_DIST1: return 8;
case VARYING_SLOT_CLIP_VERTEX: return 9;
case VARYING_SLOT_LAYER: return 10;
case VARYING_SLOT_VIEWPORT: return 11;
case VARYING_SLOT_VAR0 ... VARYING_SLOT_VAR31: {
struct state state = {};
STATIC_ASSERT(ARRAY_SIZE(state.map.loc) ==
(12 + VARYING_SLOT_VAR31 - VARYING_SLOT_VAR0));
struct ir3_shader_variant v = {};
STATIC_ASSERT(ARRAY_SIZE(v.output_loc) ==
(12 + VARYING_SLOT_VAR31 - VARYING_SLOT_VAR0));
return 12 + (slot - VARYING_SLOT_VAR0);
}
default:
unreachable("illegal slot in get unique index\n");
}
}
static nir_ssa_def *

View File

@ -627,7 +627,7 @@ struct ir3_shader_variant {
* offset, and in bytes for all other stages.
* +POSITION, +PSIZE, ... - see shader_io_get_unique_index
*/
unsigned output_loc[32 + 6];
unsigned output_loc[32 + 11];
/* attributes (VS) / varyings (FS):
* Note that sysval's should come *after* normal inputs.