aco: combine MRTZ (depth, stencil, sample mask) exports

Instead of emitting up to 3 for each different components (depth,
stencil and sample mask). This is needed to fix a hw bug on GFX6.

Totals from affected shaders:
SGPRS: 34728 -> 35056 (0.94 %)
VGPRS: 26440 -> 26476 (0.14 %)
Spilled SGPRs: 0 -> 0 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 0 -> 0 (0.00 %) dwords per thread
Code Size: 1346088 -> 1344180 (-0.14 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 3922 -> 3915 (-0.18 %)
Wait states: 0 -> 0 (0.00 %)

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3538>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3538>
This commit is contained in:
Samuel Pitoiset
2020-01-23 17:50:25 +01:00
committed by Marge Bot
parent c787b8d2a1
commit 918f00eef8
2 changed files with 262 additions and 283 deletions
@@ -39,7 +39,7 @@
namespace aco {
struct ge_output_state {
struct output_state {
uint8_t mask[VARYING_SLOT_VAR31 + 1];
Temp outputs[VARYING_SLOT_VAR31 + 1][4];
};
@@ -89,8 +89,8 @@ struct isel_context {
unsigned num_clip_distances;
unsigned num_cull_distances;
/* VS or GS output information */
ge_output_state vsgs_output;
/* VS, FS or GS output information */
output_state outputs;
};
Temp get_arg(isel_context *ctx, struct ac_arg arg)