mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 03:50:13 +01:00
radeonsi: reorder shader IO indices for better IO space usage for tess and GS
The highest used index determines the stride for shader outputs in shaders that use LDS or memory for outputs. Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Acked-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
1c99a13f89
commit
4002913f8d
1 changed files with 22 additions and 18 deletions
|
|
@ -188,35 +188,39 @@ unsigned si_shader_io_get_unique_index(unsigned semantic_name, unsigned index,
|
|||
|
||||
assert(!"invalid generic index");
|
||||
return 0;
|
||||
case TGSI_SEMANTIC_PSIZE:
|
||||
return SI_MAX_IO_GENERIC + 1;
|
||||
case TGSI_SEMANTIC_CLIPDIST:
|
||||
assert(index <= 1);
|
||||
return SI_MAX_IO_GENERIC + 2 + index;
|
||||
case TGSI_SEMANTIC_FOG:
|
||||
return SI_MAX_IO_GENERIC + 4;
|
||||
case TGSI_SEMANTIC_LAYER:
|
||||
return SI_MAX_IO_GENERIC + 5;
|
||||
case TGSI_SEMANTIC_VIEWPORT_INDEX:
|
||||
return SI_MAX_IO_GENERIC + 6;
|
||||
case TGSI_SEMANTIC_PRIMID:
|
||||
return SI_MAX_IO_GENERIC + 7;
|
||||
return SI_MAX_IO_GENERIC + 1;
|
||||
case TGSI_SEMANTIC_COLOR:
|
||||
assert(index < 2);
|
||||
return SI_MAX_IO_GENERIC + 8 + index;
|
||||
return SI_MAX_IO_GENERIC + 2 + index;
|
||||
case TGSI_SEMANTIC_BCOLOR:
|
||||
assert(index < 2);
|
||||
/* If it's a varying, COLOR and BCOLOR alias. */
|
||||
if (is_varying)
|
||||
return SI_MAX_IO_GENERIC + 8 + index;
|
||||
return SI_MAX_IO_GENERIC + 2 + index;
|
||||
else
|
||||
return SI_MAX_IO_GENERIC + 10 + index;
|
||||
return SI_MAX_IO_GENERIC + 4 + index;
|
||||
case TGSI_SEMANTIC_TEXCOORD:
|
||||
assert(index < 8);
|
||||
return SI_MAX_IO_GENERIC + 12 + index;
|
||||
return SI_MAX_IO_GENERIC + 6 + index;
|
||||
|
||||
/* These are rarely used between LS and HS or ES and GS. */
|
||||
case TGSI_SEMANTIC_CLIPDIST:
|
||||
assert(index < 2);
|
||||
return SI_MAX_IO_GENERIC + 6 + 8 + index;
|
||||
case TGSI_SEMANTIC_CLIPVERTEX:
|
||||
STATIC_ASSERT(SI_MAX_IO_GENERIC + 12 + 8 <= 63);
|
||||
return SI_MAX_IO_GENERIC + 12 + 8;
|
||||
return SI_MAX_IO_GENERIC + 6 + 8 + 2;
|
||||
case TGSI_SEMANTIC_PSIZE:
|
||||
return SI_MAX_IO_GENERIC + 6 + 8 + 3;
|
||||
|
||||
/* These can't be written by LS, HS, and ES. */
|
||||
case TGSI_SEMANTIC_LAYER:
|
||||
return SI_MAX_IO_GENERIC + 6 + 8 + 4;
|
||||
case TGSI_SEMANTIC_VIEWPORT_INDEX:
|
||||
return SI_MAX_IO_GENERIC + 6 + 8 + 5;
|
||||
case TGSI_SEMANTIC_PRIMID:
|
||||
STATIC_ASSERT(SI_MAX_IO_GENERIC + 6 + 8 + 6 <= 63);
|
||||
return SI_MAX_IO_GENERIC + 6 + 8 + 6;
|
||||
default:
|
||||
fprintf(stderr, "invalid semantic name = %u\n", semantic_name);
|
||||
assert(!"invalid semantic name");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue