summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-05-10 13:54:58 -0700
committerJason Ekstrand <[email protected]>2016-05-10 15:25:30 -0700
commit203c786a73847fb07d805c4cc799b7c7d028695c (patch)
tree0d07ef67e8c9e922fb0c14eddaa9282bc22241a9
parentd36d11ad907c93407d1e984ab0931337936a4a37 (diff)
i965/fs: Default all constants to a location of -1
Otherwise constants which aren't live get an undefined constant location. When we go to set up param and pull_param we end up assigning all unused uniforms to slot 0. This cases the Vulkan driver to segfault because it doesn't have pull_param. This fixes bugs in the Vulkan driver introduced in c3fab3d000. Reviewed-by: Mark Janes <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index b479684fc67..2a542b8e510 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -2138,6 +2138,10 @@ fs_visitor::assign_constant_locations()
push_constant_loc = ralloc_array(mem_ctx, int, uniforms);
pull_constant_loc = ralloc_array(mem_ctx, int, uniforms);
+ /* Default to -1 meaning no location */
+ memset(push_constant_loc, -1, uniforms * sizeof(*push_constant_loc));
+ memset(pull_constant_loc, -1, uniforms * sizeof(*pull_constant_loc));
+
int chunk_start = -1;
/* First push 64-bit uniforms to ensure they are properly aligned */
@@ -2145,9 +2149,6 @@ fs_visitor::assign_constant_locations()
if (!is_live[u] || !is_live_64bit[u])
continue;
- pull_constant_loc[u] = -1;
- push_constant_loc[u] = -1;
-
set_push_pull_constant_loc(u, &chunk_start, contiguous[u],
push_constant_loc, pull_constant_loc,
&num_push_constants, &num_pull_constants,
@@ -2161,9 +2162,6 @@ fs_visitor::assign_constant_locations()
if (!is_live[u] || is_live_64bit[u])
continue;
- pull_constant_loc[u] = -1;
- push_constant_loc[u] = -1;
-
set_push_pull_constant_loc(u, &chunk_start, contiguous[u],
push_constant_loc, pull_constant_loc,
&num_push_constants, &num_pull_constants,