r300: increase maximum number of writemask combinations

We can have up to 6 in vertex shaders.

Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reviewed-by: Filip Gawin <filip@gawin.net>
Tested-by: Filip Gawin <filip@gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19618>
This commit is contained in:
Pavel Ondračka 2022-10-27 21:26:03 +02:00 committed by Marge Bot
parent 240365a293
commit 024a8d8bda
2 changed files with 88 additions and 31 deletions

View file

@ -37,79 +37,136 @@ const struct rc_class rc_class_list [] = {
{RC_REG_CLASS_SINGLE, 3,
{RC_MASK_X,
RC_MASK_Y,
RC_MASK_Z}},
RC_MASK_Z,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_DOUBLE, 3,
{RC_MASK_X | RC_MASK_Y,
RC_MASK_X | RC_MASK_Z,
RC_MASK_Y | RC_MASK_Z}},
RC_MASK_Y | RC_MASK_Z,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_TRIPLE, 1,
{RC_MASK_X | RC_MASK_Y | RC_MASK_Z,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_ALPHA, 1,
{RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_SINGLE_PLUS_ALPHA, 3,
{RC_MASK_X | RC_MASK_W,
RC_MASK_Y | RC_MASK_W,
RC_MASK_Z | RC_MASK_W}},
RC_MASK_Z | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_DOUBLE_PLUS_ALPHA, 3,
{RC_MASK_X | RC_MASK_Y | RC_MASK_W,
RC_MASK_X | RC_MASK_Z | RC_MASK_W,
RC_MASK_Y | RC_MASK_Z | RC_MASK_W}},
RC_MASK_Y | RC_MASK_Z | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_TRIPLE_PLUS_ALPHA, 1,
{RC_MASK_X | RC_MASK_Y | RC_MASK_Z | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_X, 1,
{RC_MASK_X,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_Y, 1,
{RC_MASK_Y,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_Z, 1,
{RC_MASK_Z,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_XY, 1,
{RC_MASK_X | RC_MASK_Y,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_YZ, 1,
{RC_MASK_Y | RC_MASK_Z,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_XZ, 1,
{RC_MASK_X | RC_MASK_Z,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_XW, 1,
{RC_MASK_X | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_YW, 1,
{RC_MASK_Y | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_ZW, 1,
{RC_MASK_Z | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_XYW, 1,
{RC_MASK_X | RC_MASK_Y | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_YZW, 1,
{RC_MASK_Y | RC_MASK_Z | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE}},
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}},
{RC_REG_CLASS_XZW, 1,
{RC_MASK_X | RC_MASK_Z | RC_MASK_W,
RC_MASK_NONE,
RC_MASK_NONE}}
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE,
RC_MASK_NONE}}
};
static void print_live_intervals(struct live_intervals * src)

View file

@ -94,7 +94,7 @@ struct rc_class {
unsigned int WritemaskCount;
/** List of writemasks that belong to this class */
unsigned int Writemasks[3];
unsigned int Writemasks[6];
};
int rc_find_class(