diff options
author | Kenneth Graunke <[email protected]> | 2019-05-15 13:58:33 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2019-05-16 11:54:07 -0700 |
commit | 4b5e8eb3c8d709bd7c6d1a33a114bf4b002548f8 (patch) | |
tree | 94b040c78341d8be3dc26be3b6f8ee5af28359c4 /src/mesa/state_tracker | |
parent | 8a995f2b5e1e3f2a2eafd32870ebfb43b5cfdf27 (diff) |
st/mesa: Record samplers for extra planes in info->textures_used.
Normally gl_nir_lower_samplers_as_deref records info->textures_used
for us, but this pass runs after that, attempting to assign samplers
in the same order as st_atom_texture's external_samplers_used loop
so the stars align and we get the same locations.
Since we're adding textures late, we need to amend info->textures_used.
iris uses info->textures_used to set up texture bindings; this fixes
Piglit's ext_image_dma_buf_import-sample-{nv12,yuv420,yvu420} there.
Reviewed-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r-- | src/mesa/state_tracker/st_nir_lower_tex_src_plane.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_nir_lower_tex_src_plane.c b/src/mesa/state_tracker/st_nir_lower_tex_src_plane.c index 2849e569f01..609a9aa4bc7 100644 --- a/src/mesa/state_tracker/st_nir_lower_tex_src_plane.c +++ b/src/mesa/state_tracker/st_nir_lower_tex_src_plane.c @@ -33,6 +33,8 @@ #include "st_nir.h" typedef struct { + struct shader_info *info; + unsigned lower_2plane; unsigned lower_3plane; @@ -85,6 +87,8 @@ lower_tex_src_plane_block(lower_tex_src_state *state, nir_block *block) tex->texture_index = tex->sampler_index = state->sampler_map[y_samp][plane[0].i32 - 1]; + + state->info->textures_used |= 1u << tex->texture_index; } nir_tex_instr_remove_src(tex, plane_index); @@ -108,6 +112,7 @@ st_nir_lower_tex_src_plane(struct nir_shader *shader, unsigned free_slots, { lower_tex_src_state state = {0}; + state.info = &shader->info; state.lower_2plane = lower_2plane; state.lower_3plane = lower_3plane; |