radv/aco: use ACO for GS copy shaders
authorRhys Perry <pendingchaos02@gmail.com>
Fri, 15 Nov 2019 12:42:46 +0000 (12:42 +0000)
committerMarge Bot <eric+marge@anholt.net>
Fri, 24 Jan 2020 13:35:07 +0000 (13:35 +0000)
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2421>

src/amd/vulkan/radv_pipeline.c
src/amd/vulkan/radv_shader.c
src/amd/vulkan/radv_shader.h

index 71ffa1b47eca129e87a23780cef3d15aaf28e52b..62244902a47e2b85ac7dd7f5ef7511d3edd49886 100644 (file)
@@ -2881,7 +2881,8 @@ void radv_create_shaders(struct radv_pipeline *pipeline,
                        pipeline->gs_copy_shader = radv_create_gs_copy_shader(
                                        device, nir[MESA_SHADER_GEOMETRY], &info,
                                        &gs_copy_binary, keep_executable_info,
-                                       keys[MESA_SHADER_GEOMETRY].has_multiview_view_index);
+                                       keys[MESA_SHADER_GEOMETRY].has_multiview_view_index,
+                                       use_aco);
                }
 
                if (!keep_executable_info && pipeline->gs_copy_shader) {
index 7eea501fbd30403140e78776215dc2dee55954c2..dc9b91ff922fbe42c0f6f71ed2704dcd11b2aefb 100644 (file)
@@ -1214,14 +1214,15 @@ radv_create_gs_copy_shader(struct radv_device *device,
                           struct radv_shader_info *info,
                           struct radv_shader_binary **binary_out,
                           bool keep_shader_info,
-                          bool multiview)
+                          bool multiview, bool use_aco)
 {
        struct radv_nir_compiler_options options = {0};
 
+       options.explicit_scratch_args = use_aco;
        options.key.has_multiview_view_index = multiview;
 
        return shader_variant_compile(device, NULL, &shader, 1, MESA_SHADER_VERTEX,
-                                     info, &options, true, keep_shader_info, false, binary_out);
+                                     info, &options, true, keep_shader_info, use_aco, binary_out);
 }
 
 void
index 9544f17d4618d2a0d224e75ee2a6b74acc5584ea..3001f494cef435afc71490e1646fe52614ca90a4 100644 (file)
@@ -442,7 +442,8 @@ struct radv_shader_variant *
 radv_create_gs_copy_shader(struct radv_device *device, struct nir_shader *nir,
                           struct radv_shader_info *info,
                           struct radv_shader_binary **binary_out,
-                          bool multiview,  bool keep_shader_info);
+                          bool multiview,  bool keep_shader_info,
+                          bool use_aco);
 
 void
 radv_shader_variant_destroy(struct radv_device *device,