From 2cf8c8461931c5b23cac4d9cf834f120150ff869 Mon Sep 17 00:00:00 2001 From: Nicolai Hähnle Date: Fri, 19 May 2017 22:42:12 +0200 Subject: st/glsl_to_nir: use nir_lower_samplers_as_deref when requested by the driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák --- src/mesa/state_tracker/st_glsl_to_nir.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index 5c4ae813055..c8a7464a008 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -317,6 +317,8 @@ sort_varyings(struct exec_list *var_list) void st_finalize_nir(struct st_context *st, struct gl_program *prog, nir_shader *nir) { + struct pipe_screen *screen = st->pipe->screen; + NIR_PASS_V(nir, nir_split_var_copies); NIR_PASS_V(nir, nir_lower_var_copies); NIR_PASS_V(nir, nir_lower_io_types); @@ -372,7 +374,10 @@ st_finalize_nir(struct st_context *st, struct gl_program *prog, nir_shader *nir) NIR_PASS_V(nir, nir_lower_system_values); NIR_PASS_V(nir, nir_lower_io, nir_var_all, st_glsl_type_size, (nir_lower_io_options)0); - NIR_PASS_V(nir, nir_lower_samplers, shader_program); + if (screen->get_param(screen, PIPE_CAP_NIR_SAMPLERS_AS_DEREF)) + NIR_PASS_V(nir, nir_lower_samplers_as_deref, shader_program); + else + NIR_PASS_V(nir, nir_lower_samplers, shader_program); } struct gl_program * -- cgit v1.2.3