diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index eea0f866134..62975cef5a7 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -915,6 +915,14 @@ panfrost_upload_sample_positions_sysval(struct panfrost_batch *batch, uniform->du[0] = panfrost_sample_positions(dev, panfrost_sample_pattern(samples)); } +static void +panfrost_upload_multisampled_sysval(struct panfrost_batch *batch, + struct sysval_uniform *uniform) +{ + unsigned samples = util_framebuffer_get_num_samples(&batch->key); + uniform->u[0] = samples > 1; +} + static void panfrost_upload_sysvals(struct panfrost_batch *batch, void *buf, struct panfrost_shader_state *ss, @@ -970,7 +978,10 @@ panfrost_upload_sysvals(struct panfrost_batch *batch, void *buf, panfrost_upload_sample_positions_sysval(batch, &uniforms[i]); break; - + case PAN_SYSVAL_MULTISAMPLED: + panfrost_upload_multisampled_sysval(batch, + &uniforms[i]); + break; default: assert(0); } diff --git a/src/panfrost/util/pan_ir.h b/src/panfrost/util/pan_ir.h index c6e1bcf7d12..6f7283df3b8 100644 --- a/src/panfrost/util/pan_ir.h +++ b/src/panfrost/util/pan_ir.h @@ -54,6 +54,7 @@ enum { PAN_SYSVAL_WORK_DIM = 9, PAN_SYSVAL_IMAGE_SIZE = 10, PAN_SYSVAL_SAMPLE_POSITIONS = 11, + PAN_SYSVAL_MULTISAMPLED = 12, }; #define PAN_TXS_SYSVAL_ID(texidx, dim, is_array) \