summaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2019-09-12 21:09:50 -0400
committerMarek Olšák <[email protected]>2019-10-09 17:12:19 -0400
commite26bd397a8fd818db3a72aef1d0e271fa24c3f7d (patch)
tree874f51ab9e4adb19ca886b6882f7f36bc549e709 /src/compiler
parente4f4bb8abd5f07ff25e3c594753ebc2553579f51 (diff)
nir: add shader_info::last_msaa_image
for radeonsi Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/nir/nir_gather_info.c6
-rw-r--r--src/compiler/shader_info.h2
2 files changed, 8 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c
index 3bf0d448356..9267db95b77 100644
--- a/src/compiler/nir/nir_gather_info.c
+++ b/src/compiler/nir/nir_gather_info.c
@@ -360,6 +360,7 @@ nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint)
{
shader->info.num_textures = 0;
shader->info.num_images = 0;
+ shader->info.last_msaa_image = -1;
nir_foreach_variable(var, &shader->uniforms) {
/* Bindless textures and images don't use non-bindless slots. */
if (var->data.bindless)
@@ -367,6 +368,11 @@ nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint)
shader->info.num_textures += glsl_type_get_sampler_count(var->type);
shader->info.num_images += glsl_type_get_image_count(var->type);
+
+ /* Assuming image slots don't have holes (e.g. OpenGL) */
+ if (glsl_type_is_image(var->type) &&
+ glsl_get_sampler_dim(var->type) == GLSL_SAMPLER_DIM_MS)
+ shader->info.last_msaa_image = shader->info.num_images - 1;
}
shader->info.inputs_read = 0;
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index 740b75b756a..1de583e6010 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -105,6 +105,8 @@ typedef struct shader_info {
unsigned num_ssbos;
/* Number of images used by this shader */
unsigned num_images;
+ /* Index of the last MSAA image. */
+ int last_msaa_image;
/* Which inputs are actually read */
uint64_t inputs_read;