From: Pavel Ondračka Date: Thu, 27 Oct 2022 19:26:03 +0000 (+0200) Subject: r300: increase maximum number of writemask combinations X-Git-Tag: upstream/23.3.3~17010 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=024a8d8bda945cbf6463ace2dcfaa9f0f092a9ff;p=platform%2Fupstream%2Fmesa.git r300: increase maximum number of writemask combinations We can have up to 6 in vertex shaders. Signed-off-by: Pavel Ondračka Reviewed-by: Filip Gawin Tested-by: Filip Gawin Part-of: --- diff --git a/src/gallium/drivers/r300/compiler/radeon_regalloc.c b/src/gallium/drivers/r300/compiler/radeon_regalloc.c index 270f27250dc..c13c10c47c6 100644 --- a/src/gallium/drivers/r300/compiler/radeon_regalloc.c +++ b/src/gallium/drivers/r300/compiler/radeon_regalloc.c @@ -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) diff --git a/src/gallium/drivers/r300/compiler/radeon_regalloc.h b/src/gallium/drivers/r300/compiler/radeon_regalloc.h index bc082e96588..c7874a51ea6 100644 --- a/src/gallium/drivers/r300/compiler/radeon_regalloc.h +++ b/src/gallium/drivers/r300/compiler/radeon_regalloc.h @@ -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(