radv: Use correct vgpr_comp_cnt for VS if both prim_id and instance_id are needed.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tue, 20 Aug 2019 23:50:53 +0000 (01:50 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 21 Aug 2019 09:38:46 +0000 (09:38 +0000)
Should take the max of the 2.

Fixes: ea337c8b7e9 "radv/gfx10: fix VS input VGPRs with the legacy path"
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_shader.c

index 1e6a9a950d8e57d8791a7d75b1185134228fb796..cb819388fa4d9b3f7cb562287115aecb5f41b5bf 100644 (file)
@@ -809,10 +809,12 @@ static void radv_postprocess_config(const struct radv_physical_device *pdevice,
                         * If PrimID is disabled. InstanceID / StepRate1 is loaded instead.
                         * StepRate0 is set to 1. so that VGPR3 doesn't have to be loaded.
                         */
-                       if (info->vs.export_prim_id) {
+                       if (info->info.vs.needs_instance_id && pdevice->rad_info.chip_class >= GFX10) {
+                               vgpr_comp_cnt = 3;
+                       } else if (info->vs.export_prim_id) {
                                vgpr_comp_cnt = 2;
                        } else if (info->info.vs.needs_instance_id) {
-                               vgpr_comp_cnt = pdevice->rad_info.chip_class >= GFX10 ? 3 : 1;
+                               vgpr_comp_cnt = 1;
                        } else {
                                vgpr_comp_cnt = 0;
                        }