OSDN Git Service

radv: Fix using more than 4 bound descriptor sets
authorJames Legg <jlegg@feralinteractive.com>
Thu, 16 Mar 2017 17:48:13 +0000 (17:48 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 17 Mar 2017 17:08:26 +0000 (17:08 +0000)
Avoid a buffer overflow in ac_nir_to_llvm.c's create_function when
using more than 4 descriptor sets. radv claims support for 8.

Cc: 17.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
(cherry picked from commit e88cac1df03d01a9e8a1de1a4a2ee888149e727a)

src/amd/common/ac_nir_to_llvm.h

index a57558e..2fc3efd 100644 (file)
@@ -27,6 +27,7 @@
 #include "llvm-c/Core.h"
 #include "llvm-c/TargetMachine.h"
 #include "amd_family.h"
+#include "../vulkan/radv_descriptor_set.h"
 
 struct ac_shader_binary;
 struct ac_shader_config;
@@ -76,7 +77,8 @@ enum ac_ud_index {
        AC_UD_MAX_UD = AC_UD_VS_MAX_UD,
 };
 
-#define AC_UD_MAX_SETS 4
+// Match MAX_SETS from radv_descriptor_set.h
+#define AC_UD_MAX_SETS MAX_SETS
 
 struct ac_userdata_locations {
        struct ac_userdata_info descriptor_sets[AC_UD_MAX_SETS];