summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason@jlekstrand.net>2019-11-18 15:40:09 -0600
committerJason Ekstrand <jason@jlekstrand.net>2019-12-04 04:52:20 +0000
commit0604768ae40695de97eadcca9cf2e37e0865bdeb (patch)
treeb8fab2652b3a47e5a10608c13fe7ed37102a74dd
parent713636766d092dea7f5648ab40f990c47152e405 (diff)
downloadmesa-0604768ae40695de97eadcca9cf2e37e0865bdeb.tar.gz
iris: Stop setting up fake params
In d1c4e64a69e, we added a parameter to tell the back-end compiler to ignore the param array and just push however many constants you ask it to push. Iris doesn't want to push anything so it gives a bogus number of parameters and trusts the back-end compiler to dead-code all of them. Now that we can tell the back-end compiler to stop re-arranging things, delete the hack and enable the new simpler code path. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--src/gallium/drivers/iris/iris_program.c17
-rw-r--r--src/gallium/drivers/iris/iris_screen.c2
2 files changed, 6 insertions, 13 deletions
diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c
index f2269a4a147..21b07cde299 100644
--- a/src/gallium/drivers/iris/iris_program.c
+++ b/src/gallium/drivers/iris/iris_program.c
@@ -308,13 +308,6 @@ iris_setup_uniforms(const struct brw_compiler *compiler,
{
UNUSED const struct gen_device_info *devinfo = compiler->devinfo;
- /* The intel compiler assumes that num_uniforms is in bytes. For
- * scalar that means 4 bytes per uniform slot.
- *
- * Ref: brw_nir_lower_uniforms, type_size_scalar_bytes.
- */
- nir->num_uniforms *= 4;
-
const unsigned IRIS_MAX_SYSTEM_VALUES =
PIPE_MAX_SHADER_IMAGES * BRW_IMAGE_PARAM_SIZE;
enum brw_param_builtin *system_values =
@@ -513,12 +506,12 @@ iris_setup_uniforms(const struct brw_compiler *compiler,
assert(num_cbufs < PIPE_MAX_CONSTANT_BUFFERS);
nir_validate_shader(nir, "after remap");
- /* We don't use params[], but fs_visitor::nir_setup_uniforms() asserts
- * about it for compute shaders, so go ahead and make some fake ones
- * which the backend will dead code eliminate.
+ /* We don't use params[] but gallium leaves num_uniforms set. We use this
+ * to detect when cbuf0 exists but we don't need it anymore when we get
+ * here. Instead, zero it out so that the back-end doesn't get confused
+ * when nr_params * 4 != num_uniforms != nr_params * 4.
*/
- prog_data->nr_params = nir->num_uniforms / 4;
- prog_data->param = rzalloc_array(mem_ctx, uint32_t, prog_data->nr_params);
+ nir->num_uniforms = 0;
/* Constant loads (if any) need to go at the end of the constant buffers so
* we need to know num_cbufs before we can lower to them.
diff --git a/src/gallium/drivers/iris/iris_screen.c b/src/gallium/drivers/iris/iris_screen.c
index 7516e457b28..cbefa9dfb13 100644
--- a/src/gallium/drivers/iris/iris_screen.c
+++ b/src/gallium/drivers/iris/iris_screen.c
@@ -673,7 +673,7 @@ iris_screen_create(int fd, const struct pipe_screen_config *config)
screen->compiler->shader_perf_log = iris_shader_perf_log;
screen->compiler->supports_pull_constants = false;
screen->compiler->supports_shader_constants = true;
- screen->compiler->compact_params = true;
+ screen->compiler->compact_params = false;
iris_disk_cache_init(screen);